Monitoring PostgreSQL z użyciem Zabbix

Monitoring PostgreSQL z użyciem Zabbix
Prezentacja Darii Wilkowej dla Zabbix Meetup Online

Chcę przedstawić Wam narzędzie do monitorowania PostgreSQL i systemu operacyjnego, które rozwijamy w naszej firmie z wykorzystaniem Zabbix.

Od dawna wybraliśmy Zabbix jako narzędzie do monitorowania, ponieważ jest to platforma z otwartym kodem źródłowym, wspierana przez aktywną społeczność, która cieszy się dużą popularnością w Rosji.

Stworzyliśmy aktywnego agenta — Mamonsu, który zapewnia bardziej elastyczne monitorowanie, niż standardowe narzędzia na tamten czas oraz umożliwia zbieranie metryk i ich wysyłanie na Zabbix Server. W naszej firmie Mamonsu jest wykorzystywane podczas audytów.

Mamonsu

Mamonsu to aktywny agent (Zabbix Trapper) do monitorowania PostgreSQL i systemu operacyjnego. Mamonsu (napisany w Pythonie) pozwala na skonfigurowanie parametrów monitorowania PostgreSQL i systemu operacyjnego w pięć minut.

Mamonsu ma dodatkowe narzędzia:

  • mamonsu tune — komenda, która edytuje parametry konfiguracji w pliku konfiguracyjnym PostgreSQL na maszynie, na której zainstalowany jest agent Mamonsu.
  • mamonsu report — komenda, która generuje odpowiedzi dotyczące systemu operacyjnego i PostgreSQL.

Mamonsu jest instalowane na serwerze DBMS, zbiera informacje, kompiluje je w JSON, który wysyła do wizualizacji na Zabbix Server, gdzie powinien być szablon dla jego metryk.

Monitoring PostgreSQL z użyciem Zabbix

Schema działania Mamonsu

Możliwości Mamonsu

  • Efektywna praca z PostgreSQL. Stałe połączenie z PostgreSQL to główna zaleta Mamonsu. W tym przypadku maksymalna liczba połączeń odpowiada maksymalnej liczbie baz danych, do których się łączy.
  • Rozszerzalność. Mamonsu to w pełni "pluginowy" agent, a dzięki ustalonej strukturze każdego pluginu i względnej prostoty Pythona, łatwo można nauczyć się pisać nowe lub edytować standardowe pluginy, czyli parametry zbierania metryk.
  • Szeroki zakres metryk do monitorowania dla PostgreSQL, w tym metryki specyficznych rozszerzeń.
  • Szybkie uruchomienie, dostępność "out of the box".
  • Eksport szablonów i plików konfiguracyjnych, a także załadunek na Zabbix Server.
  • Wieloplatformowość, co jest ważne dla naszych klientów, którzy korzystają z różnych dystrybucji Linux, w tym krajowych.
  • Licencja BSD-clause.

Obecnie oferujemy wiele pluginów i w każdej kolejnej wersji staramy się dodać coś nowego.

  • 14 pluginów dla PostgreSQL,
  • 8 wtyczek dla systemu Linux,
  • 4 wtyczki dla systemu Windows.

Mamonsu zbiera ponad 110 metryk PostgreSQL i systemów operacyjnych:

  • 70 metryk PostgreSQL,
  • 40 metryk systemu Linux,
  • 8 metryk systemu Windows.

Główne metryki obejmują dostępność bazy danych, liczbę połączeń, rozmiar bazy danych, punkty kontrolne, prędkość odczytu/zapisu, blokady, liczbę procesów autovacuum oraz prędkość generowania WAL. Pełna lista dostępnych metryk oraz szczegółowy opis wszystkich narzędzi są dostępne na repozytorium stronie GitHub.

Monitoring PostgreSQL z użyciem Zabbix

Lista dostępnych metryk na stronie GitHub

Uruchomienie Mamonsu w 5 minut

Konfiguracja monitorowania PostgreSQL i systemu operacyjnego za pomocą Mamonsu zajmuje tylko 5 minut i składa się z 5 prostych kroków.

  1. Instalacja Mamonsu. Mamonsu można zbudować z kodu źródłowego lub skorzystać z dostępnych pakietów.

$ git clone ... && cd mamonsu && python setup.py

build && python setup.py install

  1. Konfiguracja połączeń. Należy podać parametry połączenia z PostgreSQL i serwerem Zabbix w pliku agent.conf.

/etc/mamonsu/agent.conf

  1. Eksport szablonu do serwera Zabbix.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Dodanie węzła sieciowego do serwera Zabbix. Eksportowany szablon zostanie automatycznie przypisany do nowego węzła sieciowego na serwerze Zabbix.

$ mamonsu zabbix host create mamonsu-demo

  1. Uruchomienie.

$ service mamonsu start

Kierunki rozwoju Mamonsu

W ramach rozwoju Mamonsu planujemy rozwijać metryki i tworzyć nowe wtyczki, na przykład wtyczkę do monitorowania rozmiarów poszczególnych tabel. Planujemy również poprawić i stworzyć dodatkowe narzędzia, a także rozszerzyć możliwości autokonfiguracji poprzez komendę mamonsu tune.

Moduł monitorowania PostgreSQL w składzie Zabbix Agent 2

Do połączenia z PostgreSQL używany jest szybki i popularny sterownik pgx (Sterownik PG i zestaw narzędzi dla Go).

Obecnie używamy dwóch interfejsów: Exportera, wywołującego handler po kluczu, oraz Konfiguratora Zabbix Agent 2, który odczytuje i sprawdza parametry połączenia z serwerem, określone w pliku konfiguracyjnym.

Postaraliśmy się zoptymalizować działanie bazy danych, grupując metryki i korzystając z handlera dla metryk oraz grup metryk, a także stosując grupy metryk w formacie JSON jako zmienne zależne (dependency items) i niskopoziomowe wykrywanie (discovery rules).

Główne możliwości

  • utrzymanie stałego połączenia z PostgreSQL między sprawdzeniami;
  • wsparcie elastycznych interwałów zapytań;
  • kompatybilność z wersjami PostgreSQL od 10 i serwerem Zabbix od wersji 4.4;
  • możliwość jednoczesnego podłączania i monitorowania kilku instancji PostgreSQL dzięki temu, że Zabbix Agent 2 pozwala tworzyć wiele sesji.

Poziomy parametrów połączenia z PostgreSQL

Dostępne są trzy poziomy parametrów połączenia z PostgreSQL, tj. zadań i ustawień:

  • Globalne,
  • Sesje,
  • Makarony.

  1. Parametry Globalne definiowane są na poziomie agenta, a parametry Sesji i Makr definiują parametry połączenia z bazą.

  2. Parametry połączenia z PostgreSQL — Sesje definiowane są w pliku zabbix_agent2.conf.

Monitoring PostgreSQL z użyciem Zabbix

Parametry połączenia z PostgreSQL — Sesje

  • Po słowie kluczowym Sesje podaje się unikalną nazwę sesji, która musi być wskazana w kluczu (szablonie).
  • Ustawienia URI i Nazwa Użytkownika są obowiązkowe dla każdej sesji.
  • Jeśli nazwa bazy nie jest określona, używana jest ogólna domyślna nazwa bazy dla wszystkich sesji PostgreSQL, która również jest określona w pliku konfiguracyjnym.

  1. Parametry połączenia z PostgreSQL — Makr definiowane są w kluczu metryki w szablonie (analogicznie jak w Zabbix Agent 1), t.j. tworzone są w szablonie i następnie wskazywane jako parametry w kluczu. Przy tym kolejność makr jest ustalona, t.j. na przykład, URI zawsze podawane są na pierwszym miejscu.

Monitoring PostgreSQL z użyciem Zabbix

Parametry połączenia z PostgreSQL — Makr

Moduł monitorowania PostgreSQL obejmuje już ponad 95 metryk, które pozwalają na szeroki zakres parametrów PostgreSQL, w tym:

  • liczbę połączeń,
  • rozmiar baz danych,
  • archiwizację plików wal,
  • punkty kontrolne,
  • liczbę „rozrośniętych” tabel,
  • status replikacji,
  • opóźnienie replikacji.

Metryki PostgreSQL nie są informacyjne bez parametrów systemu operacyjnego. Jednak Zabbix Agent 2 potrafi już zbierać parametry systemu operacyjnego, więc aby uzyskać pełny obraz, wystarczy podłączyć do węzła sieci odpowiednie szablony.

Handler (obsługiwacz)

Handler (obsługiwacz) — główna jednostka modułu, w której wykonywane jest zapytanie i która umożliwia uzyskiwanie metryk.

Aby uzyskać prostą metrykę:

  1. Tworzymy plik do uzyskania nowej metryki:

zabbix/src/go/plugins/postgres/handler_uptime.go

  1. Podłączamy pakiet i wskazujemy unikalny klucz (klucze) metryk:

Monitoring PostgreSQL z użyciem Zabbix

  1. Tworzymy handler (obsługiwacz) z zapytaniem, t.j. inicjujemy zmienną, w której będzie wynik:

Monitoring PostgreSQL z użyciem Zabbix

  1. Wykonujemy zapytanie:

Monitoring PostgreSQL z użyciem Zabbix

Należy sprawdzić zapytanie pod kątem błędów, po czym wynik zostanie przechwycony przez proces Zabbix Agent 2.

  1. Rejestrujemy klucz nowej metryki:

Monitoring PostgreSQL z użyciem Zabbix

Po zarejestrowaniu metryki można na nowo skompilować agenta z nową metryką.

Moduł jest dostępny od Zabbix 5.0 na stronie https://www.zabbix.com/download. W tej wersji Zabbix parametry są ustawiane oddzielnie przez host i port. W wersji Zabbix 5.0.2, która wkrótce wyjdzie, parametry połączenia będą skompilowane w jeden URI.

Dziękuję za uwagę!

Przydatne linki

GitHub Mamonsu

Dokumentacja dotycząca Mamonsu

Zabbix Git

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster