Rapport af Daria Vilkova for Zabbix Meetup Online
Jeg vil gerne introducere dig til PostgreSQL- og operativsystemovervågningsværktøjet, som udvikles af vores virksomhed ved hjælp af Zabbix.
Vi har valgt Zabbix som vores overvågningsværktøj i lang tid, fordi det er en open source-platform understøttet af et aktivt fællesskab, der er meget populært i Rusland.
Vi skabte en aktiv agent - Mamonsu, som gav mere fleksibel overvågning end standardværktøjer på det tidspunkt tillod, og sikrede indsamlingen af metrics og deres afsendelse til Zabbix Server. I vores virksomhed anvendes Mamonsu i revisionen.
Mamonsu
Mamonsu er en aktiv agent (Zabbix Trapper) til overvågning af PostgreSQL og operativsystemet. Mamonsu (skrevet i Python) giver dig mulighed for at konfigurere PostgreSQL- og operativsystemovervågningsindstillinger på fem minutter.
Mamonsu har yderligere værktøjer:
- mamonsu tune er en kommando, der redigerer indstillingerne i PostgreSQL-konfigurationsfilen for den maskine, som Mamonsu-agenten er installeret på.
- mamonsu-rapporten er en kommando, der genererer svar om operativsystemet og PostgreSQL.
Mamonsu er installeret på DBMS-serveren, indsamler information, komponerer den til JSON, som sender den til Zabbix Server til visualisering, hvor der skulle være en skabelon til dens metrics.
Mamonsu arbejdsordning
Indeholder Mamonsu
- Effektivt arbejde med PostgreSQL. En vedvarende forbindelse til PostgreSQL er den største fordel ved Mamonsu. I dette tilfælde er det maksimale antal forbindelser lig med det maksimale antal databaser, som det opretter forbindelse til.
- Udvidelsesmuligheder. Mamonsu er en fuld "plugin" agent, og på grund af den faste struktur af hvert plugin og den relative enkelhed af Python, kan man nemt lære at skrive nye eller redigere standard plugins, dvs. metrics indsamlingsparametre.
- Bred dækning af overvågningsmålinger til PotgreSQL inklusive udvidelsesspecifikke metrics.
- hurtig start, tilgængelighed ud af kassen.
- Upload af skabeloner og konfigurationsfiler, samt upload til Zabbix Server.
- Tværplatform, hvilket er vigtigt for vores kunder, der bruger forskellige Linux-distributioner, herunder indenlandske.
- BSD-klausul licens.
I øjeblikket tilbyder vi en masse 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 over 110 PostgreSQL- og operativsystem-metrics:
- 70 PostgreSQL-metrics,
- 40 OS Linux-metrics,
- 8 OS Windows-metrics.
Nøglemålinger inkluderer DBMS-tilgængelighed, antal forbindelser, databasestørrelse, kontrolpunkter, læse-/skrivehastighed, låse, antal autovakuumprocesser og WAL-genereringshastighed. En komplet liste over tilgængelige metrics samt en detaljeret beskrivelse af alle værktøjer er tilgængelig i
Liste over tilgængelige metrics på GitHub
Kør Mamonsu på 5 minutter
For at opsætte overvågning af PostgreSQL og operativsystemet ved hjælp af Mamonsu, kan du gøre det på 5 minutter ved at følge 5 enkle trin.
- Installerer Mamonsu. Mamonsu kan bygges fra kilden eller bruge tilgængelige pakker.
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- Opsætning af forbindelse. Det er nødvendigt at indstille forbindelsesparametrene for PostgreSQL og Zabbix Server i filen agent.conf.
/etc/mamonsu/agent.conf
- Eksporter skabelon til Zabbix Server.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- Tilføjelse af en vært til Zabbix Server. Den eksporterede skabelon vil automatisk blive forbundet til den nye vært på Zabbix Server.
$ mamonsu zabbix host create mamonsu-demo
- Запуск.
$ service mamonsu start
Mamonsu udviklingsvejledning
Som en del af udviklingen af Mamonsu planlægger vi at forfine metrics og skabe nye plugins, såsom et plugin til overvågning af størrelsen af individuelle tabeller. Vi planlægger også at forbedre og skabe yderligere værktøjer samt udvide mulighederne for automatisk tuning gennem kommandoen mamonsu melodi.
PostgreSQL-overvågningsmodul som en del af Zabbix Agent 2
En hurtig og populær driver bruges til at oprette forbindelse til PostgreSQL
Indtil videre bruger vi to grænseflader: Exporter, som kalder handleren via nøgle, og Configurator Zabbix Agent 2, som læser og kontrollerer forbindelsesparametrene med den server, der er angivet i konfigurationsfilen.
Vi forsøgte at optimere arbejdet i DBMS ved at gruppere metrikker og bruge en handler (handler) til metrikker og metriske grupper, samt at bruge grupper af metrikker i JSON som afhængige variabler (afhængighedselementer) og opdagelse på lavt niveau (opdagelsesregler ).
Nøglefunktioner
- opretholdelse af en vedvarende forbindelse til PostgreSQL mellem kontroller;
- understøttelse af fleksible afstemningsintervaller;
- kompatibilitet med PostgreSQL-versioner startende fra 10 og Zabbix Server startende fra version 4.4;
- muligheden for at forbinde og overvåge flere PostgreSQL-instanser på samme tid på grund af det faktum, at Zabbix Agent 2 giver dig mulighed for at oprette flere sessioner.
PostgreSQL-forbindelsesparameterniveauer
I alt er der tre niveauer af PostgreSQL-forbindelsesparametre, dvs. opgaver og indstillinger:
- Samlet set,
- Sessioner,
- Makroer.
-
De globale parametre indstilles på agentniveau, parametrene Session og Makroer definerer databaseforbindelsesparametrene.
-
Forbindelsesparametre til PostgreSQL - Sessioner er indstillet i filen zabbix_agent2.conf.
PostgreSQL-forbindelsesmuligheder - Sessioner
- Efter søgeord Sessions der er angivet et unikt sessionsnavn, som skal angives i nøglen (skabelonen).
- Parametre URI и Brugernavn påkrævet for hver session.
- Hvis basisnavnet ikke er angivet, bruges standard fælles basisnavn for alle PostgreSQL-sessioner, som også er angivet i konfigurationsfilen.
- Forbindelsesparametre til PostgreSQL - Makroer indstilles i den metriske nøgle i skabelonen (svarende til metoden brugt i Zabbix Agent 1), dvs. de oprettes i skabelonen og derefter angives som parametre i nøglen. I dette tilfælde er rækkefølgen af makroer fast, dvs. URI altid først.
PostgreSQL-forbindelsesparametre - Makroer
PostgreSQL-overvågningsmodulet indeholder allerede mere end 95 målinger, der giver dig mulighed for at dække en ret bred vifte af PostgreSQL-parametre, herunder:
- antal forbindelser
- database størrelse,
- arkivering af wal-filer,
- kontrolpunkter,
- antallet af "oppustede" tabeller,
- replikeringsstatus,
- replika forsinkelse.
PostgreSQL-metrics er ikke informative uden operativsystemparametre. Men Zabbix Agent 2 ved allerede, hvordan man indsamler operativsystemparametre, så for at få det fulde billede, forbinder vi blot de nødvendige skabeloner til værten.
Handler
Behandleren er hovedenheden i modulet, hvori selve anmodningen udføres, og som giver dig mulighed for at modtage metrics.
Sådan får du en simpel metrik:
- Opret en fil for at få en ny metric:
zabbix/src/go/plugins/postgres/handler_uptime.go
- Vi forbinder pakken og specificerer den unikke nøgle (nøgler) til metrikken:
- Vi opretter en handler (handler) med en anmodning, dvs. vi starter en variabel, der vil indeholde resultatet:
- Vi udfører anmodningen:
Det er nødvendigt at kontrollere anmodningen for fejl, hvorefter resultatet vil blive afhentet af Zabbix Agent 2-processen.
- Registrer den nye metriske nøgle:
Når du har registreret metrikken, kan du genopbygge agenten med den nye metric.
Modulet er tilgængeligt fra Zabbix 5.0 på hjemmesiden
Tak for din opmærksomhed!
Nyttige links
Kilde: www.habr.com