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
- SQL Server jest odpytywany za pośrednictwem widoków Dynamic Management Views (DMV).
- Telegraf zbiera zwrócone metryki.
- Telegraf wysyła dane JSON do punktu końcowego NetCrunch Telemetry Node za pomocą HTTP POST.
- 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.
- 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.
- Monitorowanie Linux Sysctl Filesystem za pomocą Telegraf w NetCrunch
Ten temat wyjaśnia, jak monitorować parametry systemu plików jądra Linux za pomocą Telegraf i wysyłać zebrane metryki do NetCrunch Telemetry Nodes. Wtyczka wejściowa Linux Sysctl Filesystem odczytuje wartości z katalogu proc sys fs i przekazuje je do NetCrunch za pomocą wtyczki wyjściowej HTTP.
- Telemetria MQTT za pośrednictwem Telegraf w NetCrunch
Ten temat wyjaśnia, jak zbierać metryki systemowe publikowane za pośrednictwem MQTT, przetwarzać je przy użyciu Telegraf oraz przekazywać do punktu końcowego NetCrunch Telemetry Node jako dane telemetryczne w formacie JSON.
- Monitorowanie zasobów Azure za pomocą Telegraf w NetCrunch
Ten dokument opisuje sposób konfigurowania Telegraf w celu zbierania metryk z różnych zasobów Azure (takich jak Virtual Machines, Storage Accounts i Databases) oraz wysyłania ich do NetCrunch za pośrednictwem punktu końcowego Telemetry Node.