
Foredrag av Darya Vilkova for Zabbix Meetup Online
Jeg vil introdusere deg for et overvÄkingsverktÞy for PostgreSQL og operativsystemet som utvikles av vÄrt selskap ved hjelp av Zabbix.
Vi har valgt Zabbix som overvÄkingsverktÞy for lenge siden, fordi det er en plattform med Äpen kildekode, stÞttet av et aktivt fellesskap, som er svÊrt populÊr i Russland.
Vi har laget en aktiv agent â Mamonsu, som gir mer fleksibel overvĂ„king enn hva de standard verktĂžyene tillot pĂ„ den tiden, og som sĂžrger for innsamling av metrikker og sending til Zabbix Server. I vĂ„rt selskap brukes Mamonsu ved gjennomfĂžring av revisjoner.
Mamonsu
Mamonsu er en aktiv agent (Zabbix Trapper) for overvÄking av PostgreSQL og operativsystemet. Mamonsu (skrevet i Python) lar deg konfigurere overvÄkingsparametere for PostgreSQL og operativsystemet pÄ fem minutter.
Mamonsu har ekstra verktĂžy:
- mamonsu tune â en kommando som redigerer konfigurasjonsinnstillingene i PostgreSQL-filen for maskinen som har Mamonsu-agenten installert.
- mamonsu report â en kommando som skaper svar om operativsystemet og PostgreSQL.
Mamonsu installeres pÄ databaseserveren, samler informasjon, komprimerer den til JSON, som sendes for visualisering til Zabbix Server, hvor det mÄ vÊre en mal for metrikene.

Arbeidsflyt for Mamonsu
Muligheter med Mamonsu
- Effektiv hÄndtering av PostgreSQL. En konstant tilkobling til PostgreSQL er den stÞrste fordelen med Mamonsu. Det maksimale antallet tilkoblinger er likt det maksimale antallet databaser som det kobles til.
- Utvidbarhet. Mamonsu er en helt «plugin»-basert agent, og takket vÊre den faste strukturen til hver plugin og enkelheten av Python, kan man lett lÊre Ä skrive nye eller redigere standard plugins, dvs. parametere for innsamling av metrikker.
- Bred dekning av metrikker for overvÄking for PostgreSQL, inkludert metrikker fra spesifikke utvidelser.
- Rask oppstart, tilgjengelighet «ut av boksen».
- Eksport av maler og konfigurasjonsfiler, samt opplasting til Zabbix Server.
- Kryssplattform, noe som er viktig for vÄre kunder som bruker forskjellige Linux-distribusjoner, inkludert innenlandske.
- BSD-klausul-lisens.
For now, we offer a variety of plugins, and in each subsequent version, we strive to add something new.
- 14 plugins for PostgreSQL,
- 8 plugins for OS Linux,
- 4 plugins for OS Windows.
Mamonsu collects over 110 metrics from PostgreSQL and operating systems:
- 70 PostgreSQL metrics,
- 40 OS Linux metrics,
- 8 OS Windows metrics.
Key metrics include database availability, connection count, database size, checkpoints, read/write speed, locks, number of autovacuum processes, and WAL generation speed. The complete list of available metrics, along with detailed descriptions of all tools, can be found on the GitHub site.

