PDF

Monitorowanie SQL Server za pośrednictwem Telegraf w NetCrunch

Ten temat wyjaśnia, jak skonfigurować Telegraf do zbierania metryk Microsoft SQL Server i przekazywania ich do punktu końcowego NetCrunch Telemetry Node przy użyciu danych telemetrycznych opartych na JSON. Obejmuje konfigurację logowania do SQL Server, parametry połączeń, konfigurację wejścia Telegraf oraz obsługiwane typy metryk.

Omówienie

Telegraf zbiera metryki SQL Server za pośrednictwem SQL Server input plugin. Wtyczka ta używa widoków Dynamic Management Views udostępnianych przez SQL Server do gromadzenia metryk wydajności. Zebrane metryki są wysyłane do NetCrunch Telemetry Node za pośrednictwem HTTP output plugin.

Obsługiwane środowiska obejmują:

  • SQL Server lokalnie
  • Azure SQL Database
  • Azure SQL Managed Instance
  • Azure SQL Elastic Pool
  • Wiele instancji SQL Server na jednym hoście

Obsługa telemetrii SQL Server przez NetCrunch

NetCrunch odbiera przychodzące metryki SQL Server za pośrednictwem punktu końcowego Telemetry Node. Węzły Telemetry Node akceptują dane JSON i zapisują przychodzące wartości jako liczniki lub stany alertów.

Punkt końcowy, jego format adresu URL oraz sposób autoryzacji zostały opisane w Monitoring with Telegraf. Wszystkie poniższe informacje zakładają, że Telemetry Node już istnieje — zobacz Węzeł telemetryczny.

Przepływ danych

  1. SQL Server jest odpytywany za pośrednictwem widoków Dynamic Management Views (DMV).
  2. Telegraf zbiera zwrócone metryki.
  3. Telegraf wysyła dane JSON do punktu końcowego NetCrunch Telemetry Node za pomocą HTTP POST.
  4. NetCrunch przechowuje wartości jako liczniki lub obiekty stanu.

Konfiguracja SQL Server

Tworzenie konta logowania do monitorowania

Utwórz dedykowane konto logowania z uprawnieniami wymaganymi przez Telegraf.

SQL Server lokalnie

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

Uwierzytelnianie Windows lokalnie

Najpierw włącz identyfikator SID usługi:

sc.exe sidtype "telegraf" unrestricted

Następnie utwórz konto logowania:

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

Konfiguracja Telegraf

Plik konfiguracyjny Telegraf:

  • Linux: /etc/telegraf/telegraf.conf
  • Windows: C:\Program Files\Telegraf\telegraf.conf

Konfiguracja podstawowa

