
Darja Vilkova ettekande Zabbix Meetup Online
Soovin tutvustada teid meie ettevõtte poolt Zabbixi abil arendatava PostgreSQL ja operatsioonisüsteemi jälgimisvahendiga.
Oleme juba ammu valinud Zabbixi jälgimisvahendiks, kuna see on avatud lähtekoodiga platvorm, mida toetab aktiivne kogukond ja mis on Venemaal väga populaarne.
Loomasime aktiivse agendi — Mamonsu, mis pakkus paindlikumat jälgimist, kui toona standardtööriistad võimaldasid, ja kogus mõõdikud ja saatis need Zabbix Serverile. Meie ettevõttes kasutatakse Mamonsut auditeerimise käigus.
Mamonsu
Mamonsu on aktiivne agent (Zabbix Trapper) PostgreSQL ja operatsioonisüsteemi jälgimiseks. Mamonsu (kirjutatud Pythonis) võimaldab seadistada PostgreSQL ja operatsioonisüsteemi jälgimise parameetreid viie minutiga.
Mamonsul on täiendavad tööriistad:
- mamonsu tune — käsk, mis redigeerib PostgreSQL-i konfigureerimisfaili seadistusparameetreid masina jaoks, kuhu Mamonsu agent on paigaldatud.
- mamonsu report — käsk, mis genereerib vastuseid operatsioonisüsteemi ja PostgreSQL kohta.
Mamonsu paigaldatakse andmebaasiserverisse, kogub teavet, koostab selle JSON-formaadis ja saadab visualiseerimiseks Zabbix Serverile, kus peab olema olemas šabloon selle mõõdikute jaoks.

Mamonsu töötsükkel
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 andmebaaside arvuga, millega see on ühendatud.
- Laaditavus. Mamonsu on täielikult „pluginne“ agent ja iga plugina fikseeritud struktuuri ning Python’i suhteliselt lihtsa õppimise tõttu on lihtne luua uusi või redigeerida olemasolevaid pluginaid, st mõõdikute kogumise parameetreid.
- Lai mõõdikute katvus jälgimiseks sealhulgas PotgreSQL spetsiifiliste laienduste mõõdikud.
- Kiire käivitus, ootetavus „karbis“.
- Šabloonide ja konfigureerimisfailide eksportimine, samuti laadimine Zabbix Serverisse.
- Ristplatvormilisus, mis on oluline meie klientidele, kes kasutavad erinevaid Linuxi distributsioone, sealhulgas kodumaiseid.
- BSD-litsents.
Praegu pakume mitmeid pluginaid ja iga järgmise versiooniga 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 meetri:
- 70 PostgreSQL meetrit,
- 40 meetrit OS Linuxile,
- 8 meetrit OS Windowsile.
Põhilised meetrid hõlmavad andmebaasi kättesaadavust, ühenduste arvu, andmebaasi suurust, kontrolle, lugemis-/kirjutamiskiirus, lukustusi, automaatse tühjendamise protsesside arvu ja WAL-i genereerimise kiirus. Täielik loetelu saadaval olevatest meetritest ja kõigi tööriistade üksikasjalik kirjeldus on saadaval GitHubi lehelt.

