
Daria Vilkova's presentation for Zabbix Meetup Online
Jag vill introducera ett övervakningsverktyg för PostgreSQL och operativsystemet som utvecklas av vÄrt företag med hjÀlp av Zabbix.
Vi valde Zabbix som övervakningsverktyg för lÀnge sedan, eftersom det Àr en öppen kÀllkodsplattform som stöds av en aktiv gemenskap och Àr mycket populÀr i Ryssland.
Vi skapade en aktiv agent â Mamonsu, som möjliggjorde mer flexibel övervakning Ă€n vad standardverktygen vid den tiden tillĂ€t och möjliggjorde insamling av metrik och deras sĂ€ndning till Zabbix Server. I vĂ„rt företag anvĂ€nds Mamonsu vid genomförande av revisioner.
Mamonsu
Mamonsu Àr en aktiv agent (Zabbix Trapper) för övervakning av PostgreSQL och operativsystemet. Mamonsu (skrivet i Python) gör det möjligt att konfigurera övervakningsparametrar för PostgreSQL och operativsystemet pÄ fem minuter.
Mamonsu har ytterligare verktyg:
- mamonsu tune â ett kommando som redigerar konfigurationsparametrar i PostgreSQL:s konfigurationsfil för den maskin som har Mamonsu-agenten installerad.
- mamonsu report â ett kommando som skapar rapporter om operativsystemet och PostgreSQL.
Mamonsu installeras pÄ DB-servern, samlar information och sammanstÀller den i JSON som skickas för visualisering till Zabbix Server, dÀr det bör finnas en mall för dess metrik.

Arbetsmodellen för Mamonsu
Möjligheterna hos Mamonsu
- Effektiv hantering av PostgreSQL. En konstant anslutning till PostgreSQL Àr Mamonsus frÀmsta fördel. Det maximala antalet anslutningar Àr lika med det maximala antalet databaser som det ansluter till.
- Utbyggbarhet. Mamonsu Àr en helt "plugin-baserad" agent, och tack vare den fasta strukturen för varje plugin och den relativa enkelheten i Python kan man enkelt lÀra sig att skriva nya eller redigera standardplugins, dvs. insamlingsparameternas.
- Brett urval av metrik för övervakning för PostgreSQL, inklusive metrik för specifika tillÀgg.
- Snabb installation, tillgÀnglighet "ur lÄdan".
- Export av mallar och konfigurationsfiler, samt uppladdning till Zabbix Server.
- Korsplattformskompatibilitet, vilket Àr viktigt för vÄra kunder som anvÀnder olika Linux-distributioner, inklusive inhemska.
- BSD-klausullicens.
För nÀrvarande erbjuder vi mÄnga plugins och i varje ny version strÀvar vi efter att lÀgga till nÄgot nytt.
- 14 plugins för PostgreSQL,
- 8 plugins för OS Linux,
- 4 plugins för OS Windows.
Mamonsu samlar in över 110 mÀtvÀrden för PostgreSQL och operativsystem:
- 70 mÀtvÀrden för PostgreSQL,
- 40 mÀtvÀrden för OS Linux,
- 8 mÀtvÀrden för OS Windows.
De viktigaste mÀtvÀrdena inkluderar tillgÀnglighet för databashanteraren, antal anslutningar, storlek pÄ databasen, checkpoints, lÀs-/skrivhastigheter, lÄsningar, antal autovakuumprocesser och hastighet av WAL-generering. En fullstÀndig lista över tillgÀngliga mÀtvÀrden samt en detaljerad beskrivning av alla verktyg finns pÄ GitHub-sidan.

Listan över tillgÀngliga mÀtvÀrden finns pÄ GitHub
Starta Mamonsu pÄ 5 minuter
För att konfigurera övervakning av PostgreSQL och operativsystem med hjÀlp av Mamonsu kan det göras pÄ 5 minuter genom att följa 5 enkla steg.
- Installation av Mamonsu. Mamonsu kan byggas frÄn kÀllkod eller installeras med tillgÀngliga paket.
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- Konfigurera anslutningar. Du mÄste ange anslutningsparametrar för PostgreSQL och Zabbix Server i filen agent.conf.
/etc/mamonsu/agent.conf
- Exportera mall till Zabbix Server.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- LÀgg till nÀtverksnod i Zabbix Server. Den exporterade mallen kommer automatiskt att kopplas till den nya nÀtverksnoden pÄ Zabbix Server.
$ mamonsu zabbix host create mamonsu-demo
- Launch.
$ service mamonsu start
Framtidsplaner för Mamonsu
Som en del av utvecklingen av Mamonsu planerar vi att förbÀttra mÀtvÀrdena och skapa nya plugins, som en plugin för övervakning av storleken pÄ specifika tabeller. Vi planerar ocksÄ att förbÀttra och skapa ytterligare verktyg samt utöka automatiseringsmöjligheterna genom kommandot mamonsu tune.
Ăvervakningsmodul för PostgreSQL i Zabbix Agent 2
För att ansluta till PostgreSQL anvÀnds en snabb och populÀr drivrutin (PG-drivrutin och toolkit för Go).
För nÀrvarande anvÀnder vi tvÄ grÀnssnitt: Exporter, som anropar en handler med en nyckel, och Configurator Zabbix Agent 2, som lÀser och kontrollerar anslutningsparametrarna till servern som anges i konfigurationsfilen.
Vi har försökt optimera databashanterarens funktion genom att gruppera mÀtvÀrden och anvÀnda en handler för mÀtvÀrden och grupper av mÀtvÀrden, samt genom att anvÀnda grupper av mÀtvÀrden i JSON som beroende variabler (dependency items) och lÄgnivÄupptÀckning (discovery rules).
Huvudfunktioner
- bevarande av en konstant anslutning till PostgreSQL mellan kontroller;
- stöd för flexibla förfrÄgningsintervall;
- kompatibilitet med PostgreSQL-versioner frÄn och med 10 och Zabbix Server frÄn version 4.4;
- möjlighet att ansluta och övervaka flera PostgreSQL-instanser samtidigt tack vare att Zabbix Agent 2 tillÄter skapandet av flera sessioner.
NivÄer för anslutningsparametrar till PostgreSQL
Det finns tre tillgÀngliga nivÄer av anslutningsparametrar till PostgreSQL, dvs. uppgifter och instÀllningar:
- Global,
- Sessioner,
- Makron.
Global-parametrar stÀlls in pÄ agentnivÄ, session- och makro-parametrar definierar anslutningsparametrar till databasen.
Anslutningsparametrar till PostgreSQL â Sessioner stĂ€lls in i filen zabbix_agent2.conf.

Anslutningsparametrar till PostgreSQL â Sessioner
- Efter nyckelordet Sessioner anges ett unikt sessionsnamn som mÄste anges i nyckeln (mallen).
- Parametrar URI och UserName Àr obligatoriska för varje session.
- Om databasenamn inte anges anvÀnds ett gemensamt standarddatabasenamn för alla sessioner i PostgreSQL, vilket ocksÄ anges i konfigurationsfilen.
- Anslutningsparametrar till PostgreSQL â Makron stĂ€lls in i metriknyckeln i mallen (pĂ„ liknande sĂ€tt som i Zabbix Agent 1), dvs. skapas i mallen och anges sedan som parametrar i nyckeln. HĂ€r Ă€r sekvensen av makron fast, dvs. till exempel URI anges alltid först.

Anslutningsparametrar till PostgreSQL â Makron
PostgreSQL-övervakningsmodulen inkluderar redan över 95 metrik som tillÄter att fÄnga en ganska bred mÀngd PostgreSQL-parametrar, inklusive:
- antal anslutningar,
- databasens storlek,
- arkivering av wal-filer,
- kontrollpunkter,
- antal "uppsvÀllda" tabeller,
- replikationsstatus,
- replikafördröjning.
PostgreSQL-metrik Àr inte informativa utan operativsystemets parametrar. Men Zabbix Agent 2 kan redan samla operativsystemets parametrar, sÄ för att fÄ en komplett bild ansluter vi bara de nödvÀndiga mallarna till nÀtverksnoden.
Handler
Handler â den grundlĂ€ggande enheten i modulen dĂ€r sjĂ€lva förfrĂ„gan utförs och som gör det möjligt att hĂ€mta metrik.
För att fÄ en enkel metrik:
- Skapa en fil för att fÄ en ny metrik:
zabbix/src/go/plugins/postgres/handler_uptime.go
- Anslut paketet och ange en unik nyckel (nycklar) för metrik:

- Skapa en handler med en förfrÄgan, dvs. initiera en variabel dÀr resultatet kommer att lagras:

- Utför förfrÄgan:

Det Àr nödvÀndigt att kontrollera förfrÄgan för fel, varefter resultatet kommer att fÄngas av Zabbix Agent 2-processen.
- Registrera nyckeln för den nya metriken:

Efter registreringen av mÀtvÀrden kan agenten Äteruppbyggas med det nya mÀtvÀrdet.
Modulen Àr tillgÀnglig frÄn Zabbix 5.0 pÄ webbplatsen . I denna version av Zabbix anges parametrarna separat via host och port. I version Zabbix 5.0.2, som snart kommer att slÀppas, kommer anslutningsparametrarna att kompileras i en enda URI.
Tack för uppmÀrksamheten!
Nyttiga lÀnkar
KĂ€lla: habr.com
