
Report by Daria Vilkova for Zabbix Meetup Online
I want to introduce you to a monitoring tool for PostgreSQL and the operating system that our company has been developing using Zabbix.
We chose Zabbix as our monitoring tool a long time ago because it is an open-source platform supported by an active community and is very popular in Slovenia.
We created an active agent - Mamonsu, which provided more flexible monitoring than standard tools allowed at that time, collecting metrics and sending them to the Zabbix Server. In our company, Mamonsu is used during audits.
Mamonsu
Mamonsu is an active agent (Zabbix Trapper) for monitoring PostgreSQL and the operating system. Mamonsu (written in Python) allows you to set up PostgreSQL and operating system monitoring parameters in just five minutes.
Mamonsu has additional tools:
- mamonsu tune - command that edits configuration file settings in PostgreSQL for the machine on which the Mamonsu agent is installed.
- mamonsu report - command that creates reports about the operating system and PostgreSQL.
Mamonsu is installed on the DBMS server, collects information, composes it into JSON, and sends it for visualization to the Zabbix Server, where a template for its metrics should exist.

Mamonsu workflow
Mamonsu capabilities
- Effective operation with PostgreSQL. Continuous connection to PostgreSQL is the main advantage of Mamonsu. The maximum number of connections equals the maximum number of databases it connects to.
- Scalability. Mamonsu is a fully 'plugin' agent, and due to the fixed structure of each plugin and the relative simplicity of Python, one can easily learn to write new plugins or modify standard plugins, i.e., metric collection parameters.
- Wide range of metrics for monitoring including metrics for specific extensions for PostgreSQL.
- Quick start, availability 'out of the box'.
- Export of templates and configuration files, as well as uploading them to the Zabbix Server.
- Krosplatformnost, which is important for our clients who use various Linux distributions, including domestic ones.
- BSD-clause license.
Currently, we offer many plugins and try to add something new in each subsequent version.
- 14 vtičnikov za PostgreSQL,
- 8 vtičnikov za OS Linux,
- 4 vtičniki za OS Windows.
Mamonsu zbira več kot 110 metrik PostgreSQL in operacijskih sistemov:
- 70 metrik PostgreSQL,
- 40 metrik OS Linux,
- 8 metrik OS Windows.
Glavne metrike vključujejo razpoložljivost DBMS, število povezav, velikost baze podatkov, kontrolne točke, hitrost branja/vanja, zaklepe, število avtoizvlekov in hitrost generiranja WAL. Celoten seznam razpoložljivih metrik ter podroben opis vseh orodij je na voljo na spletnem mestu GitHub.

Seznam razpoložljivih metrik na spletnem mestu GitHub
Zagon Mamonsu v 5 minutah
Nastavitev nadzora PostgreSQL in operacijskega sistema z Mamonsu lahko izvedete v 5 minutah s petimi preprostimi koraki.
- Namestitev Mamonsu. Mamonsu lahko sestavite iz izvorne kode ali pa uporabite razpoložljive pakete.
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- Nastavitev povezav. Potrebno je vnesti parametre povezave s PostgreSQL in Zabbix strežnikom v datoteko agent.conf.
/etc/mamonsu/agent.conf
- Izvoz predloge v Zabbix strežnik.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- Dodajanje omrežnega vozlišča v Zabbix strežnik. Izvožena predloga bo samodejno povezana z novim omrežnim vozliščem na Zabbix strežniku.
$ mamonsu zabbix host create mamonsu-demo
- Pokretanje.
$ service mamonsu start
Usmeritve razvoja Mamonsu
V okviru razvoja Mamonsu načrtujemo izboljšave metrik in ustvarjanje novih vtičnikov, na primer vtičnika za nadzor velikosti posameznih tabel. Prav tako načrtujemo izboljšave in ustvarjanje dodatnih orodij ter širitev možnosti samodejne nastavitve prek ukaza mamonsu tune.
Modul za nadzor PostgreSQL v sklopu Zabbix Agent 2
Za povezovanje s PostgreSQL se uporablja hiter in priljubljen gonilnik (PG gonilnik in orodna zbirka za Go).
Trenutno uporabljamo dva vmesnika: Exporter, ki kliče obdelovalnik glede na ključ, in Configurator Zabbix Agent 2, ki bere in preverja parametre povezave s strežnikom, določene v konfiguracijski datoteki.
Trudili smo se optimizirati delovanje DBMS s skupinjenjem metrik in uporabo obdelovalnika (handler) za metrike in skupine metrik, pa tudi z uporabo skupin metrik v JSON kot odvisnih spremenljivk (dependency items) ter nizkonivojskega odkrivanja (discovery rules).
Main Features
- ohranjanje stalne povezave s PostgreSQL med preverjanji;
- podpora prilagodljivim intervalom anketiranja;
- združljivost z različicami PostgreSQL od 10 naprej in Zabbix strežnikom od različice 4.4 naprej;
- možnost povezovanja in spremljanja več instanc PostgreSQL hkrati, saj Zabbix Agent 2 omogoča ustvarjanje več sej.
Ravni povezovalnih parametrov za PostgreSQL
Na voljo so tri ravni povezovalnih parametrov za PostgreSQL, tj. naloge in nastavitve:
- Globalno,
- Seje,
- Makrosi.
Globalni parametri so nastavljeni na ravni agenta, parametri Seje in Makros določajo parametre povezave z bazo.
Parametri povezave za PostgreSQL — Seje so nastavljeni v datoteki zabbix_agent2.conf.