Saadaval olevate meetrite loetelu GitHubi lehelt
Mamonsu käivitamine 5 minutiga
PostgreSQL ja operatsioonisüsteemi jälgimise seadistamine Mamonsuga võtab vaid 5 minutit, järgides 5 lihtsat sammu.
- Mamonsu paigaldamine. Mamonsu on võimalik ehitada allikakoodist 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 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. Eksportitud mall ühendatakse automaatselt uue võrgu sõlmekohta Zabbix Serverisse.
$ mamonsu zabbix host create mamonsu-demo
- Käivitamine.
$ service mamonsu start
Mamonsu arengu suunad
Mamonsu arendamise raames plaanime täiustada mõõdikuid ja luua uusi pluginaid, näiteks eraldi tabelite suuruse jälgimise plugina. Samuti plaanime täiustada ja luua täiendavaid tööriistu ning laiendada automaatse seadistamise võimalusi käsu 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 kahte liidest: Exporter, mis kutsub käitlejat võtme kaudu, ja Zabbix Agent 2 Configurator, mis loeb ja kontrollib konfiguratsioonifailis määratud ühenduse parameetreid serveriga.
Oleme püüdnud optimeerida andmebaasi tööd, grupeerides meetrid ja kasutades käitlejat (handler) meetrite ja meetrigrupikohta, samuti kasutades JSON sarnaseid madala taseme avastamise ja sõltuvate elementidena (dependency items).
Põhiomadused
- püsiva ühenduse loomine PostgreSQL-iga kontrollide vahel;
- paindlike küsitluste intervallide toetamine;
- ühilduvus PostgreSQL versioonidega alates 10 ja Zabbix Serveriga alates versioonist 4.4;
- võimalus ühendada ja monitorida mitut PostgreSQL instantsi korraga, kuna Zabbix Agent 2 võimaldab luua mitu seanssi.
PostgreSQL ühenduse parameetrite tasemed
Kokku on saadaval kolm PostgreSQL ühenduse parameetrite taset, st ülesandeid ja seadistusi:
- Globaalne,
- Seansid,
- Makrod.
Globaalsete parameetrite määramine toimub agendi tasemel, seansi ja makrode parameetrid määravad ühenduse parameetrid andmebaasi.
PostgreSQL ühenduse parameetrid — Seansid määratakse failis zabbix_agent2.conf.

PostgreSQL ühenduse parameetrid — Seansid
- Pärast võtit Seansid määra unikaalne seansi nimi, mis peab olema määratud võtmes (mallis).
- Parameetrid URI ja Kasutajanimi on iga seansi jaoks kohustuslikud.
- Kui andmebaasi nimetus ei ole määratud, kasutatakse PostgreSQL kõikide seansside jaoks üldist vaike nime, mis on samuti määratud konfiguratsioonifailis.
- PostgreSQL ühenduse parameetrid — Makrod määratakse mõõdiku võtmes mallis (sarnaselt Zabbix Agent 1 kasutatud meetodile), st need luuakse mallis ja seejärel määratakse võtme parameetriteks. Samal ajal on makrode järjestus fikseeritud, st näiteks URI määratakse alati esimesena.

PostgreSQL ühenduse parameetrid — Makrod
PostgreSQL jälgimismoodul sisaldab juba üle 95 mõõdiku, mis võimaldavad katta üsna laia PostgreSQL parameetrite valikut, sealhulgas:
- ühenduste arv,
- andmebaaside maht,
- wal-failide arhiivimine,
- kontrollpunktid,
- pärli paisunud tabelite arv,
- replitseerimise staatus,
- repliikkaotuse viivitus.
PostgreSQL mõõdikud ei ole informatiivsed ilma operatsioonisüsteemi parameetriteta. Kuid Zabbix Agent 2 oskab juba koguda operatsioonisüsteemi parameetreid, seega saame lihtsalt vajalikud mallid võrgu sõlmele ühendada, et saada täielik ülevaade.
Käsitseja (handler)
Käsitseja (handler) — mooduli peamine element, kus toimub päring ja mis võimaldab mõõdikute saamist.
Et saada lihtne mõõdik:
- Loo fail uue mõõdiku jaoks:
zabbix/src/go/plugins/postgres/handler_uptime.go
- Ühenda pakk ja määra unikaalne mõõdiku võti (võtmed):

- Loo käsitseja (handler) päringuga, st koosta muutuja, kuhu tulemus läheb:

- Tee päring:

On vajalik kontrollida päringut vigade osas, pärast mida tulemus võetakse üle Zabbix Agent 2 protsessi poolt.
- Registreerime uue mõõdiku võtme:

Mõõdiku registreerimise järel on võimalik agent uuesti kompileerida koos uue mõõdiku.
Moodul on saadaval alates Zabbix 5.0 veebilehel . Selles versioonis seadistatakse Zabbixi parameetrid eraldi hosti ja pordi kaudu. Versioonis Zabbix 5.0.2, mis tuleb peagi välja, komponeeritakse ühenduse parameetrid ühte URI-sse.
Aitäh tähelepanu eest!
Kasulikud lingid
Allikas: habr.com
