
Darya Vilkova ettekande Zabbix Meetup Online
Soovin tutvustada teid PostgreSQL ja operatsioonisüsteemi monitorimise tööriistaga, mida arendab meie ettevõte Zabbix'i abil.
Meie valik Zabbix'i monitorimise vahendiks langes juba ammu, sest see on avatud lähtekoodiga platvorm, mida toetab aktiivne kogukond ning see on Venemaal väga populaarne.
Loodud on meie aktiivne agent — Mamonsu, mis tagas paindlikuma monitorimise võrreldes standartsete tööriistadega ning viis läbi mõõtmete kogumise ja nende edastamise Zabbix Serverile. Meie ettevõttes kasutatakse Mamonsut auditi läbiviimisel.
Mamonsu
Mamonsu on aktiivne agent (Zabbix Trapper) PostgreSQL ja operatsioonisüsteemi monitorimiseks. Mamonsu (kirjutatud Pythonis) võimaldab seadistada PostgreSQL ja operatsioonisüsteemi monitorimise parameetreid viie minutiga.
Mamonsu-l on täiendavad tööriistad:
- mamonsu tune — käsk, mis redigeerib PostgreSQL konfiguratsioonifaili seadistuse parameetreid masinasse, kuhu Mamonsu agent on paigaldatud.
- mamonsu raport — meeskond, mis loob vastuseid operatsioonisüsteemi ja PostgreSQL kohta.
Mamonsu installitakse andmebaasiserverisse, kogub teavet, koostab selle JSON-formaadis ja saadab visualiseerimiseks Zabbix Serverile, kus peab olema mall tema mõõdikute jaoks.

Mamonsu töövõte
Mamonsu võimalused
- Tõhus töö PostgreSQL-iga. Püsiv ühendus PostgreSQL-iga on Mamonsu peamine eelis. Samuti on maksimaalne ühenduste arv võrdne maksimaalse arvu andmebaasidega, millega ta on ühendatud.
- Skaleeritavus. Mamonsu on täielikult „pluginne“ agent, ja igas plugina fikseeritud struktuuri ning Python'i suhteliselt lihtsuse tõttu on lihtne õppida kirjutama uusi või redigeerima standardpluginaid, st mõõdikute kogumise parameetreid.
- Laiaulatuslik mõõdikute katvus jälgimiseks sealhulgas PostgreSQL spetsiaalsete laiendite mõõdikud.
- Kiire käivitamine, valmidus „karbist välja“.
- Mallide ja konfigureerimisfailide eksportimine, samuti laadimine Zabbix Serverisse.
- Platvormidevaheline ühilduvus, mis on oluline meie klientidele, kes kasutavad erinevaid Linuxi jaotusi, sealhulgas kohalikke.
- BSD-klausli litsents.
Hetkel pakume mitmeid pluginaid ja iga järgmise versiooni puhul püüame lisada midagi uut.
- 14 pluginaid PostgreSQL jaoks,
- 8 pluginaid OS Linuxile,
- 4 pluginaid OS Windowsile.
Mamonsu kogub üle 110 PostgreSQL ja operatsioonisüsteemide mõõdiku:
- 70 PostgreSQL mõõdikut,
- 40 OS Linuxi mõõdikut,
- 8 OS Windowsi mõõdikut.
Peamised mõõdikud hõlmavad andmebaasi kättesaadavust, ühenduste arvu, andmebaasi suurust, kontrollpunkte, lugemis-/kirjutamiskiirust, lukustusi, automaatse vakuumi protsesside arvu ja WAL-i genereerimise kiirus. Täielik loetelu saadaval olevatest mõõdikutest ja kõikide tööriistade üksikasjalik kirjeldus on saadaval GitHubi lehelt.

Saadavate mõõdikute loetelu GitHubis
Mamonsu käivitamine 5 minutiga
PostgreSQL ja operatsioonisüsteemi jälgimise seadistamine Mamonsu abil on võimalik 5 minutiga, järgides 5 lihtsat toimingut.
- Mamonsu installimine. Mamonsu saab kokku panna allikatest või kasutada saadaval olevaid pakette.
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- Ühenduste seadistamine. On vajalik määrata PostgreSQL-i ja Zabbix Serveri ühenduse parameetrid failis agent.conf.
/etc/mamonsu/agent.conf
- Mallide eksportimine Zabbix Serverisse.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- Võrgu sõlme lisamine Zabbix Serverisse. Eksporditud mall ühendatakse automaatselt uue võrgu sõlmega Zabbix Serveris.
$ mamonsu zabbix host create mamonsu-demo
- Käivita.
$ service mamonsu start
Mamonsu arengusuunad
Mamonsu arendamise käigus plaanime täiustada mõõdikuid ja luua uusi pluginaid, näiteks üksikute tabelite mõõtmise pluginat. Pluss, kavatseme täiustada ja luua täiendavaid tööriistu ning laiendada autotäiendamise võimalusi käsuga mamonsu tune.
PostgreSQL jälgimise moodul Zabbix Agent 2 koosseisus
PostgreSQL-iga ühenduse loomiseks kasutatakse kiiret ja populaarset draiverit (PG draiver ja tööriistakomplekt Go jaoks).
Praegu kasutame kaht liidest: Exporter, mis kutsub üles töötlejat võtme järgi, ja Configurator Zabbix Agent 2, mis loeb ja kontrollib serveriga ühenduse parameetreid, mis on määratud konfiguratsioonifailis.
Oleme püüdnud optimeerida andmebaasi tööd, grupeerides mõõdikuid ja kasutades mõõdikute ja mõõdikutega rühmade jaoks töötlejat (handler), samuti kasutades JSON-is mõõdiku gruppe sõltumatute muutujatena (dependency items) ja madala taseme avastamist (discovery rules).
Peamised funktsioonid
- püsiva ühenduse hoidmine PostgreSQL-iga kontrollide vahel;
- paindlike küsitlusintervallide tugi;
- ühilduvus PostgreSQL versioonidega alates 10 ja Zabbix Server versiooniga alates 4.4;
- võimalus ühendada ja jälgida mitut PostgreSQL instantsi samal ajal, kuna Zabbix Agent 2 võimaldab luua mitu sessiooni.
PostgreSQL ühendusparameetride tasemed
Saadaval on kokku kolm ühendusparameetrite taset, st ülesanded ja seaded:
- Globaalne,
- Seansid,
- Makrod.
Globaalsete parameetrite sätted määratakse agendi tasemel, seansside ja makrode parameetrid määravad andmebaasi ühenduse parameetrid.
PostgreSQL ühendusparameetrid — seansid määratakse failis zabbix_agent2.conf.

PostgreSQL ühendusparameetrid — seansid
- Pärast märksõna Seansid kirjutatakse unikaalne seansi nimi, mis peab olema määratud võtmes (šablonis).
- Parameetrid URI ja Kasutajanimi on iga seansi jaoks kohustuslikud.
- Kui andmebaasi nime ei ole määratud, kasutatakse kõigile seanssidele ühise vaike nime, mis on samuti määratud konfiguratsioonifailis.
- PostgreSQL-i ühenduse parameetrid — makrod määratakse mõõte võtmes šabloonis (sarnane meetodile, mida kasutati Zabbix Agendiga 1), st need luuakse šabloonis ja seejärel märgitakse parameetritena võtmes. Sealjuures on makrode järjestus fikseeritud, st näiteks, URI on alati esimesele kohale märgitud.

PostgreSQL-i ühenduse parameetrid — makrod
PostgreSQL-i jälgimismodul sisaldab juba üle 95 mõõtmise, mis katab üsna laia valikut PostgreSQL-i parameetreid, sealhulgas:
- ühenduste arv,
- andmebaaside maht,
- wal-failide arhiveerimine,
- kontrollpunktid,
- „paisunud” tabelite arv,
- replikatsiooni staatus,
- replika viivitus.
PostgreSQL-i mõõdikud ei ole informatiivsed ilma operatsioonisüsteemi parameetriteta. Kuid Zabbix Agent 2 oskab juba koguda operatsioonisüsteemi parameetreid, seega, et saada täielik ülevaade, ühendame lihtsalt võrku vajalikud šabloonid.
Käitleja (handler)
Käitleja (handler) — moduli põhielement, kus toimub päring ning mis võimaldab saada mõõdetavaid andmeid.
Lihtsa mõõdiku saamiseks:
- Loome faili uue mõõdiku saamiseks:
zabbix/src/go/plugins/postgres/handler_uptime.go
- Ühendame paketi ja määrame ainulaadse võtme (võtmed) mõõdikutele:

- Loome käsitleja (handler) koos päringuga, st algatame muutuja, kuhu tulemus salvestatakse:

- Teostame päringu:

On oluline kontrollida päringut vigade osas, mille järel tõukab tulemuse Zabbix Agent 2 protsess.
- Registreerime uue mõõdiku võtme:

Pärast mõõdiku registreerimist saab agendi koos uue mõõdikuga uuesti kokku panna.
Moodul on saadaval alates Zabbix 5.0-st veebilehel . Selles Zabbixi versioonis määratakse parameetrid eraldi hosti ja porti kaudu. Zabbix 5.0.2 versioonis, mis peagi ilmub, koondatakse ühendamise parameetrid ühte URI-sse.
Aitäh tähelepanu eest!
Kasulikud lingid
Allikas: habr.com