Parametri povezave za PostgreSQL — Seje
- Po ključni besedi Seje je navedeno edinstveno ime seje, ki mora biti navedeno v ključu (predlogi).
- Parametri URI in Uporabniško ime sta obvezna za vsako sejo.
- Če ime baze ni določeno, se uporabi splošno ime baze kot privzeto za vse seje za PostgreSQL, kar je prav tako določeno v konfiguracijski datoteki.
- Parametri povezave za PostgreSQL — Makros so določeni v ključu metrike v predlogi (podobno kot pri Zabbix Agent 1), tj. se ustvarijo v predlogi in se nato navedejo kot parametri v ključu. Pri tem je zaporedje makrosov fiksno, tj. na primer, URI se vedno navaja na prvem mestu.

Parametri povezave za PostgreSQL — Makros
Modul za spremljanje PostgreSQL vključuje že več kot 95 metrik, ki omogočajo zajem širokega spektra parametrov PostgreSQL, vključno z:
- številom povezav,
- obsegom baz podatkov,
- arhivacijo wal-datotek,
- kontrolnimi točkami,
- številom 'napihnjenih' tabel,
- statusom replikacije,
- zaostankom replik.
Metrike PostgreSQL niso informativne brez parametrov operacijskega sistema. Toda Zabbix Agent 2 že zna zbirati parametre operacijskega sistema, zato za pridobitev popolne slike preprosto povežemo s potrebnimi predlogami v omrežju.
Obdelovalnik (handler)
Obdelovalnik (handler) — glavna enota modula, v kateri se izvede poizvedba in ki omogoča pridobitev metrik.
Da pridobimo preprosto metriko:
- Ustvarimo datoteko za pridobitev nove metrike:
zabbix/src/go/plugins/postgres/handler_uptime.go
- Povežemo paket in navedemo edinstven ključ (ključe) metrik:

- Ustvarimo obdelovalnik (handler) s poizvedbo, tj. iniciiramo spremenljivko, v kateri bo rezultat:

- Izvedemo poizvedbo:

Potrebno je preveriti poizvedbo glede napak, po čemer bo rezultat prevzet s procesom Zabbix Agent 2.
- Registriramo ključ nove metrike:

Po registraciji metrike lahko ponovno sestavite agenta z novo metriko.
Modul je na voljo od Zabbixa 5.0 na spletu . V tej različici Zabbix so parametri določeni ločeno preko host in port. V različici Zabbix 5.0.2, ki bo kmalu izdana, bodo parametri povezave združeni v en URI.
Hvala za pozornost!
Koristne poveznice
Izvor: habr.com
