
Darja Vilkovas rapport til Zabbix Meetup Online
Jeg vil gerne introducere jer for et overvågningsværktøj til PostgreSQL og operativsystemet, som vores virksomhed udvikler ved hjælp af Zabbix.
Vi har valgt Zabbix som vores overvågningsværktøj for længe siden, da det er en open source-platform, der understøttes af et aktivt fællesskab og er meget populær i Rusland.
Vi har skabt en aktiv agent — Mamonsu, som tilbyder mere fleksibel overvågning, end hvad standardværktøjerne kunne på det tidspunkt, og som muliggør indsamling af metrikker og deres afsendelse til Zabbix Server. Mamonsu bruges i vores virksomhed til at udføre revision.
Mamonsu
Mamonsu er en aktiv agent (Zabbix Trapper) til overvågning af PostgreSQL og operativsystemet. Mamonsu (skrevet i Python) gør det muligt at konfigurere overvågningsparametre for PostgreSQL og operativsystemet på fem minutter.
Mamonsu har ekstra værktøjer:
- mamonsu tune — en kommando, der redigerer konfigurationsparametre i PostgreSQLs konfigurationsfil til den maskine, som Mamonsu-agenten er installeret på.
- mamonsu report — en kommando, der genererer svar om operativsystemet og PostgreSQL.
Mamonsu installeres på DB-serveren, indsamler information, samler den i JSON, som sendes til visualisering på Zabbix Server, hvor der skal være en skabelon til dens metrikker.

Arbejdsdiagram for Mamonsu
Mulighederne for Mamonsu
- Effektiv håndtering af PostgreSQL. Den vedvarende forbindelse til PostgreSQL er hovedfordelen ved Mamonsu. Samtidig er det maksimale antal forbindelser lig med det maksimale antal databaser, som den tilslutter sig.
- Skalerbarhed. Mamonsu er en helt "plugin-baseret" agent, og takket være den faste struktur af hver plugin og den relative enkelhed ved Python, kan man let lære at skrive nye eller redigere standardplugins, det vil sige indstillingsparametre for indsamling af metrikker.
- Bred dækning af metrikker til overvågning for PostgreSQL, herunder metrikker fra specifikke udvidelser.
- Hurtig opsætning, tilgængelighed "out of the box".
- Eksport af skabeloner og konfigurationsfiler, samt upload til Zabbix Server.
- Krydsplatform, hvilket er vigtigt for vores kunder, der bruger forskellige Linux-distributioner, herunder indenlandske.
- BSD-licens.
I øjeblikket tilbyder vi mange plugins, og i hver næste version forsøger vi at tilføje noget nyt.
- 14 plugins til PostgreSQL,
- 8 plugins til OS Linux,
- 4 plugins til OS Windows.
Mamonsu indsamler mere end 110 metrics for PostgreSQL og operativsystemer:
- 70 metrics for PostgreSQL,
- 40 metrics for OS Linux,
- 8 metrics for OS Windows.
De primære metrics inkluderer tilgængelighed af databasen, antal forbindelser, databasestørrelse, checkpoints, læse-/skrivehastighed, låsninger, antal autovacuum-processer og hastighed ved generering af WAL. Den fulde liste over tilgængelige metrics samt en detaljeret beskrivelse af alle værktøjer er tilgængelig på GitHub-sitet.

Listen over tilgængelige metrics på GitHub-sitet
Kørsel af Mamonsu på 5 minutter
Opsætning af overvågning af PostgreSQL og operativsystemet med Mamonsu kan gøres på 5 minutter ved at udføre 5 enkle trin.
- Installation af Mamonsu. Mamonsu kan samles fra kildekode eller bruge de tilgængelige pakker.
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- Opsætning af forbindelser. Du skal angive forbindelsesparametre for PostgreSQL og Zabbix Server i filen agent.conf.
/etc/mamonsu/agent.conf
- Eksport af skabelon til Zabbix Server.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- Tilføjelse af netværksnode til Zabbix Server. Den eksporterede skabelon vil automatisk blive tilsluttet den nye netværksnode på Zabbix Server.
$ mamonsu zabbix host create mamonsu-demo
- Kørsel.
$ service mamonsu start
Retningslinjer for udvikling af Mamonsu
Som led i udviklingen af Mamonsu planlægger vi at forbedre metrics og skabe nye plugins, såsom en plugin til overvågning af størrelsen af individuelle tabeller. Vi planlægger også at forbedre og skabe yderligere værktøjer samt udvide funktionaliteten ved automatisk opsætning gennem kommandoen mamonsu tune.
Monitoring module for PostgreSQL under Zabbix Agent 2
Til forbindelsen til PostgreSQL anvendes en hurtig og populær driver (PG driver and toolkit for Go).
Indtil videre bruger vi to interface: Exporter, der kalder handleren via nøgle, og Configurator Zabbix Agent 2, som læser og kontrollerer forbindelsesparametrene til serveren angivet i konfigurationsfilen.
Vi har forsøgt at optimere databasearbejdet ved at gruppere metrics og bruge en handler til metrics og grupper af metrics, samt ved at bruge grupper af metrics i JSON som afhængige variabler (dependency items) og lav-niveau opdagelse (discovery rules).
Grundlæggende funktioner
- opretholdelse af en konstant forbindelse til PostgreSQL mellem kontrollerne;
- support for fleksible forespørgselsintervaller;
- kompatibilitet med PostgreSQL-versioner fra 10 og Zabbix Server fra version 4.4;
- muligheden for at forbinde og overvåge flere PostgreSQL-instanser samtidigt, da Zabbix Agent 2 gør det muligt at oprette flere sessioner.
Forbindelsesparametre til PostgreSQL-niveauer
Der er i alt tre niveauer af forbindelsesparametre til PostgreSQL, dvs. opgaver og indstillinger:
- Global,
- Sessions,
- Macros.
Global-parametre indstilles på agentniveau, mens Session- og Macros-parametrene definerer forbindelseparametrene til databasen.
Forbindelsesparametre til PostgreSQL - Sessions indstilles i filen zabbix_agent2.conf.

Forbindelsesparametre til PostgreSQL - Sessions
- Efter nøgleordet Sessions angives et unikt sessionsnavn, som skal angives i nøglen (skabelonen).
- Parametre URI og UserName er obligatoriske for hver session.
- Hvis databases navnet ikke er angivet, bruges det fælles standarddatabase-navn for alle sessioner til PostgreSQL, som også er angivet i konfigurationsfilen.
- Forbindelsesparametre til PostgreSQL - Macros angives i metricsnøglen i skabelonen (analogt med metoden anvendt i Zabbix Agent 1), dvs. oprettes i skabelonen og derefter angives som parametre i nøglen. Her er rækkefølgen af makroer fast, dvs. for eksempel URI angives altid først.

Forbindelsesparametre til PostgreSQL - Macros
PostgreSQL-overvågningsmodulet inkluderer allerede over 95 metrikker, som gør det muligt at dække et ret bredt spektrum af PostgreSQL-parametre, herunder:
- antal forbindelser,
- databasevolumen,
- arkivering af wal-filer,
- kontrolpunkter,
- antal 'oppustede' tabeller,
- replikationsstatus,
- efterslæb af replikation.
PostgreSQL-metrikker er ikke informative uden operativsystemets parametre. Men Zabbix Agent 2 kan allerede indsamle operativsystemets parametre, så for at få et fuldt billede tilslutter vi blot de nødvendige skabeloner til netværksnoden.
Handler
Handler - den primære enhed i modulet, hvor forespørgslen udføres, og som gør det muligt at få metrikker.
For at få en simpel metrik:
- Opret en fil for at få den nye metrik:
zabbix/src/go/plugins/postgres/handler_uptime.go
- Forbind pakken og angiv en unik nøgle (nøgler) for metrikkerne:

- Opret en handler med forespørgslen, dvs. initialiser en variabel, hvor resultatet vil blive gemt:

- Udfør forespørgslen:

Det er nødvendigt at kontrollere forespørgslen for fejl, hvorefter resultatet vil blive overtaget af processen Zabbix Agent 2.
- Registrer nøglen for den nye metrik:

Når du har registreret dine metrics, kan du genkompilere agenten med den nye metric.
Modulet er tilgængeligt fra Zabbix 5.0 på hjemmesiden . I denne version angives Zabbix-parametre separat via host og port. I version Zabbix 5.0.2, som snart vil blive udgivet, vil forbindelsesparametre blive samlet i en enkelt URI.
Tak for din opmærksomhed!
Nyttige links
Kilde: habr.com
