SQL Server-Überwachung über Telegraf in NetCrunch
Dieses Thema erklärt, wie Telegraf für die Erfassung von Microsoft SQL Server-Metriken und deren Weiterleitung an einen NetCrunch Telemetry Node-Endpunkt mithilfe JSON-basierter Telemetriedaten konfiguriert wird. Es behandelt die Einrichtung des SQL Server-Logins, Verbindungszeichenfolgen, die Telegraf-Eingabekonfiguration und unterstützte Metriktypen.
Übersicht
Telegraf erfasst SQL Server-Metriken über das SQL Server input plugin. Dieses Plugin verwendet von SQL Server bereitgestellte Dynamic Management Views, um Performance-Metriken zu sammeln. Die erfassten Metriken werden über das HTTP output plugin an einen NetCrunch Telemetry Node gesendet.
Unterstützte Umgebungen:
- SQL Server On-Premises
- Azure SQL Database
- Azure SQL Managed Instance
- Azure SQL Elastic Pool
- Mehrere SQL Server-Instanzen auf einem Host
So unterstützt NetCrunch SQL Server-Telemetrie
NetCrunch empfängt eingehende SQL Server-Metriken über einen Telemetry Node-Endpunkt. Telemetry Nodes akzeptieren JSON-Daten und verankern eingehende Werte als Zähler oder Alarmstatus.
Der Endpunkt, seine URL-Struktur und die Art seiner Autorisierung werden einmalig unter Monitoring with Telegraf beschrieben. Für alle folgenden Abschnitte wird vorausgesetzt, dass bereits ein Telemetry Node vorhanden ist – siehe Telemetrieknoten.
Datenfluss
- SQL Server wird über Dynamic Management Views (DMVs) abgefragt.
- Telegraf erfasst die zurückgegebenen Metriken.
- Telegraf sendet JSON-Daten per HTTP POST an den NetCrunch Telemetry Node-Endpunkt.
- NetCrunch speichert Werte als Zähler oder Statusobjekte.
SQL Server-Konfiguration
Monitoring-Login erstellen
Erstellen Sie ein dediziertes Login mit den für Telegraf erforderlichen Berechtigungen.
SQL Server On-Premises
USE master; GO CREATE LOGIN [telegraf] WITH PASSWORD = N'StrongPassword123!'; GO GRANT VIEW SERVER STATE TO [telegraf]; GO GRANT VIEW ANY DEFINITION TO [telegraf]; GO
Azure SQL Database
CREATE USER [telegraf] WITH PASSWORD = N'StrongPassword123!'; GO GRANT VIEW DATABASE STATE TO [telegraf]; GO
Windows-Authentifizierung On-Premises
Aktivieren Sie zunächst die Service-SID:
sc.exe sidtype "telegraf" unrestricted
Erstellen Sie anschließend ein Login:
USE master; GO CREATE LOGIN [NT SERVICE\telegraf] FROM WINDOWS; GO GRANT VIEW SERVER STATE TO [NT SERVICE\telegraf]; GO GRANT VIEW ANY DEFINITION TO [NT SERVICE\telegraf]; GO
Telegraf-Konfiguration
Telegraf-Konfigurationsdatei:
- Linux:
/etc/telegraf/telegraf.conf - Windows:
C:\Program Files\Telegraf\telegraf.conf
Grundkonfiguration
[agent] interval = "30s" flush_interval = "30s" metric_buffer_limit = 10000 debug = false quiet = false[[inputs.sqlserver]] servers = [ "Server=127.0.0.1;Port=1433;User Id=telegraf;Password=StrongPassword123!;app name=telegraf;" ] database_type = "SQLServer"
[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json"
Konfigurationsparameter
Agent-Abschnitt
- interval steuert, wie häufig Metriken erfasst werden
- flush_interval steuert, wie oft Nutzdaten an Outputs übermittelt werden
- metric_buffer_limit legt die maximale Menge gespeicherter, nicht gesendeter Daten fest
- debug aktiviert eine ausführliche Protokollierung
- quiet unterdrückt Ausgaben, die keine Fehler betreffen
SQL Server Input
- servers enthält Verbindungszeichenfolgen
- database_type wählt den Typ der SQL-Umgebung aus
- query_timeout steuert das Zeitlimit für die Ausführung von Abfragen
- include_query beschränkt die Abfragemenge auf ausgewählte Namen
- exclude_query überspringt ausgewählte Abfragen
HTTP Output
- url verweist auf den Telemetry Node-Endpunkt
- method muss POST sein
- data_format muss json sein
- headers definieren HTTP-Inhaltsheader
Überwachung mehrerer Instanzen
Um mehrere SQL Server-Instanzen zu überwachen, konfigurieren Sie mehrere Verbindungszeichenfolgen.
[agent] interval = "30s" flush_interval = "30s" debug = false[[inputs.sqlserver]] servers = [ "Server=127.0.0.1,1433;User Id=telegraf;Password=StrongPassword123!;", "Server=127.0.0.1,1434;User Id=telegraf;Password=StrongPassword123!;" ] database_type = "SQLServer"
[[outputs.http]] url = "https://gw.netcrunch.io/tm/v1/SRV-001@sensor01@node100/update" method = "POST" data_format = "json" content_encoding = "identity" [outputs.http.headers] Content-Type = "application/json"
Diese Konfiguration überwacht zwei Instanzen an unterschiedlichen Ports.
Format der Verbindungszeichenfolge
Grundlegendes Format
Server=<host>;Port=<port>;User Id=<user>;Password=<password>;app name=telegraf;
Benannte Instanz
Server=<host>\<instance>;User Id=<user>;Password=<password>;app name=telegraf;
Windows-Authentifizierung
Server=<host>;Port=<port>;app name=telegraf;
Verbindungszeitlimit
Server=<host>;Port=<port>;User Id=<user>;Password=<password>;app name=telegraf;dial timeout=30;
TLS- oder SSL-Verbindung
Server=<host>;Port=<port>;User Id=<user>;Password=<password>;encrypt=true;certificate=<cert>;hostNameInCertificate=<fqdn>;
Erfasste Metriken
Das SQL Server plugin erfasst je nach database_type Performance- und Statusmetriken aus DMVs.
SQLServer On-Premises
Die erfassten Metriken umfassen:
- Performance counters wie Transaktionen pro Sekunde, Buffer-Cache-Trefferrate, Log-Metriken und Benutzerverbindungen
- Wartezeitstatistiken einschließlich Wartezeit, wartender Tasks und Details zu Ressourcenwartezeiten
- Datenbank-I/O-Latenz und -Durchsatz
- Nutzung der Memory Clerks
- Scheduler-Statistiken
- Servereigenschaften wie CPU-Anzahl, Arbeitsspeicher, Betriebszeit, Version und Datenbankstatus
- Metriken zum freien Volumenspeicher
- Metriken zur CPU-Auslastung
- Details zur letzten Sicherung
AzureSQLDB
Die erfassten Metriken umfassen:
- Ressourcennutzung
- Governance-Limits
- Datenbank-I/O-Statistiken
- Wartezeitstatistiken
- Memory Clerks
- Performance counters
AzureSQLManagedInstance
Die erfassten Metriken umfassen:
- Ressourcenstatistiken der Instanz
- Einstellungen für die Ressourcen-Governance
- Datenbank-I/O
- Wartezeitstatistiken
- Memory Clerks
- Performance counters
AzureSQLPool (Elastic Pool)
Die erfassten Metriken umfassen:
- Ressourcennutzung des Elastic Pool
- Datenbank-I/O pro Datenbank
- Wartezeitstatistiken
- Memory Clerks
- Performance counters
Erweiterte Konfiguration
Selektive Abfrageerfassung
Bestimmte Abfragen einschließen:
[[inputs.sqlserver]] servers = ["Server=127.0.0.1;User Id=telegraf;Password=pass;"] database_type = "SQLServer" include_query = [ "SQLServerPerformanceCounters", "SQLServerDatabaseIO", "SQLServerWaitStatsCategorized" ]
Bestimmte Abfragen ausschließen:
[[inputs.sqlserver]] servers = ["Server=127.0.0.1;User Id=telegraf;Password=pass;"] database_type = "SQLServer" exclude_query = [ "SQLServerAvailabilityReplicaStates", "SQLServerDatabaseReplicaStates" ]
Azure Active Directory-Authentifizierung
[[inputs.sqlserver]] servers = [ "Server=myserver.database.windows.net;Database=mydb;app name=telegraf;" ] database_type = "AzureSQLDB" auth_method = "AAD" client_id = "<managed-identity-client-id>"
Health Metric
[[inputs.sqlserver]] servers = ["Server=127.0.0.1;User Id=telegraf;Password=pass;"] database_type = "SQLServer" health_metric = true
Anwendungsfälle
SQL Server On-Premises
Überwachen Sie klassische SQL Server-Instanzen, ohne SNMP oder WMI zu benötigen.
Server mit mehreren Instanzen
Erfassen Sie Metriken von mehreren SQL Server-Instanzen mithilfe individueller Verbindungszeichenfolgen.
Azure SQL-Überwachung
Überwachen Sie Performance-Metriken für Azure SQL Database und Azure SQL Managed Instance.
Hybride SQL-Umgebungen
Überwachen Sie gemischte Umgebungen mit On-Premises- und Azure SQL-Ressourcen in einer Konfiguration.
Überwachung der Hochverfügbarkeit
Überwachen Sie Verfügbarkeitsgruppen und Replikatstatus.
Zusammenfassung
Telegraf unterstützt die SQL Server-Performanceüberwachung über DMVs und leitet Metriken an NetCrunch Telemetry Nodes weiter. Unterstützt werden SQL Server On-Premises, Azure SQL, Managed Instances und Elastic Pools. Telegraf kann mehrere Instanzen überwachen, unterstützt sowohl SQL- als auch Windows-Authentifizierung, ermöglicht die selektive Abfrageerfassung und unterstützt die Authentifizierung über Azure Active Directory.
- Monitoring with Telegraf
Use Telegraf, the open-source metrics agent, to collect from systems NetCrunch does not poll directly and push the results into NetCrunch as ordinary counters and statuses.
- Überwachung des Linux Sysctl Filesystem über Telegraf in NetCrunch
Dieses Thema erläutert, wie Linux-Kernel-Dateisystemparameter mit Telegraf überwacht und erfasste Metriken an NetCrunch Telemetry Nodes gesendet werden. Das Linux Sysctl Filesystem Input-Plugin liest Werte aus dem Verzeichnis proc sys fs und leitet sie mithilfe des HTTP Output-Plugins an NetCrunch weiter.
- MQTT-Telemetrie über Telegraf in NetCrunch
In diesem Thema wird erläutert, wie über MQTT veröffentlichte Systemmetriken erfasst, mit Telegraf verarbeitet und mithilfe von JSON-basierter Telemetrie an einen NetCrunch Telemetry Node-Endpunkt weitergeleitet werden.
- Azure-Ressourcenüberwachung mit Telegraf in NetCrunch
Dieses Dokument beschreibt, wie Telegraf konfiguriert wird, um Metriken aus verschiedenen Azure-Ressourcen (z. B. Virtual Machines, Storage Accounts und Datenbanken) zu erfassen und über den Telemetry Node-Endpunkt an NetCrunch zu senden.