PDF

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

  1. SQL Server wird über Dynamic Management Views (DMVs) abgefragt.
  2. Telegraf erfasst die zurückgegebenen Metriken.
  3. Telegraf sendet JSON-Daten per HTTP POST an den NetCrunch Telemetry Node-Endpunkt.
  4. 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.

azure sqldatabasedmvelastic poolmanaged instancemssqlpushsql servertelegraftelemetry node