
Raporti i Darya Vilkovaya për Zabbix Meetup Online
Dëshiroj t'ju prezantoj me një mjet monitorimi për PostgreSQL dhe sistemin operativ, që po zhvillohet nga kompania jonë duke përdorur Zabbix.
E kemi zgjedhur Zabbix si mjet monitorimi shumë kohë më parë, sepse është një platformë me burim të hapur, e mbështetur nga një komunitet aktiv, që g Enjoyin popullaritet të madh në Rusi.
Kemi krijuar njĂ« agjent aktiv â Mamonsu, i cili ofronte monitorim mĂ« fleksibĂ«l se ç'kĂ«shtu lejonin mjetet standarde nĂ« atĂ« kohĂ« dhe siguronte mbledhjen e metrikeve dhe dĂ«rgimin e tyre nĂ« Zabbix Server. NĂ« kompaninĂ« tonĂ«, Mamonsu pĂ«rdoret gjatĂ« auditimit.
Mamonsu
Mamonsu është një agjent aktiv (Zabbix Trapper) për monitorimin e PostgreSQL dhe sistemit operativ. Mamonsu (i shkruar në Python) lejon të konfigurohen parametrat e monitorimit për PostgreSQL dhe sistemin operativ brenda pesë minutash.
Mamonsu posedon mjete shtesë:
- mamonsu tune â njĂ« komandĂ« qĂ« redakton parametrat e konfigurimit nĂ« skedarin e konfigurimit tĂ« PostgreSQL pĂ«r makinat ku Ă«shtĂ« instaluar agjenti Mamonsu.
- mamonsu report â njĂ« komandĂ« qĂ« krijon raporte rreth sistemit operativ dhe PostgreSQL.
Mamonsu instalohet në serverin e DBMS, mbledh informacionin, e kompoziton atë në JSON, të cilin e dërgon për vizualizim në Zabbix Server, ku duhet të ketë një template për metrike të tij.

Skema e funksionimit të Mamonsu
Mundësitë e Mamonsu
- Përgjegjshmëria efektive me PostgreSQL. Këtu, lidhja e vazhdueshme me PostgreSQL është avantazhi kryesor i Mamonsu. Ndërkohë, numri maksimal i lidhjeve është i barabartë me numrin maksimale të bazave të të dhënave me të cilat ai lidhet.
- Zgjerueshmëria. Mamonsu është një agjent plotësisht "plugin", dhe falë strukturës së fixuar të çdo plugini dhe thjeshtësisë relative të Python, është e lehtë të mësoni si të shkruani të rinj ose të redaktoni pluginat standardë, dmth parametrat e mbledhjes së metrikeve.
- Kapacitet të gjerë të metrikeve për monitorim për PostgreSQL, përfshirë edhe metrikat specifike për zgjerime.
- Nisje e shpejtë, disponueshmëri "nga kutia".
- Shkarkimi i-templateve dhe skedarëve të konfigurimit, si dhe ngarkimi në Zabbix Server.
- Kros-platformë, që është e rëndësishme për klientët tanë, të cilët përdorin distribucione të ndryshme Linux, përfshirë ato vendase.
- Licencë BSD-clause.
Aktualisht ofrojmë shumë plugina dhe në çdo version të ardhshëm përpiqemi të shtojmë diçka të re.
- 14 plugina për PostgreSQL,
- 8 plugina për OS Linux,
- 4 plugina për OS Windows.
Mamonsu mbledh më shumë se 110 metrika për PostgreSQL dhe sistemet operuese:
- 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, kontrollin, shpejtësinë e leximit/shkrimit, bllokimet, numrin e proceseve autovacuum dhe shpejtësinë e gjenerimit të WAL. Lista e plotë e metrikeve të disponueshme, si dhe përshkrimi i detajuar i të gjitha mjeteve është në faqen GitHub.

