
Raporti i Darya Vilkovaya për Zabbix Meetup Online
Dua t'ju prezantoj me një mjet monitorimi për PostgreSQL dhe sistemin operativ, i cili po zhvillohet nga kompania jonë duke përdorur Zabbix.
E kemi zgjedhur Zabbix si mjet monitorimi prej kohësh, sepse është një platformë me burim të hapur, e mbështetur nga një komunitet aktiv, e cila gëzon një popullaritet të madh në Rusi.
Krijuam njĂ« agjent aktiv â Mamonsu, i cili siguron monitorim mĂ« fleksibĂ«l se sa lejonin mjetet standarde atĂ«herĂ« dhe siguron grumbullimin e metrikeve dhe dĂ«rgimin e tyre nĂ« Zabbix Server. NĂ« kompaninĂ« tonĂ«, Mamonsu pĂ«rdoret gjatĂ« auditit.
Mamonsu
Mamonsu është një agjent aktiv (Zabbix Trapper) për monitorimin e PostgreSQL dhe sistemit operativ. Mamonsu (i shkruar në Python) ju lejon të konfiguroni parametrat e monitorimit të PostgreSQL dhe sistemit operativ brenda pesë minutash.
Mamonsu ka mjete shtesë:
- mamonsu tune â komandĂ« qĂ« redakton parametrat e konfigurimit nĂ« skedarin e konfigurimit tĂ« PostgreSQL pĂ«r makinĂ«n ku Ă«shtĂ« instaluar agjenti Mamonsu.
- raporti mamonsu â njĂ« ekip qĂ« krijon pĂ«rgjigje pĂ«r sistemin operativ dhe PostgreSQL.
Mamonsu instalohet në serverin e DBMS, mbledh informacionin, e kompozon atë në JSON, i cili dërgohet për vizualizim në Zabbix Server, ku duhet të ekzistojë një shabllon për metrikat e tij.

Skema e funksionimit të Mamonsu
Mundësitë e Mamonsu
- Puna efektive me PostgreSQL. Lidhja e vazhdueshme me PostgreSQL është avantazhi kryesor i Mamonsu. Ndërkohë, numri maksimal i lidhjeve është i barabartë me numrin maksimal të bazave të të dhënave, të cilave i është lidhur.
- Zgjerueshmëria. Mamonsu është një agjent plotësisht "plugin", dhe falë strukturës fikse të çdo plugin-i dhe thjeshtësisë relative të Python, është e lehtë të mësohesh të shkruash të reja ose të redaktosh standardet e plugini, dmth parametrat e mbledhjes së metrikave.
- Gjerësia e mbulimit të metrikave për monitorim për PostgreSQL përfshirë metrika specifike të zgjerimeve.
- Fillim i shpejtë, disponueshmëria "nga kutia".
- Shkarkimi i shablloneve dhe skedarëve të konfigurimeve, si dhe ngarkimi në Zabbix Server.
- Kros-platformës, që është e rëndësishme për klientët tanë që përdorin distribucione të ndryshme Linux, përfshirë ato vendore.
- licenca BSD-clause.
Aktualisht ofrojmë një shumëllojshmëri plugin-ësh, dhe në çdo version të ri përpiqemi të sjellim diçka të re.
- 14 plugin-a për PostgreSQL,
- 8 plugin-a për OS Linux,
- 4 plugin-a për OS Windows.
Mamonsu mbledh më shumë se 110 metrika PostgreSQL dhe operative:
- 70 metrika PostgreSQL,
- 40 metrika OS Linux,
- 8 metrika OS Windows.
Metrikat kryesore përfshijnë disponueshmërinë e DBMS, numrin e lidhjeve, madhësinë e bazës së të dhënave, piketat, shpejtësinë e leximit/shkruarjes, bllokimet, numrin e proceseve të avtokohes dhe shpejtësinë e gjenerimit të WAL. Lista e plotë e metrikave në dispozicion dhe përshkrimi i detajuar i të gjitha mjeteve janë të disponueshme në faqen GitHub.

