Monitorizarea PostgreSQL folosind Zabbix

Monitorizarea PostgreSQL folosind Zabbix
Raport de Daria Vilkova pentru Zabbix Meetup Online

Vreau să vă prezint instrumentul de monitorizare PostgreSQL și a sistemului de operare, care este dezvoltat de compania noastră folosind Zabbix.

Am ales Zabbix ca instrument de monitorizare de mult timp deoarece este o platformă open source susținută de o comunitate activă, foarte populară în Rusia.

Am creat un agent activ - Mamonsu, care a asigurat o monitorizare mai flexibilă decât permiteau instrumentele standard la acel moment și a asigurat colectarea de metrici și trimiterea lor către Zabbix Server. În compania noastră, Mamonsu este folosit în audit.

Mamonsu

Mamonsu este un agent activ (Zabbix Trapper) pentru monitorizarea PostgreSQL și a sistemului de operare. Mamonsu (scris în Python) vă permite să configurați setările PostgreSQL și de monitorizare a sistemului de operare în cinci minute.

Mamonsu are instrumente suplimentare:

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

Mamonsu este instalat pe serverul DBMS, colectează informații, le compune în JSON, care le trimite către Zabbix Server pentru vizualizare, unde ar trebui să existe un șablon pentru metricile sale.

Monitorizarea PostgreSQL folosind Zabbix

Schema de lucru Mamonsu

Caracteristici Mamonsu

  • Lucru eficient cu PostgreSQL. O conexiune persistentă la PostgreSQL este principalul avantaj al Mamonsu. În acest caz, numărul maxim de conexiuni este egal cu numărul maxim de baze de date la care se conectează.
  • Extensibilitate. Mamonsu este un agent complet „plugin” și, datorită structurii fixe a fiecărui plugin și simplității relative a lui Python, se poate învăța cu ușurință cum să scrieți noi sau să editați pluginuri standard, adică parametrii de colectare a valorilor.
  • Acoperire largă a valorilor de monitorizare pentru PotgreSQL, inclusiv metrici specifice extensiilor.
  • Lansare rapidă, disponibilitate din cutie.
  • Încărcarea șabloanelor și fișierelor de configurare, precum și încărcarea pe serverul Zabbix.
  • Cross-platform, ceea ce este important pentru clienții noștri care folosesc diverse distribuții Linux, inclusiv cele domestice.
  • Licență cu clauză BSD.

În acest moment oferim o mulțime de plugin-uri și în fiecare versiune următoare încercăm să adăugăm ceva nou.

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

Mamonsu colectează peste 110 de valori PostgreSQL și sisteme de operare:

  • 70 de valori PostgreSQL,
  • 40 de metrii OS Linux,
  • 8 valori ale sistemului de operare Windows.

Valorile cheie includ disponibilitatea DBMS, numărul de conexiuni, dimensiunea bazei de date, punctele de control, viteza de citire/scriere, blocări, numărul de procese de autovacuum și viteza de generare WAL. O listă completă a valorilor disponibile, precum și o descriere detaliată a tuturor instrumentelor, sunt disponibile în depozite pe site-ul GitHub.

Monitorizarea PostgreSQL folosind Zabbix

Lista de valori disponibile pe GitHub

Rulați Mamonsu în 5 minute

Pentru a configura monitorizarea PostgreSQL și a sistemului de operare folosind Mamonsu, o puteți face în 5 minute urmând 5 pași simpli.

  1. Instalarea Mamonsu. Mamonsu poate fi construit din sursă sau poate folosi pachetele disponibile.

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

build && python setup.py install

  1. Configurarea conexiunii. Este necesar să setați parametrii de conexiune pentru PostgreSQL și Zabbix Server în fișierul agent.conf.

/etc/mamonsu/agent.conf

  1. Exportați șablonul pe serverul Zabbix.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Adăugarea unei gazde la Zabbix Server. Șablonul exportat va fi conectat automat la noua gazdă pe serverul Zabbix.

$ mamonsu zabbix host create mamonsu-demo

  1. lansa.

$ service mamonsu start

Direcții de dezvoltare Mamonsu

Ca parte a dezvoltării Mamonsu, intenționăm să rafinăm valorile și să creăm noi pluginuri, cum ar fi un plugin pentru monitorizarea dimensiunii tabelelor individuale. De asemenea, intenționăm să îmbunătățim și să creăm instrumente suplimentare, precum și să extindem capabilitățile de reglare automată prin comandă mamonsu tune.

