Monitorizarea PostgreSQL folosind Zabbix

Monitorizarea PostgreSQL folosind Zabbix
Prezentarea Dariei Vilkova pentru Zabbix Meetup Online

Vreau să vă prezint un instrument de monitorizare pentru PostgreSQL și sistemul de operare, dezvoltat de compania noastră folosind Zabbix.

Am ales Zabbix ca instrument de monitorizare cu mult timp în urmă, deoarece este o platformă open-source, susținută de o comunitate activă, care este foarte populară în România.

Am creat un agent activ — Mamonsu, care oferă o monitorizare mai flexibilă decât ce permiteau instrumentele standard la momentul respectiv și asigura colectarea metrilor și trimiterea acestora către Zabbix Server. În compania noastră, Mamonsu este utilizat în cadrul auditului.

Mamonsu

Mamonsu este un agent activ (Zabbix Trapper) pentru monitorizarea PostgreSQL și a sistemului de operare. Mamonsu (scris în Python) permite configurarea parametrilor de monitorizare pentru PostgreSQL și sistemul de operare în doar cinci minute.

Mamonsu dispune de instrumente suplimentare:

  • mamonsu tune — o comandă care editează parametrii de configurare în fișierul de configurare PostgreSQL pentru mașina pe care este instalat agentul Mamonsu.
  • mamonsu report — o comandă care generează răspunsuri despre sistemul de operare și PostgreSQL.

Mamonsu este instalat pe serverul SGBD, colectează informații, le structurează în JSON, pe care îl trimite pentru vizualizare pe Zabbix Server, unde trebuie să existe un șablon pentru metrigile sale.

Monitorizarea PostgreSQL folosind Zabbix

Schema de funcționare a Mamonsu

Capabilitățile Mamonsu

  • Funcționare eficientă cu PostgreSQL. Conexiunea continuă cu PostgreSQL este principalul avantaj al Mamonsu. În acest sens, numărul maxim de conexiuni este egal cu numărul maxim de baze de date la care se conectează.
  • Scalabilitate. Mamonsu este un agent complet „plugin”, și datorită structurii fixe a fiecărui plugin și a relativității ușoarei învățări a Python, este simplu să înveți să scrii noi sau să editezi pluginuri standard, adică parametrii de colectare a metrilor.
  • Acoperire largă a metrilor pentru monitorizare inclusiv metrice specifice extensiilor pentru PotgreSQL.
  • Lansare rapidă, disponibilitate „din cutie”.
  • Expedierea șabloanelor și a fișierelor de configurare, precum și încărcarea pe Zabbix Server.
  • Interoperabilitate, ceea ce este important pentru clienții noștri care utilizează diverse distribuții Linux, inclusiv cele autohtone.
  • Licență BSD-clause.

În prezent, oferim numeroase pluginuri și în fiecare versiune următoare încercăm să adăugăm ceva nou.

  • 14 pluginuri pentru PostgreSQL,
  • 8 pluginuri pentru OS Linux,
  • 4 pluginuri pentru OS Windows.

Mamonsu colectează peste 110 metrici PostgreSQL și pentru sistemele de operare:

  • 70 de metrici PostgreSQL,
  • 40 de metrici OS Linux,
  • 8 metrici OS Windows.

Metricile principale includ disponibilitatea bazelor de date, numărul de conexiuni, dimensiunea bazei de date, checkpoint-urile, viteza de citire/scriere, blocajele, numărul de procese avacuum și viteza de generare WAL. Lista completă a metricilor disponibile, precum și descrierea detaliată a tuturor instrumentelor se găsește în repository pe site-ul GitHub.

Monitorizarea PostgreSQL folosind Zabbix

Lista metricilor disponibile pe site-ul GitHub

Pornirea Mamonsu în 5 minute

Configurați monitorizarea PostgreSQL și a sistemului de operare folosind Mamonsu în 5 minute, efectuând 5 pași simpli.

  1. Instalarea Mamonsu. Mamonsu poate fi construit din surse sau utilizând pachete disponibile.

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

build && python setup.py install

  1. Configurarea conexiunilor. Este necesar să se definească parametrii de conexiune cu PostgreSQL și serverul Zabbix în fișierul agent.conf.

/etc/mamonsu/agent.conf

  1. Exportarea șablonului în serverul Zabbix.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Adăugarea unui nod de rețea în serverul Zabbix. Șablonul exportat va fi conectat automat la noul nod de rețea pe serverul Zabbix.

$ mamonsu zabbix host create mamonsu-demo

  1. Pornire.

$ service mamonsu start

Direcțiile de dezvoltare ale Mamonsu

În cadrul dezvoltării Mamonsu, plănuim să îmbunătățim metricile și să creăm noi pluginuri, de exemplu un plugin pentru monitorizarea dimensiunii anumitor tabele. De asemenea, intenționăm să îmbunătățim și să dezvoltăm instrumente suplimentare, precum și să extindem opțiunile de auto-configurare prin comanda mamonsu tune.