Lista e metrikave në faqen GitHub
Kryeni Mamonsu brenda 5 minutash
Për të konfiguruar monitorimin e PostgreSQL dhe sistemit operative me Mamonsu, mund ta bëni brenda 5 minutash duke e ndjekur 5 hapa të thjeshtë.
- Instalimi i Mamonsu. Mamonsu mund të ndërtohet nga kodet burimore ose të përdorni paketat e disponueshme.
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- Konfigurimi i lidhjeve. Duhet të shkruani parametrat e lidhjes me PostgreSQL dhe Zabbix Server në skedarin agent.conf.
/etc/mamonsu/agent.conf
- Eksportimi i shabllonit në Zabbix Server.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- Shtimi i nodit të rrjetit në Zabbix Server. Shablloni i eksportuar do të lidhet automatikisht me nyjën e re të rrjetit në Zabbix Server.
$ mamonsu zabbix host create mamonsu-demo
- Fillimi.
$ service mamonsu start
Direktivat e zhvillimit të Mamonsu
Në kuadër të zhvillimit të Mamonsu, ne planifikojmë të përmirësojmë metrikat dhe të krijojmë plugins të rinj, për shembull, një plugin për monitorimin e madhësisë së tabelave individuale. Ne gjithashtu planifikojmë të përmirësojmë dhe të krijojmë mjete të tjera, si dhe të zgjerim mundësitë e vetëkonfigurimit përmes komandës mamonsu tune.
Moduli i monitorimit PostgreSQL në përbërje të Zabbix Agent 2
Për lidhjen me PostgreSQL përdoret një drejtuese e shpejtë dhe të njohur (PG driver dhe toolkit për Go).
Aktualisht ne përdorim dy ndërfaqe: Exporter, i cili thërret një procesor sipas çelësit, dhe Configurator Zabbix Agent 2, i cili lexon dhe kontrollon parametrat e lidhjes me serverin, të cilat janë të dhëna në skedarin e konfigurimit.
Ne u përpoqëm të optimizojmë punën e DBMS duke grupuar metrikat dhe duke përdorur një procesor (handler) për metrikat dhe grupet e metrikave, si dhe duke përdorur grupe metrikash në JSON si variabla të varura (dependency items), dhe zbuluar me nivel të ulët (discovery rules).
Përgjegjësi kryesore
- mbajtja e një lidhjeje të qëndrueshme me PostgreSQL mes kontrolleve;
- mbështetje për intervale fleksibël të pyetjeve;
- kompatibilitet me versionet PostgreSQL, duke filluar nga 10, dhe Zabbix Server, duke filluar nga versioni 4.4;
- mundësia për të lidhur dhe monitoruar disa instanca PostgreSQL njëkohësisht, falë faktit se Zabbix Agent 2 lejon krijimin e disa seancave.
Nivelet e parametrit të lidhjes me PostgreSQL
Disponohen gjithsej tre nivele të parametrave të lidhjes me PostgreSQL, domethënë detyrat dhe configurimet:
- Global,
- Sessions,
- Macros.
Parametrat Global përcaktohen në nivelin e agentit, ndërsa parametrat Session dhe Macros përcaktojnë parametrat e lidhjes me databazën.
Parametrat e lidhjes me PostgreSQL â Sessions pĂ«rcaktohen nĂ« skedarin zabbix_agent2.conf.

Parametrat e lidhjes me PostgreSQL â Sessions
- Pas fjalës kyçe Sessions shkruhet një emër unik seance, e cila duhet të jetë e specifikuar në çelës (shablon).
- Parametrat URI dhe UserName janë të detyrueshme për çdo seancë.
- Nëse emri i bazës nuk është përcaktuar, përdoret emri i përgjithshëm si parazgjedhje për të gjitha seancat për PostgreSQL, i cili përcaktohet gjithashtu në skedarin e konfigurimit.
- Parametrat e lidhjes me PostgreSQL - Makroset përcaktohen në çelësin e metrikës në model (në mënyrë analogjike me metodën e përdorur në Zabbix Agent 1), dmth. krijohen në model dhe më pas shënohen si parametra në çelës. Në këtë rast, rendi i makrove është i fiksuar, dmth. për shembull, URI gjithmonë shënohet në vendin e parë.

Parametrat e lidhjes me PostgreSQL - Makroset
Moduli i monitorimit PostgreSQL përfshin më shumë se 95 metrika, të cilat lejojnë mbulimin e një numri të gjerë parametrash të PostgreSQL, duke përfshirë:
- numrin e lidhjeve,
- volumin e bazave të të dhënave,
- arkivimin e dosjeve wal,
- pikë kontrolli,
- numrin e âshkallĂ«zuarâ tĂ« tabelave,
- statusin e replikimit,
- të vonesës së replikës.
Metrikat e PostgreSQL nuk janë informative pa parametrat e sistemit operativ. Por Zabbix Agent 2 tashmë di të mbledhë parametrat e sistemit operativ, prandaj për të marrë një pamje të plotë thjesht lidhim modelet e nevojshme në nyjën e rrjetit.
Menaxhuesi (handler)
Menaxhuesi (handler) - njësi kryesore e modulit, në të cilën ekzekutohet kërkesa vetë dhe që lejon marrjen e metrikave.
Për të marrë një metrikë të thjeshtë:
- Krijojmë një file për të marrë një metrikë të re:
zabbix/src/go/plugins/postgres/handler_uptime.go
- Lidhim paketën dhe tregojmë çelësin unik (çelësat) të metrikave:

- Krijojmë një trajtues (handler) me kërkesën, dmth. iniciativë një variabël në të cilën do të jetë rezultati:

- Kryejmë kërkesën:

Duhet të kontrollojmë kërkesën për gabime, pas së cilës rezultati do të kapet nga procesi Zabbix Agent 2.
- Regjistrojmë çelësin e metrikës së re:

Pas regjistrimit të metrikës, mund të rindërtojmë agjentin me metrikën e re.
Moduli është i disponueshëm, duke filluar nga Zabbix 5.0 në faqen . Në këtë version, Zabbix parametrat caktohen veçmas përmes host dhe port. Në versionin Zabbix 5.0.2, e cila do të publikohet së shpejti, parametrat e lidhjes do të kompozohen në një URI të vetëm.
Faleminderit për vëmendjen!
Linqe të dobishme
Burimi: habr.com
