Monitoring PostgreSQL pomocí Zabbix

Monitoring PostgreSQL pomocí Zabbix
Prezentace Darii Vilkové pro Zabbix Meetup Online

Chtěl bych vás seznámit s monitorovacím nástrojem PostgreSQL a operačního systému, který vyvíjí naše společnost za použití Zabbixu.

Zabbix jsme si vybrali jako monitorovací nástroj již dávno, protože je to platforma s otevřeným zdrojovým kódem, podporovaná aktivní komunitou a velmi populární v Rusku.

Vytvořili jsme aktivního agenta — Mamonsu, který nabízel flexibilnější monitorování, než to umožňovaly standardní nástroje, a zajišťoval sběr metrik a jejich odesílání na Zabbix Server. V naší společnosti se Mamonsu používá při provádění auditu.

Mamonsu

Mamonsu je aktivní agent (Zabbix Trapper) pro monitorování PostgreSQL a operačního systému. Mamonsu (napsaný v Pythonu) umožňuje nastavit parametry monitorování PostgreSQL a operačního systému během pěti minut.

Mamonsu nabízí další nástroje:

  • mamonsu tune — příkaz, který upravuje parametry nastavení v konfiguračním souboru PostgreSQL podle stroje, na který je nainstalován agent Mamonsu.
  • mamonsu report — příkaz, který vytváří odpovědi o operačním systému a PostgreSQL.

Mamonsu se instaluje na serveru DBMS, shromažďuje informace, kompiluje je do JSON, který odesílá pro vizualizaci na Zabbix Server, kde musí být šablona pro jeho metriky.

Monitoring PostgreSQL pomocí Zabbix

Schéma fungování Mamonsu

Možnosti Mamonsu

  • Efektivní práce s PostgreSQL. Stálé spojení s PostgreSQL je hlavní výhodou Mamonsu. Přitom maximální počet spojení odpovídá maximálnímu počtu databází, ke kterým se připojuje.
  • Škálovatelnost. Mamonsu je plně "pluginový" agent a díky pevné struktuře každého pluginu a relativní jednoduchosti Pythonu se snadno naučíte psát nové nebo upravovat standardní pluginy, t.j. parametry sběru metrik.
  • Široký záběr metrik pro monitorování pro PostgreSQL včetně metrik specifických rozšíření.
  • Rychlé spuštění, dostupnost "z krabice".
  • Export šablon a konfiguračních souborů, stejně jako nahrávání na Zabbix Server.
  • Křížová kompatibilita, což je důležité pro naše zákazníky, kteří používají různé distribuce Linuxu, včetně domácích.
  • BSD-clause licence.

V tuto chvíli nabízíme řadu pluginů a v každé další verzi se snažíme přidat něco nového.

  • 14 pluginů pro PostgreSQL,
  • 8 pluginů pro OS Linux,
  • 4 pluginy pro OS Windows.

Mamonsu shromažďuje více než 110 metrik PostgreSQL a operačních systémů:

  • 70 metrik PostgreSQL,
  • 40 metrik OS Linux,
  • 8 metrik OS Windows.

Hlavní metriky zahrnují dostupnost DBMS, počet připojení, velikost databáze, kontrolní body, rychlost čtení/zápisu, zámky, počet procesů autovakua a rychlost generování WAL. Kompletní seznam dostupných metrik a podrobné popisy všech nástrojů jsou k dispozici na repozitáře webu GitHub.

Monitoring PostgreSQL pomocí Zabbix

Seznam dostupných metrik na webu GitHub

Spuštění Mamonsu za 5 minut

Nastavení monitorování PostgreSQL a operačního systému pomocí Mamonsu lze provést za 5 minut, pokud provedete 5 jednoduchých kroků.

  1. Instalace Mamonsu. Mamonsu lze sestavit ze zdrojového kódu nebo použít dostupné balíčky.

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

build && python setup.py install

  1. Nastavení připojení. Je nutné uvést parametry připojení k PostgreSQL a Zabbix Serveru v souboru agent.conf.

/etc/mamonsu/agent.conf

  1. Export šablony do Zabbix Serveru.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Přidání uzlu sítě do Zabbix Serveru. Exportovaná šablona bude automaticky připojena k novému uzlu sítě na Zabbix Serveru.

$ mamonsu zabbix host create mamonsu-demo

  1. Spuštění.

$ service mamonsu start

Směry rozvoje Mamonsu

V rámci rozvoje Mamonsu plánujeme vylepšovat metriky a vytvářet nové pluginy, například plugin pro monitorování velikosti jednotlivých tabulek. Také plánujeme zlepšovat a vytvářet další nástroje a rozšiřovat možnosti automatizace konfigurace pomocí příkazu mamonsu tune.

Modul pro monitorování PostgreSQL včetně Zabbix Agent 2

Pro připojení k PostgreSQL se používá rychlý a populární ovladač pgx (PG ovladač a nástrojová sada pro Go).

Zatím používáme dvě rozhraní: Exporter, který vyvolává zpracovatele podle klíče, a Konfigurátor Zabbix Agent 2, který čte a ověřuje parametry připojení k serveru zadefinované v konfiguračním souboru.

Snažili jsme se optimalizovat práci DBMS tím, že jsme skupinovali metriky a používali zpracovatele (handler) pro metriky a skupiny metrik, a také využívali skupiny metrik v JSON jako závislé proměnné (dependency items) a nízkoúrovňové objevovací pravidla (discovery rules).

Hlavní funkce

  • udržování stálého připojení k PostgreSQL mezi kontrolami;
  • podpora flexibilních intervalů dotazování;
  • kompatibilita s verzemi PostgreSQL od 10 a Zabbix Serverem od verze 4.4;
  • možnost připojení a monitorování několika instancí PostgreSQL najednou, díky tomu, že Zabbix Agent 2 umožňuje vytvářet několik relací.

Úrovně připojení k PostgreSQL

Celkem jsou k dispozici tři úrovně parametrů připojení k PostgreSQL, tj. úkolů a nastavení:

  • Global,
  • Sessions,
  • Macros.

  1. Parametry Global jsou definovány na úrovni agenta, parametry Session a Macros definují parametry připojení k databázi.

  2. Parametry připojení k PostgreSQL — Sessions jsou nastaveny v souboru zabbix_agent2.conf.

Monitoring PostgreSQL pomocí Zabbix

Parametry připojení k PostgreSQL — Sessions

  • Po klíčovém slovu Sessions je uvedeno unikátní jméno relace, které musí být uvedeno ve klíči (šabloně).
  • Parametry URI a UserName jsou povinné pro každou relaci.
  • Pokud není zadáno jméno databáze, použije se výchozí společné jméno databáze pro všechny relace pro PostgreSQL, které je také definováno v konfiguračním souboru.

  1. Parametry připojení k PostgreSQL — Macros jsou definovány v klíči metriky v šabloně (podobně jako způsob použitý v Zabbix Agent 1), tj. jsou vytvořeny v šabloně a poté uvedeny jako parametry v klíči. Přitom je sekvence maker fixní, tj. například, URI se vždy uvádí na prvním místě.

Monitoring PostgreSQL pomocí Zabbix

Parametry připojení k PostgreSQL — Macros

Modul pro monitorování PostgreSQL zahrnuje již více než 95 metrik, které pokrývají poměrně široký rozsah parametrů PostgreSQL, včetně:

  • počtu připojení,
  • objemu databází,
  • archivace wal souborů,
  • kontrolních bodů,
  • počtu „nafouknutých“ tabulek,
  • stavu replikace,
  • zpoždění repliky.

Metriky PostgreSQL nejsou informativní bez parametrů operačního systému. Ale Zabbix Agent 2 už umí shromažďovat parametry operačního systému, proto pro získání úplného obrazu jednoduše připojíme k uzlu sítě potřebné šablony.

Handler (obslužný program)

Handler (obslužný program) — hlavní jednotka modulu, ve které se provádí samotný dotaz a která umožňuje získávat metriky.

Pro získání jednoduché metriky:

  1. Vytvoříme soubor pro získání nové metriky:

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

  1. Připojíme balíček a uvedeme unikátní klíč (klíče) metrik:

Monitoring PostgreSQL pomocí Zabbix

  1. Vytvořte handler (obslužný program) s dotazem, tj. inicializujeme proměnnou, ve které bude výsledek:

Monitoring PostgreSQL pomocí Zabbix

  1. Provedeme dotaz:

Monitoring PostgreSQL pomocí Zabbix

Je třeba zkontrolovat dotaz na chyby, po kterých bude výsledek zpracován procesem Zabbix Agent 2.

  1. Registrováme klíč nové metriky:

Monitoring PostgreSQL pomocí Zabbix

Po registraci metriky můžete znovu sestavit agenta s novou metrikou.

Modul je k dispozici od Zabbix 5.0 na webu https://www.zabbix.com/download. V této verzi Zabbix jsou parametry zadávány odděleně přes host a port. Ve verzi Zabbix 5.0.2, která brzy vyjde, budou připojovací parametry sloučeny do jednoho URI.

Děkujeme za pozornost!

Užitečné odkazy

GitHub Mamonsu

Dokumentace k Mamonsu

Zabbix Git

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster