Monitorowanie PostgreSQL za pomocą Zabbix

Monitorowanie PostgreSQL za pomocą Zabbix
Raport Darii Vilkova dla Zabbix Meetup Online

Chcę przedstawić wam narzędzie do monitorowania PostgreSQL i systemu operacyjnego, które jest rozwijane przez naszą firmę przy użyciu Zabbix.

Od dawna wybieramy Zabbix jako nasze narzędzie do monitorowania, ponieważ jest to platforma open source wspierana przez aktywną społeczność, która jest bardzo popularna w Rosji.

Stworzyliśmy aktywnego agenta - Mamonsu, który zapewniał bardziej elastyczny monitoring niż pozwalały na to standardowe narzędzia w tamtym czasie oraz zapewniał zbieranie metryk i wysyłanie ich do Zabbix Server. W naszej firmie w audycie wykorzystujemy Mamonsu.

Mamonsu

Mamonsu to aktywny agent (Zabbix Trapper) do monitorowania PostgreSQL i systemu operacyjnego. Mamonsu (napisany w Pythonie) pozwala skonfigurować ustawienia monitorowania PostgreSQL i systemu operacyjnego w pięć minut.

Mamonsu posiada dodatkowe narzędzia:

  • mamonsu tune to polecenie, które edytuje ustawienia w pliku konfiguracyjnym PostgreSQL dla maszyny, na której jest zainstalowany agent Mamonsu.
  • raport mamonsu to polecenie generujące odpowiedzi dotyczące systemu operacyjnego i PostgreSQL.

Mamonsu jest instalowany na serwerze DBMS, zbiera informacje, komponuje je w JSON, który wysyła do Zabbix Server w celu wizualizacji, gdzie powinien znajdować się szablon jego metryk.

Monitorowanie PostgreSQL za pomocą Zabbix

Schemat pracy Mamonsu

Funkcje Mamonsu

  • Efektywna praca z PostgreSQL. Stałe połączenie z PostgreSQL to główna zaleta Mamonsu. W tym przypadku maksymalna liczba połączeń jest równa maksymalnej liczbie baz danych, z którymi się łączy.
  • Możliwość rozbudowy. Mamonsu jest agentem w pełni „wtyczek”, a ze względu na stałą strukturę każdej wtyczki i względną prostotę Pythona można łatwo nauczyć się pisać nowe lub edytować standardowe wtyczki, czyli parametry zbierania metryk.
  • Szeroki zakres wskaźników monitorowania dla PotgreSQL, w tym metryki specyficzne dla rozszerzeń.
  • szybki start, dostępność po wyjęciu z pudełka.
  • Przesyłanie szablonów i plików konfiguracyjnych, jak również przesyłanie do serwera Zabbix.
  • Wieloplatformowy, co jest ważne dla naszych klientów korzystających z różnych dystrybucji Linuksa, w tym krajowych.
  • Licencja na klauzulę BSD.

W tej chwili oferujemy wiele wtyczek iw każdej kolejnej wersji staramy się dodać coś nowego.

  • 14 wtyczek do PostgreSQL,
  • 8 wtyczek dla OS Linux,
  • 4 wtyczki do systemu operacyjnego Windows.

Mamonsu zbiera ponad 110 metryk PostgreSQL i systemu operacyjnego:

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

Kluczowe wskaźniki obejmują dostępność systemu DBMS, liczbę połączeń, rozmiar bazy danych, punkty kontrolne, prędkość odczytu/zapisu, blokady, liczbę procesów automatycznego odkurzania i szybkość generowania WAL. Pełna lista dostępnych metryk, a także szczegółowy opis wszystkich narzędzi znajduje się w repozytoria na stronie GitHub.

Monitorowanie PostgreSQL za pomocą Zabbix

Lista dostępnych metryk w GitHub

Uruchom Mamonsu w 5 minut

Aby skonfigurować monitorowanie PostgreSQL i systemu operacyjnego za pomocą Mamonsu, możesz to zrobić w 5 minut, wykonując 5 prostych kroków.

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

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

build && python setup.py install

  1. Konfiguracja połączenia. Konieczne jest ustawienie parametrów połączenia dla PostgreSQL i Zabbix Server w pliku agent.conf.

/etc/mamonsu/agent.conf

  1. Eksportuj szablon do serwera Zabbix.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Dodawanie hosta do serwera Zabbix. Wyeksportowany szablon zostanie automatycznie połączony z nowym hostem na serwerze Zabbix.

$ mamonsu zabbix host create mamonsu-demo

  1. szalupa.

$ service mamonsu start

Kierunki rozwoju Mamonsu

W ramach rozwoju Mamonsu planujemy dopracować metryki oraz stworzyć nowe wtyczki, takie jak wtyczka do monitorowania wielkości poszczególnych tabel. Planujemy również ulepszyć i stworzyć dodatkowe narzędzia, a także rozszerzyć możliwości automatycznego dostrajania za pomocą polecenia melodia mamonsu.