Modulul de monitorizare PostgreSQL ca parte a Zabbix Agent 2

Pentru conexiunea cu PostgreSQL se folosește un driver rapid și popular pgx (driver și toolkit PG pentru Go).

În prezent folosim două interfețe: Exporter, care apelează handler-ul după cheie, și Configurator Zabbix Agent 2, care citește și verifică parametrii de conexiune cu serverul, definiți în fișierul de configurație.

Am încercat să optimizăm funcționarea bazelor de date, grupând metricile și folosind un handler pentru metrici și grupuri de metrici, precum și utilizând grupuri de metrici în JSON ca elemente variabile dependente, și descoperire de nivel inferior.

Funcționalități principale

  • menținerea unei conexiuni constante cu PostgreSQL între verificări;
  • suport pentru intervale flexibile de sondare;
  • compatibilitate cu versiunile PostgreSQL, începând cu 10, și Zabbix Server, începând cu versiunea 4.4;
  • posibilitatea de a conecta și monitoriza mai multe instanțe PostgreSQL simultan, datorită faptului că Zabbix Agent 2 permite crearea mai multor sesiuni.

Nivelurile parametrilor de conectare la PostgreSQL

Există în total trei niveluri de parametri de conectare la PostgreSQL, adică sarcini și configurări:

  • Global,
  • Sessions,
  • Macros.

  1. Parametrii Global sunt definiți la nivelul agentului, iar parametrii Session și Macros definesc parametrii de conectare la baza de date.

  2. Parametrii de conectare la PostgreSQL — Sessions sunt definiți în fișierul zabbix_agent2.conf.

Monitorizarea PostgreSQL folosind Zabbix

Parametrii de conectare la PostgreSQL — Sessions

  • După cuvântul cheie Sessions se specifică un nume unic de sesiune, care trebuie menționat în cheia (șablon).
  • Setări URI și UserName este obligatoriu pentru fiecare sesiune.
  • Dacă numele bazei nu este specificat, se folosește numele general implicit al bazei pentru toate sesiunile PostgreSQL, care este de asemenea definit în fișierul de configurare.

  1. Parametrii de conectare la PostgreSQL — Macros sunt definiți în cheia metricii din șablon (asemănător metodei utilizate în Zabbix Agent 1), adică sunt create în șablon și ulterior sunt specificate ca parametri în cheie. În această situație, secvența macro-urilor este fixă, adică, de exemplu, URI este întotdeauna specificată pe primul loc.

Monitorizarea PostgreSQL folosind Zabbix

Parametrii de conectare la PostgreSQL — Macros

Modulul de monitorizare PostgreSQL include deja peste 95 de metrici, care permit acoperirea unui spectru destul de larg de parametri PostgreSQL, inclusiv:

  • numărul de conexiuni,
  • volumul bazelor de date,
  • arhivarea fișierelor wal,
  • punctele de control,
  • numărul de tabele „umflate”,
  • starea replicării,
  • întârzierea replicii.

Metricile PostgreSQL nu sunt informative fără parametrii sistemului de operare. Dar Zabbix Agent 2 poate deja să colecteze parametrii sistemului de operare, așa că pentru a obține o imagine completă, pur și simplu conectăm la nodul rețelei șabloanele necesare.

Handlerul (handler)

Handlerul (handler) este unitatea principală a modulului, în care se execută efectiv solicitarea și care permite obținerea metricilor.

Pentru a obține o metrică simplă:

  1. Creăm un fișier pentru obținerea unei noi metrici:

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

  1. Conectăm pachetul și specificăm o cheie unică (chei) pentru metrici:

Monitorizarea PostgreSQL folosind Zabbix

  1. Creăm un handler (handler) cu solicitarea, adică inițiem o variabilă în care se va afla rezultatul:

Monitorizarea PostgreSQL folosind Zabbix

  1. Executăm solicitarea:

Monitorizarea PostgreSQL folosind Zabbix

Este necesar să verificăm solicitarea pentru erori, după care rezultatul va fi preluat de procesul Zabbix Agent 2.

  1. Înregistrăm cheia noii metrici:

Monitorizarea PostgreSQL folosind Zabbix

După înregistrarea metrii, puteți reconstrui agentul cu noua metrică.

Modulul este disponibil începând cu Zabbix 5.0 pe site. https://www.zabbix.com/download. În această versiune Zabbix, parametrii sunt definiți separat prin host și port. În versiunea Zabbix 5.0.2, care va fi lansată în curând, parametrii de conectare vor fi compusați într-un singur URI.

Vă mulțumesc pentru atenție!

Linkuri utile

GitHub Mamonsu

Documentația pentru Mamonsu

Zabbix Git

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster