Monitorovanie PostgreSQL pomocou Zabbix

Monitorovanie PostgreSQL pomocou Zabbix
Správa Dary Vilkovej pre Zabbix Meetup Online

Chcem vás oboznámiť s monitorovacím nástrojom PostgreSQL a operačného systému, ktorý vyvíja naša spoločnosť s využitím Zabbixu.

Zabbix sme si vybrali ako monitorovací nástroj už dávno, pretože ide o platformu s otvoreným zdrojovým kódom, ktorú podporuje aktívna komunita a ktorá je veľmi populárna v Rusku.

Vytvorili sme aktívneho agenta — Mamonsu, ktorý poskytol flexibilnejšie monitorovanie, ako v tom čase umožňovali štandardné nástroje a zabezpečoval zber metrických údajov a ich odosielanie na Zabbix Server. V našej spoločnosti sa Mamonsu využíva pri vykonávaní auditu.

Mamonsu

Mamonsu je aktívny agent (Zabbix Trapper) na monitorovanie PostgreSQL a operačného systému. Mamonsu (napísaný v Pythone) umožňuje nastaviť parametre monitorovania PostgreSQL a operačného systému za päť minút.

Mamonsu má ďalšie nástroje:

  • mamonsu tune — príkaz, ktorý upravuje nastavenia v konfiguračnom súbore PostgreSQL pre stroj, na ktorý je nainštalovaný agent Mamonsu.
  • mamonsu report — príkaz, ktorý vytvára odpovede týkajúce sa operačného systému a PostgreSQL.

Mamonsu sa inštaluje na server SODB, zbiera informácie, zostavuje ich do JSONu, ktorý odosiela na vizualizáciu na Zabbix Server, kde by mal existovať šablóna pre jeho metriky.

Monitorovanie PostgreSQL pomocou Zabbix

Schéma fungovania Mamonsu

Možnosti Mamonsu

  • Efektívna práca s PostgreSQL. Neustále pripojenie k PostgreSQL — hlavná výhoda Mamonsu. Maximálny počet pripojení zodpovedá maximálnemu počtu databáz, ku ktorým sa pripája.
  • Rozšíriteľnosť. Mamonsu je úplne „pluginový“ agent a vďaka fixnej štruktúre každého pluginu a relatívnej jednoduchosti Pythona je možné sa ľahko naučiť písať nové alebo upravovať štandardné pluginy, teda parametre zberu metrik.
  • Široký rozsah metrík na monitorovanie pre PostgreSQL vrátane metrík špecifických rozšírení.
  • Rýchle spustenie, dostupnosť „z krabice“.
  • Export šablón a konfiguračných súborov, ako aj nahrávanie na Zabbix Server.
  • Krosplattformovosť, čo je dôležité pre našich zákazníkov, ktorí používajú rôzne distribúcie Linuxu, vrátane domácich.
  • Licencia BSD-clause.

V súčasnosti ponúkame množstvo pluginov a v každej nasledujúcej verzii sa snažíme pridať niečo nové.

  • 14 pluginov pre PostgreSQL,
  • 8 pluginov pre OS Linux,
  • 4 pluginy pre OS Windows.

Mamonsu zbiera viac ako 110 metrik PostgreSQL a operačných systémov:

  • 70 metrík PostgreSQL,
  • 40 metrík OS Linux,
  • 8 metrík OS Windows.

Hlavné metriky zahŕňajú dostupnosť DBMS, počet pripojení, veľkosť databázy, checkpointy, rýchlosť čítania/zápisu, zámky, počet procesov autovakua a rýchlosť generovania WAL. Kompletný zoznam dostupných metrik a podrobné popisy všetkých nástrojov sú dostupné na repozitári webovej stránke GitHub.

Monitorovanie PostgreSQL pomocou Zabbix

Zoznam dostupných metrik na webovej stránke GitHub

Spustenie Mamonsu za 5 minút

Pre nastavenie monitorovania PostgreSQL a operačného systému pomocou Mamonsu stačí 5 minút a 5 jednoduchých krokov.

  1. Inštalácia Mamonsu. Mamonsu je možné zostaviť z zdrojového kódu alebo využiť dostupné balíky.

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

build && python setup.py install

  1. Nastavenie pripojení. Je potrebné zadať parametre pripojenia k PostgreSQL a Zabbix Serveru v súbore agent.conf.

/etc/mamonsu/agent.conf

  1. Export šablóny do Zabbix Servera.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Pridanie uzla siete do Zabbix Servera. Exportovaná šablóna bude automaticky pripojená k novému uzlu siete na Zabbix Serveri.

$ mamonsu zabbix host create mamonsu-demo

  1. Spustenie.

$ service mamonsu start

Smerovanie rozvoja Mamonsu

V rámci rozvoja Mamonsu plánujeme vylepšiť metriky a vytvoriť nové pluginy, napríklad plugin na monitoring veľkosti jednotlivých tabuliek. Plánujeme tiež zlepšiť a vytvoriť ďalšie nástroje a rozšíriť možnosti automatického nastavenia cez príkaz mamonsu tune.