Moduł monitorujący PostgreSQL jako część Zabbix Agent 2

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

Do tej pory korzystamy z dwóch interfejsów: Exporter, który wywołuje handler po kluczu, oraz Configurator Zabbix Agent 2, który odczytuje i sprawdza parametry połączenia z serwerem określonym w pliku konfiguracyjnym.

Staraliśmy się zoptymalizować pracę DBMS poprzez grupowanie metryk i stosowanie handlera (handlera) dla metryk i grup metryk, a także wykorzystanie grup metryk w JSON jako zmiennych zależnych (elementów zależności) oraz niskopoziomowego wykrywania (reguły wykrywania ).

Najważniejsze cechy

  • utrzymywanie stałego połączenia z PostgreSQL pomiędzy sprawdzeniami;
  • obsługa elastycznych interwałów odpytywania;
  • kompatybilność z wersjami PostgreSQL począwszy od wersji 10 oraz Zabbix Server począwszy od wersji 4.4;
  • możliwość łączenia i monitorowania wielu instancji PostgreSQL w tym samym czasie dzięki temu, że Zabbix Agent 2 umożliwia tworzenie wielu sesji.

Poziomy parametrów połączenia PostgreSQL

W sumie dostępne są trzy poziomy parametrów połączenia PostgreSQL, tj. zadania i ustawienia:

  • Światowy,
  • Sesje,
  • Makra.

  1. Parametry Global są ustawiane na poziomie agenta, parametry Sesja i Makra określają parametry połączenia z bazą danych.

  2. Parametry połączenia z PostgreSQL - Sesje są ustawione w pliku zabbix_agent2.conf.

Monitorowanie PostgreSQL za pomocą Zabbix

Opcje połączenia PostgreSQL - Sesje

  • Po słowie kluczowym Sesji podawana jest unikalna nazwa sesji, która musi być podana w kluczu (szablonie).
  • Parametry URI и UserName wymagane na każdą sesję.
  • Jeśli nazwa podstawowa nie zostanie określona, ​​używana jest domyślna wspólna nazwa podstawowa dla wszystkich sesji PostgreSQL, która jest również ustawiona w pliku konfiguracyjnym.

  1. Parametry połączenia z PostgreSQL - Makra są ustawiane w kluczu metrycznym w szablonie (podobnie jak w Zabbix Agent 1), tzn. są tworzone w szablonie, a następnie określane jako parametry w kluczu. W tym przypadku kolejność makr jest stała, czyli np. URI zawsze wymieniane jako pierwsze.

Monitorowanie PostgreSQL za pomocą Zabbix

Parametry połączenia PostgreSQL - Makra

Moduł monitorowania PostgreSQL zawiera już ponad 95 metryk, które pozwalają objąć dość szeroki zakres parametrów PostgreSQL, w tym:

  • liczba połączeń
  • rozmiar bazy danych,
  • archiwizacja plików wal,
  • punkty kontrolne,
  • ilość „rozdętych” stolików,
  • stan replikacji,
  • opóźnienie repliki.

Metryki PostgreSQL nie mają charakteru informacyjnego bez parametrów systemu operacyjnego. Ale Zabbix Agent 2 już wie, jak zbierać parametry systemu operacyjnego, więc aby uzyskać pełny obraz, wystarczy podłączyć niezbędne szablony do hosta.

Treser

Handler jest główną jednostką modułu, w której wykonywane jest samo żądanie i która umożliwia odbieranie metryk.

Aby uzyskać prostą metrykę:

  1. Utwórz plik, aby uzyskać nowe dane:

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

  1. Łączymy pakiet i określamy unikalny klucz (klucze) metryk:

Monitorowanie PostgreSQL za pomocą Zabbix

  1. Tworzymy handler (handler) z żądaniem, czyli inicjujemy zmienną, która będzie zawierała wynik:

Monitorowanie PostgreSQL za pomocą Zabbix

  1. Realizujemy żądanie:

Monitorowanie PostgreSQL za pomocą Zabbix

Konieczne jest sprawdzenie żądania pod kątem błędów, po czym wynik zostanie odebrany przez proces Zabbix Agent 2.

  1. Zarejestruj nowy klucz metryczny:

Monitorowanie PostgreSQL za pomocą Zabbix

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

Moduł jest dostępny od wersji Zabbix 5.0 na stronie https://www.zabbix.com/download. W tej wersji Zabbix parametry są ustawiane oddzielnie przez hosta i port. W Zabbix 5.0.2, który zostanie wydany wkrótce, parametry połączenia będą spakowane w pojedynczy URI.

Dziękuję za uwagę!

Przydatne linki

GitHub Mamonsu

Dokumentacja Mamonsu

Zabbix Git

Źródło: www.habr.com

Dodaj komentarz