Modulul de monitorizare PostgreSQL ca parte a Agentului Zabbix 2

Un driver rapid și popular este utilizat pentru a vă conecta la PostgreSQL pgx (driver PG și set de instrumente pentru Go).

Până acum, folosim două interfețe: Exporter, care apelează handler-ul prin cheie, și Configurator Zabbix Agent 2, care citește și verifică parametrii de conexiune cu serverul specificat în fișierul de configurare.

Am încercat să optimizăm activitatea SGBD prin gruparea valorilor și utilizând un handler (handler) pentru metrici și grupuri de metrici, precum și folosind grupuri de metrici în JSON ca variabile dependente (articole de dependență) și descoperire la nivel scăzut (reguli de descoperire). ).

Caracteristici cheie

  • menținerea unei conexiuni persistente la PostgreSQL între verificări;
  • suport pentru intervale flexibile de interogare;
  • compatibilitate cu versiunile PostgreSQL începând de la 10 și Zabbix Server începând cu versiunea 4.4;
  • capacitatea de a conecta și monitoriza mai multe instanțe PostgreSQL în același timp datorită faptului că Zabbix Agent 2 vă permite să creați mai multe sesiuni.

Nivelurile parametrilor de conexiune PostgreSQL

În total, sunt disponibile trei niveluri de parametri de conexiune PostgreSQL, adică sarcini și setări:

  • Per total,
  • Sesiuni,
  • Macrocomenzi.

  1. Parametrii Globali sunt setati la nivel de agent, parametrii Sesiune si Macro-uri definesc parametrii conexiunii la baza de date.

  2. Parametrii de conexiune la PostgreSQL - Sesiunile sunt setate în fișier zabbix_agent2.conf.

Monitorizarea PostgreSQL folosind Zabbix

Opțiuni de conexiune PostgreSQL - Sesiuni

  • După cuvânt cheie Sesiuni este specificat un nume de sesiune unic, care trebuie specificat în cheie (șablon).
  • Parametrii URI и Nume de utilizator necesare pentru fiecare sesiune.
  • Dacă numele de bază nu este specificat, este folosit numele de bază comun implicit pentru toate sesiunile PostgreSQL, care este, de asemenea, setat în fișierul de configurare.

  1. Parametrii de conexiune la PostgreSQL - Macro-urile sunt setate în cheia metrică din șablon (similar cu metoda utilizată în Zabbix Agent 1), adică sunt creați în șablon și apoi specificati ca parametri în cheie. În acest caz, secvența macrocomenzilor este fixă, adică, de exemplu, URI mereu listat primul.

Monitorizarea PostgreSQL folosind Zabbix

Parametrii de conexiune PostgreSQL - Macro-uri

Modulul de monitorizare PostgreSQL include deja peste 95 de metrici care vă permit să acoperiți o gamă destul de largă de parametri PostgreSQL, inclusiv:

  • numărul de conexiuni
  • dimensiunea bazei de date,
  • arhivarea fișierelor wal,
  • puncte de control,
  • numărul de mese „umflate”,
  • starea de replicare,
  • întârziere replica.

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

Handler

Handler-ul este unitatea principală a modulului în care se execută cererea în sine și care vă permite să primiți metrici.

Pentru a obține o valoare simplă:

  1. Creați un fișier pentru a obține o nouă valoare:

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

  1. Conectăm pachetul și specificăm cheia unică (cheile) pentru metrici:

Monitorizarea PostgreSQL folosind Zabbix

  1. Creăm un handler (handler) cu o cerere, adică inițiem o variabilă care va conține rezultatul:

Monitorizarea PostgreSQL folosind Zabbix

  1. Executam cererea:

Monitorizarea PostgreSQL folosind Zabbix

Este necesar să verificați cererea de erori, după care rezultatul va fi preluat de procesul Zabbix Agent 2.

  1. Înregistrați noua cheie de măsură:

Monitorizarea PostgreSQL folosind Zabbix

După înregistrarea valorii, puteți reconstrui agentul cu noua măsură.

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

Vă mulțumim pentru atenție!

Link-uri utile

GitHub Mamonsu

Documentatie Mamonsu

Zabbix Git

Sursa: www.habr.com

Adauga un comentariu