[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"

Parametry konfiguracji

Sekcja Agent

  • interval określa częstotliwość zbierania metryk
  • flush_interval określa częstotliwość przesyłania danych do wyjść
  • metric_buffer_limit definiuje limit przechowywanych, niewysłanych danych
  • debug włącza szczegółowe rejestrowanie
  • quiet wyłącza dane wyjściowe inne niż błędy

SQL Server Input

  • servers zawiera parametry połączeń
  • database_type wybiera typ środowiska SQL
  • query_timeout określa limit czasu wykonywania zapytania
  • include_query ogranicza zestaw zapytań do wybranych nazw
  • exclude_query pomija wybrane zapytania

HTTP Output

  • url wskazuje punkt końcowy Telemetry Node
  • method musi mieć wartość POST
  • data_format musi mieć wartość json
  • headers definiuje nagłówki zawartości HTTP

Monitorowanie wielu instancji

Aby monitorować wiele instancji SQL Server, skonfiguruj wiele parametrów połączeń.

[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"

Ta konfiguracja monitoruje dwie instancje na różnych portach.

Format parametrów połączenia

Podstawowy

Server=<host>;Port=<port>;User Id=<user>;Password=<password>;app name=telegraf;

Nazwana instancja

Server=<host>\<instance>;User Id=<user>;Password=<password>;app name=telegraf;

Uwierzytelnianie Windows

Server=<host>;Port=<port>;app name=telegraf;

Limit czasu połączenia

Server=<host>;Port=<port>;User Id=<user>;Password=<password>;app name=telegraf;dial timeout=30;

Połączenie TLS lub SSL

Server=<host>;Port=<port>;User Id=<user>;Password=<password>;encrypt=true;certificate=<cert>;hostNameInCertificate=<fqdn>;

Zbierane metryki

Wtyczka SQL Server zbiera metryki wydajności i stanu z DMV, zależnie od database_type.

SQLServer lokalnie

Zbierane metryki obejmują:

  • Liczniki wydajności, takie jak liczba transakcji na sekundę, współczynnik trafień pamięci podręcznej bufora, metryki dziennika i połączenia użytkowników
  • Statystyki oczekiwania, w tym czas oczekiwania, zadania oczekujące i szczegóły oczekiwania na zasoby
  • Opóźnienie i przepustowość operacji wejścia-wyjścia bazy danych
  • Użycie pamięci przez memory clerks
  • Statystyki harmonogramu
  • Właściwości serwera, takie jak liczba procesorów, ilość pamięci, czas działania, wersja i stany baz danych
  • Metryki wolnego miejsca na woluminach
  • Metryki użycia procesora
  • Szczegóły ostatniej kopii zapasowej

AzureSQLDB

Zbierane metryki obejmują:

  • Wykorzystanie zasobów
  • Limity zarządzania zasobami
  • Statystyki Database I O
  • Statystyki oczekiwania
  • Memory clerks
  • Liczniki wydajności

AzureSQLManagedInstance

Zbierane metryki obejmują:

  • Statystyki zasobów instancji
  • Ustawienia zarządzania zasobami
  • Database I O
  • Statystyki oczekiwania
  • Memory clerks
  • Liczniki wydajności

AzureSQLPool (Elastic Pool)

Zbierane metryki obejmują:

  • Wykorzystanie zasobów puli elastycznej
  • Database I O dla poszczególnych baz danych
  • Statystyki oczekiwania
  • Memory clerks
  • Liczniki wydajności

Konfiguracja zaawansowana

Selektywne zbieranie zapytań

Uwzględnianie określonych zapytań:

[[inputs.sqlserver]] servers = ["Server=127.0.0.1;User Id=telegraf;Password=pass;"] database_type = "SQLServer" include_query = [ "SQLServerPerformanceCounters", "SQLServerDatabaseIO", "SQLServerWaitStatsCategorized" ]

Wykluczanie określonych zapytań:

[[inputs.sqlserver]] servers = ["Server=127.0.0.1;User Id=telegraf;Password=pass;"] database_type = "SQLServer" exclude_query = [ "SQLServerAvailabilityReplicaStates", "SQLServerDatabaseReplicaStates" ]

Uwierzytelnianie Azure Active Directory

[[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>"

Metryka kondycji

[[inputs.sqlserver]] servers = ["Server=127.0.0.1;User Id=telegraf;Password=pass;"] database_type = "SQLServer" health_metric = true

Przypadki użycia

SQL Server lokalnie

Monitoruj klasyczne instancje SQL Server bez konieczności używania SNMP lub WMI.

Serwery z wieloma instancjami

Zbieraj metryki z kilku instancji SQL Server przy użyciu indywidualnych parametrów połączenia.

Monitorowanie Azure SQL

Śledź metryki wydajności Azure SQL Database i Azure SQL Managed Instance.

Hybrydowe środowiska SQL

Monitoruj środowiska mieszane, obejmujące zasoby lokalnego SQL Server i Azure SQL, w ramach jednej konfiguracji.

Monitorowanie wysokiej dostępności

Monitoruj grupy dostępności i stany replik.

Podsumowanie

Telegraf obsługuje monitorowanie wydajności SQL Server za pośrednictwem DMV i przekazuje metryki do NetCrunch Telemetry Nodes. Obsługiwane są lokalne instalacje SQL Server, Azure SQL, instancje zarządzane i pule elastyczne. Telegraf może monitorować wiele instancji, obsługuje uwierzytelnianie SQL i Windows, umożliwia selektywne zbieranie zapytań oraz obsługuje uwierzytelnianie za pośrednictwem Azure Active Directory.

azure sqldatabasedmvelastic poolmanaged instancemssqlpushsql servertelegraftelemetry node