Lista e metrikeve të disponueshme në faqen GitHub
Nisja e Mamonsu për 5 minuta
Për të konfiguruar monitorimin e PostgreSQL dhe sistemit operativ me Mamonsu mund të bëhet brenda 5 minutash duke ndjekur 5 hapa të thjeshtë.
- Instalimi i Mamonsu. Mamonsu mund të ndërtohet nga kodi burimor ose të përdoren paketat e disponueshme.
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- Konfigurimi i lidhjeve. Duhet të jepni parametrat e lidhjes me PostgreSQL dhe Zabbix Server në skedarin agent.conf.
/etc/mamonsu/agent.conf
- Eksportimi i modelit në Zabbix Server.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- Shtimi i një nodi rrjeti në Zabbix Server. Modeli i eksportuar do të lidhet automatikisht me nodin e ri në Zabbix Server.
$ mamonsu zabbix host create mamonsu-demo
- Nisja.
$ 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ë plugina të rinj, siç është plugin për monitorimin e madhësisë së tabelave të veçanta. Ne gjithashtu planifikojmë të përmirësojmë dhe të krijojmë mjete të tjera, si dhe të zgjerojmë mundësitë e vetëkonfigurimit përmes komandës mamonsu tune.
Moduli i monitorimit PostgreSQL si pjesë e Zabbix Agent 2
Për lidhjen me PostgreSQL përdoret një driver i shpejtë dhe i njohur (PG driver dhe toolkit për Go).
Aktualisht ne përdorim dy ndërfaqe: Eksportues, i cili thërret trajtuesin me çelës, dhe Konfiguruesi Zabbix Agent 2, i cili lexon dhe kontrollon parametrat e lidhjes me serverin, të vendosur në skedarin e konfigurimit.
Ne kemi përpiquar të optimizojmë funksionimin e DBMS duke grupuar metrikat dhe duke përdorur trajtues (handler) për metrikat dhe grupet e metrikeve, si dhe duke përdorur grupe metrikash në JSON si variabla të varura (dependency items) dhe zbulesë të niveleve të ulëta (discovery rules).
Veçoritë kryesore
- ruajtja e një lidhjeje të qëndrueshme me PostgreSQL midis kontrolleve;
- mbështetje për intervale fleksibile sondazhi;
- kompatibiliteti 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 sesioneve.
Nivelet e parameterëve të lidhjes me PostgreSQL
Ka gjithsej tre nivele parameteresh lidhjeje me PostgreSQL, dmth. detyrat dhe konfigurimet:
- Global,
- Sesione,
- Makro.
Parametrat Global vendosen në nivelin e agentit, parametrat Sesion dhe Makro përcaktojnë parametrat e lidhjes me bazën.
Parametrat e lidhjes me PostgreSQL â Sesionet vendosen nĂ« skedarin zabbix_agent2.conf.

Parametrat e lidhjes me PostgreSQL â Sesionet
- Pas fjalës kyçe Sesione jepet një emër unik sesi që duhet të përmendet në çelës (shabllon).
- Parametrat URI dhe UserName janë të detyrueshme për çdo sesion.
- Nëse emri i bazës nuk është specifikuar, përdoret emri i përgjithshëm i bazës për të gjitha sesionet për PostgreSQL, i cili gjithashtu përcaktohet në skedarin e konfigurimit.
- Parametrat e lidhjes me PostgreSQL â Makro vendosen nĂ« çelĂ«sin e metrikĂ«s nĂ« shabllon (nĂ« mĂ«nyrĂ« tĂ« ngjashme me metodĂ«n e pĂ«rdorur nĂ« Zabbix Agent 1), dmth. krijohen nĂ« shabllon dhe mĂ« pas pĂ«rmenden si parametra nĂ« çelĂ«s. NĂ« tĂ« njĂ«jtĂ«n kohĂ«, rendi i makrove Ă«shtĂ« i fiksuar, dmth., pĂ«r shembull, URI pĂ«rherĂ« pĂ«rmendet nĂ« vendin e parĂ«.

Parametrat e lidhjes me PostgreSQL â Makro
Moduli i monitorimit PostgreSQL përfshin tashmë më shumë se 95 metrika, të cilat lejojnë mbulimin e një sërë të gjerë parametrash PostgreSQL, duke përfshirë:
- numrin e lidhjeve,
- vëllimin e bazave të të dhënave,
- arkivimin e skedarëve wal,
- pikave kontrolluese,
- numrin e tabelave "të fryra",
- statusin e replikimit,
- pasivitetin e replikës.
Metrikat e PostgreSQL nuk janë informuese pa parametrat e sistemit operativ. Por Zabbix Agent 2 tashmë di të mbledhë parametrat e sistemit operativ, kështu që për të marrë një pamje të plotë thjesht lidhni shabllonet e nevojshme me nyjën e rrjetit.
Trajtuesi (handler)
Trajtuesi (handler) â njĂ«sia kryesore e moduli, nĂ« tĂ« cilĂ«n kryhet vetĂ« kĂ«rkesa dhe e cila lejon marrjen e metrikave.
Për të marrë një metrikë të thjeshtë:
- Krijoni një skedar për marrjen e një metrikë të re:
zabbix/src/go/plugins/postgres/handler_uptime.go
- Lidhni paketën dhe përcaktoni çelësin unik (çelësat e) metrikave:

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

- Kryeni kërkesën:

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

Pasi të regjistrohet matja, mund të rikompilohet agjenti me matjen e re.
Moduli është i disponueshëm që nga Zabbix 5.0 në faqen . Në këtë version të Zabbix, parametrat përcaktohen veçmas përmes host dhe port. Në versionin Zabbix 5.0.2, i cili do të publikohet së shpejti, parametrat e lidhjes do të grumbullohen në një URI.
Faleminderit për vëmendjen!
Useful links
Burimi: habr.com
