Overvågning af PostgreSQL ved hjælp af Zabbix

Overvågning af PostgreSQL ved hjælp af Zabbix
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.

Overvågning af PostgreSQL ved hjælp af Zabbix

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 depoter på GitHub-siden.

Overvågning af PostgreSQL ved hjælp af Zabbix

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.

  1. Installerer Mamonsu. Mamonsu kan bygges fra kilden eller bruge tilgængelige pakker.

$ git clone ... && cd mamonsu && python setup.py

build && python setup.py install

  1. Opsætning af forbindelse. Det er nødvendigt at indstille forbindelsesparametrene for PostgreSQL og Zabbix Server i filen agent.conf.

/etc/mamonsu/agent.conf

  1. Eksporter skabelon til Zabbix Server.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. 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

  1. Запуск.

$ 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 pgx (PG-driver og værktøjssæt til Go).

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.

  1. De globale parametre indstilles på agentniveau, parametrene Session og Makroer definerer databaseforbindelsesparametrene.

  2. Forbindelsesparametre til PostgreSQL - Sessioner er indstillet i filen zabbix_agent2.conf.

Overvågning af PostgreSQL ved hjælp af Zabbix

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.

  1. 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.

Overvågning af PostgreSQL ved hjælp af Zabbix

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:

  1. Opret en fil for at få en ny metric:

zabbix/src/go/plugins/postgres/handler_uptime.go

  1. Vi forbinder pakken og specificerer den unikke nøgle (nøgler) til metrikken:

Overvågning af PostgreSQL ved hjælp af Zabbix

  1. Vi opretter en handler (handler) med en anmodning, dvs. vi starter en variabel, der vil indeholde resultatet:

Overvågning af PostgreSQL ved hjælp af Zabbix

  1. Vi udfører anmodningen:

Overvågning af PostgreSQL ved hjælp af Zabbix

Det er nødvendigt at kontrollere anmodningen for fejl, hvorefter resultatet vil blive afhentet af Zabbix Agent 2-processen.

  1. Registrer den nye metriske nøgle:

Overvågning af PostgreSQL ved hjælp af Zabbix

Når du har registreret metrikken, kan du genopbygge agenten med den nye metric.

Modulet er tilgængeligt fra Zabbix 5.0 på hjemmesiden https://www.zabbix.com/download. I denne version af Zabbix indstilles parametrene separat via vært og port. I Zabbix 5.0.2, som vil blive frigivet snart, vil forbindelsesparametrene blive pakket ind i en enkelt URI.

Tak for din opmærksomhed!

Nyttige links

GitHub Mamonsu

Mamonsu dokumentation

Zabbix Git

Kilde: www.habr.com

Tilføj en kommentar