List of available metrics on the GitHub site
Launch Mamonsu in 5 minutes
Setting up PostgreSQL monitoring and the operating system with Mamonsu can be done in 5 minutes by performing 5 simple actions.
- Installing Mamonsu. Mamonsu can be built from source or use available packages.
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- Configuring connections. Connection parameters for PostgreSQL and Zabbix Server must be specified in the agent.conf file.
/etc/mamonsu/agent.conf
- Exporting the template to Zabbix Server.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- Adding a network node in Zabbix Server. The exported template will be automatically connected to the new network node on the Zabbix Server.
$ mamonsu zabbix host create mamonsu-demo
- Start.
$ service mamonsu start
Development directions for Mamonsu
As part of the development of Mamonsu, we plan to enhance metrics and create new plugins, such as a plugin for monitoring the size of individual tables. We also plan to improve and create additional tools, as well as expand auto-tuning capabilities through the command mamonsu tune.
PostgreSQL monitoring module within Zabbix Agent 2
A fast and popular driver is used to connect to PostgreSQL (PG driver and toolkit for Go).
Currently, we use two interfaces: Exporter, which invokes the handler by key, and Configurator Zabbix Agent 2, which reads and validates connection parameters set in the configuration file.
We have optimized the work of the DBMS by grouping metrics and using a handler for metrics and groups of metrics, as well as using metric groups in JSON as dependent variables (dependency items), and low-level discovery (discovery rules).
Hovedmuligheter
- maintaining persistent connections to PostgreSQL between checks;
- support for flexible polling intervals;
- kompatibilitet med PostgreSQL-versjoner fra 10 og Zabbix Server fra versjon 4.4;
- muligheten for Ä koble til og overvÄke flere PostgreSQL-instansene samtidig, takket vÊre at Zabbix Agent 2 lar deg opprette flere sesjoner.
NivÄer for tilkoblingsparametere til PostgreSQL
Det finnes totalt tre nivÄer av tilkoblingsparametere til PostgreSQL, altsÄ oppgaver og innstillinger:
- Global,
- Sessions,
- Macros.
Global-innstillingene defineres pÄ agentnivÄ, mens Sessions og Macros bestemmer tilkoblingsparametrene til databasen.
Tilkoblingsparametrene til PostgreSQL â Sessions angis i filen zabbix_agent2.conf.

Tilkoblingsparametrene til PostgreSQL â Sessions
- Etter nÞkkelordet Sessions angis et unikt sesjonsnavn, som mÄ oppgis i nÞkkelen (malen).
- Parametere URI og UserName er obligatoriske for hver sesjon.
- Hvis databasens navn ikke er angitt, brukes et globalt standarddatabase-navn for alle sesjoner for PostgreSQL, som ogsÄ er angitt i konfigurasjonsfilen.
- Tilkoblingsparametrene til PostgreSQL â Macros angis i metrikkens nĂžkkel i malen (pĂ„ samme mĂ„te som i Zabbix Agent 1), altsĂ„ opprettes i malen og angis videre som parametre i nĂžkkelen. Sekvensen av makroer er fast, for eksempel, URI angis alltid fĂžrst.

Tilkoblingsparametrene til PostgreSQL â Macros
PostgreSQL-overvÄkningsmodulen inneholder allerede over 95 metrikker, som gir et ganske bredt spektrum av PostgreSQL-parametere, inkludert:
- antall forbindelser,
- stÞrrelse pÄ databaser,
- arkivering av wal-filer,
- kontrollpunkter,
- antall "utvidede" tabeller,
- replikasjonsstatus,
- replikasjonsforsinkelse.
PostgreSQL-metrikker er ikke informative uten operativsystemparametere. Men Zabbix Agent 2 kan allerede samle operativsystemparametere, sÄ for Ä fÄ et komplett bilde kobler vi bare nÞdvendige maler til nettverksnoden.
Behandler (handler)
Behandler (handler) â den grunnleggende enheten av modulen, hvor selve forespĂžrselen utfĂžres og som lar deg motta metrikker.
For Ä fÄ en enkel metrikk:
- Opprett en fil for Ă„ hente den nye metrikken:
zabbix/src/go/plugins/postgres/handler_uptime.go
- Koble til pakken og angi den unike nĂžkkelen (nĂžklene) for metrikker:

- Opprett en behandler (handler) med forespĂžrselen, det vil si initier en variabel som vil inneholde resultatet:

- UtfĂžr forespĂžrselen:

Det er nĂždvendig Ă„ sjekke forespĂžrselen for feil, hvoretter resultatet vil bli fanget opp av Zabbix Agent 2-prosessen.
- Vi registrerer nĂžkkelen til den nye metrikken:

Etter registreringen av metrikken kan agenten bygges om med den nye metrikken.
Modulen er tilgjengelig fra Zabbix 5.0 pÄ nettstedet . I denne versjonen av Zabbix angis parametrene separat via vert og port. I Zabbix 5.0.2, som snart vil bli utgitt, vil tilkoblingsparameterne bli kompaktisert i én URI.
Takk for oppmerksomheten!
Nyttige lenker
Kilde: habr.com