Modul monitorovania PostgreSQL v rámci Zabbix Agent 2

Na pripojenie k PostgreSQL sa používa rýchly a obľúbený ovládač pgx (PG ovládač a nástrojový balík pre Go).

V súčasnosti používame dva rozhrania: Exporter, ktorý vyvoláva spracovateľ na základe kľúča, a Configurator Zabbix Agent 2, ktorý načítava a kontroluje parametre pripojenia s serverom zadané v konfiguračnom súbore.

Snažili sme sa optimalizovať prácu DBMS tak, že sme skupinovali metriky a používali spracovateľ (handler) pre metriky a skupiny metrik, ako aj použili skupiny metrik v JSON ako závislé premenné (dependency items) a nízkoúrovňové zisťovanie (discovery rules).

Základné funkcie

  • uchovanie trvalého pripojenia k PostgreSQL medzi kontrolami;
  • podpora flexibilných intervalov prieskumu;
  • kompatibilita s verziami PostgreSQL od 10 a Zabbix Serverom od verzie 4.4;
  • možnosť pripojenia a monitorovania viacerých inštancií PostgreSQL naraz, pretože Zabbix Agent 2 umožňuje vytvárať viacero relácií.

Úrovne parametrov pripojenia k PostgreSQL

K dispozícii sú celkovo tri úrovne parametrov pripojenia k PostgreSQL, t. j. úloh a nastavení:

  • Global,
  • Sessions,
  • Macros.

  1. Parametre Global sú nastavené na úrovni agenta, parametre Session a Macros určujú parametre pripojenia k databáze.

  2. Parametre pripojenia k PostgreSQL — Sessions sú nastavené v súbore zabbix_agent2.conf.

Monitorovanie PostgreSQL pomocou Zabbix

Parametre pripojenia k PostgreSQL — Sessions

  • Po kľúčovom slove Sessions sa uvádza jedinečné meno relácie, ktoré musí byť uvedené v kľúči (šablóne).
  • Parametre URI a UserName sú povinné pre každú reláciu.
  • Ak nie je zadané meno databázy, používa sa predvolené meno databázy pre všetky relácie pre PostgreSQL, ktoré je tiež nastavené v konfiguračnom súbore.

  1. Parametre pripojenia k PostgreSQL — Macros sú nastavené v kľúči metriky v šablóne (podobne ako v Zabbix Agent 1), t. j. sú vytvorené v šablóne a následne uvedené ako parametre v kľúči. Pri tom je sekvencia makier fixná, t. j. napríklad URI sa vždy uvádza na prvom mieste.

Monitorovanie PostgreSQL pomocou Zabbix

Parametre pripojenia k PostgreSQL — Macros

Modul monitorovania PostgreSQL obsahuje už viac ako 95 metrik, ktoré umožňujú pokryť pomerne široký okruh parametrov PostgreSQL, vrátane:

  • počtu pripojení,
  • objemu databáz,
  • archivácie wal-súborov,
  • kontrolných bodov,
  • počtu "nafúknutých" tabuliek,
  • stavu replikácie,
  • zaostávania repliky.

Metriky PostgreSQL nie sú informatívne bez parametrov operačného systému. Zabbix Agent 2 už však dokáže zbierať parametre operačného systému, takže na získanie celkového obrazu jednoducho pripojíme k uzlu siete potrebné šablóny.

Handler

Handler — základná jednotka modulu, v ktorej sa vykonáva samotný dotaz a ktorá umožňuje získavať metriky.

Aby sme získali jednoduchú metriku:

  1. Vytvoríme súbor na získanie novej metriky:

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

  1. Pripojíme balík a uvedieme jedinečný kľúč (kľúče) metrík:

Monitorovanie PostgreSQL pomocou Zabbix

  1. Vytvoríme handler s dotazom, t. j. iniciujeme premennú, v ktorej bude výsledok:

Monitorovanie PostgreSQL pomocou Zabbix

  1. vykonáme dotaz:

Monitorovanie PostgreSQL pomocou Zabbix

Je potrebné skontrolovať dotaz na prítomnosť chýb, po čom bude výsledok zachytený procesom Zabbix Agent 2.

  1. Registrovaniu kľúča novej metriky:

Monitorovanie PostgreSQL pomocou Zabbix

Po registrácii metriky je možné prekompilovať agenta s novou metrikou.

Modul je k dispozícii od verzie Zabbix 5.0 na webovej stránke https://www.zabbix.com/download. V tejto verzii Zabbix sa parametre nastavujú samostatne cez host a port. Vo verzii Zabbix 5.0.2, ktorá bude čoskoro vydaná, budú parametre pripojenia zkomponované do jedného URI.

Ďakujem za pozornosť!

Užitočné odkazy

GitHub Mamonsu

Dokumentácia k Mamonsu

Zabbix Git

Zdroj: habr.com

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster