PostgreSQL-monitoring met Zabbix

PostgreSQL-monitoring met Zabbix
Presentatie van Daria Vilkova voor Zabbix Meetup Online

Ik wil u bekendmaken met een tool voor monitoring van PostgreSQL en het besturingssysteem, ontwikkeld door ons bedrijf met behulp van Zabbix.

We hebben Zabbix al lang gekozen als monitoringtool, omdat het een open-source platform is dat wordt ondersteund door een actieve community en in Rusland zeer populair is.

We hebben een actieve agent — Mamonsu — gecreĆ«erd, die een flexibeler monitoring biedt dan de standaardtools destijds toestonden en het verzamelen van metrics en het verzenden naar de Zabbix Server mogelijk maakte. In ons bedrijf wordt Mamonsu gebruikt bij het uitvoeren van audits.

Mamonsu

Mamonsu is een actieve agent (Zabbix Trapper) voor het monitoren van PostgreSQL en het besturingssysteem. Mamonsu (geschreven in Python) stelt je in staat om de monitoringparameters van PostgreSQL en het besturingssysteem in vijf minuten in te stellen.

Mamonsu heeft aanvullende tools:

  • mamonsu tune — een opdracht die de instellingen in het configuratiebestand van PostgreSQL wijzigt voor de machine waarop de Mamonsu-agent is geĆÆnstalleerd.
  • mamonsu report — een opdracht die rapporten genereert over het besturingssysteem en PostgreSQL.

Mamonsu wordt op de database server geĆÆnstalleerd, verzamelt informatie, voegt deze samen in JSON en verzendt deze voor visualisatie naar de Zabbix Server, waar een sjabloon voor zijn metrics moet zijn.

PostgreSQL-monitoring met Zabbix

Schema van de werking van Mamonsu

Mogelijkheden van Mamonsu

  • Effectieve werking met PostgreSQL. Een constante verbinding met PostgreSQL is het belangrijkste voordeel van Mamonsu. Daarbij is het maximale aantal verbindingen gelijk aan het maximale aantal databases waarmee het verbinding maakt.
  • Schaalbaarheid. Mamonsu is een volledig 'plugin'-agent, en dankzij de vaste structuur van elke plugin en de relatieve eenvoud van Python, is het gemakkelijk om nieuwe plugins te schrijven of standaardplugins te bewerken, dat wil zeggen, de parameters voor het verzamelen van metrics.
  • Breed scala aan metrics voor monitoring voor PostgreSQL, inclusief metrics van specifieke uitbreidingen.
  • Snelle opstart, beschikbaarheid 'uit de doos'.
  • Export van sjablonen en configuratiebestanden, evenals het uploaden naar de Zabbix Server.
  • Cross-platform, wat belangrijk is voor onze klanten die verschillende Linux-distributies gebruiken, waaronder binnenlandse.
  • BSD-clausule licentie.

Op dit moment bieden we een scala aan plugins en we proberen in elke nieuwe versie iets nieuws toe te voegen.

  • 14 plugins voor PostgreSQL,
  • 8 plugins voor OS Linux,
  • 4 plugins voor OS Windows.

Mamonsu verzamelt meer dan 110 metrics voor PostgreSQL en besturingssystemen:

  • 70 metrics voor PostgreSQL,
  • 40 metrics voor OS Linux,
  • 8 metrics voor OS Windows.

De belangrijkste metrics omvatten de beschikbaarheid van de DBMS, het aantal verbindingen, de grootte van de database, checkpoints, lees-/schrijfsnelheid, vergrendelingen, het aantal autovacuum-processen en de snelheid van WAL-generatie. Een volledige lijst van beschikbare metrics en een gedetailleerde beschrijving van alle tools zijn te vinden op de repository de GitHub-website.

PostgreSQL-monitoring met Zabbix

Lijst van beschikbare metrics op de GitHub-website

Start Mamonsu in 5 minuten

Voor het instellen van de monitoring van PostgreSQL en het besturingssysteem met Mamonsu kan dit in 5 minuten door 5 eenvoudige stappen te volgen.

  1. Installatie van Mamonsu. Mamonsu kan vanaf de bron worden gebouwd of gebruikmaken van beschikbare pakketten.

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

build && python setup.py install

  1. Instellen van verbindingen. De verbindingsparameters voor PostgreSQL en Zabbix Server moeten in het bestand agent.conf worden opgegeven.

/etc/mamonsu/agent.conf

  1. Exporteren van het sjabloon naar Zabbix Server.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

  1. Toevoegen van een netwerkknooppunt aan Zabbix Server. Het geƫxporteerde sjabloon wordt automatisch gekoppeld aan het nieuwe netwerkknooppunt op Zabbix Server.

$ mamonsu zabbix host create mamonsu-demo

  1. Start.

$ service mamonsu start

Ontwikkelingsrichtingen van Mamonsu

In het kader van de ontwikkeling van Mamonsu zijn we van plan om de metrics verder uit te breiden en nieuwe plugins te creƫren, zoals een plugin voor het monitoren van de grootte van specifieke tabellen. We zijn ook van plan om extra tools te verbeteren en te creƫren, evenals de mogelijkheden voor automatische configuratie via het commando mamonsu tune.

De module voor monitoring van PostgreSQL binnen Zabbix Agent 2

Voor de verbinding met PostgreSQL wordt gebruikgemaakt van de snelle en populaire driver pgx (PG-driver en toolkit voor Go).

Momenteel gebruiken we twee interfaces: Exporter, die de handler oproept via een sleutel, en Configurator Zabbix Agent 2, die de verbindingsparameters met de server leest en controleert zoals opgegeven in het configuratiebestand.

We hebben geprobeerd de functionaliteit van de DBMS te optimaliseren door metrics te groeperen en een handler te gebruiken voor metrics en metric-groepen, evenals het gebruik van metric-groepen in JSON als afhankelijke variabelen (dependency items) en low-level discovery (ontdekkingsregels).

Belangrijkste mogelijkheden

  • het handhaven van een permanente verbinding met PostgreSQL tussen de controles;
  • ondersteuning voor flexibele pollingintervallen;
  • compatibiliteit met PostgreSQL-versies vanaf 10 en Zabbix Server, vanaf versie 4.4;
  • de mogelijkheid om meerdere PostgreSQL-instanties tegelijk te verbinden en te monitoren, dankzij het feit dat Zabbix Agent 2 meerdere sessies kan aanmaken.

Verbindeniveaus voor PostgreSQL

Er zijn in totaal drie niveaus voor verbindeniveaus voor PostgreSQL, dat wil zeggen taken en instellingen:

  • Global,
  • Sessions,
  • Macros.

  1. De Global-parameters worden op agentniveau ingesteld, terwijl de Session- en Macros-parameters de verbindingsparameters van de database bepalen.

  2. De verbindingsparameters voor PostgreSQL - Sessions worden ingesteld in het bestand zabbix_agent2.conf.

PostgreSQL-monitoring met Zabbix

De verbindingsparameters voor PostgreSQL - Sessions

  • Na het sleutelwoord Sessions wordt een unieke sessienaam opgegeven, die in de sleutel (sjabloon) moet worden vermeld.
  • Instellingen URI en UserName zijn verplicht voor elke sessie.
  • Als de databasenaam niet is opgegeven, wordt de algemene standaard databasenaam voor alle sessies voor PostgreSQL gebruikt, die ook in het configuratiebestand wordt ingesteld.

  1. De verbindingsparameters voor PostgreSQL - Macros worden ingesteld in de metriek sleutel in het sjabloon (vergelijkbaar met de methode die is gebruikt in Zabbix Agent 1), dat wil zeggen dat ze in het sjabloon worden aangemaakt en vervolgens als parameters in de sleutel worden vermeld. Hierbij is de volgorde van de macro's vast, dat wil zeggen, bijvoorbeeld, URI altijd als eerste vermeld.

PostgreSQL-monitoring met Zabbix

De verbindingsparameters voor PostgreSQL - Macros

De PostgreSQL-monitoringmodule bevat al meer dan 95 metrische gegevens, die een vrij breed scala aan PostgreSQL-parameters dekken, inclusief:

  • aantal verbindingen,
  • grootte van databases,
  • archivering van wal-bestanden,
  • controles,
  • aantal 'opgeblazen' tabellen,
  • replicatiestatus,
  • replicaachterstand.

PostgreSQL-metrieken zijn niet informatief zonder de parameters van het besturingssysteem. Maar Zabbix Agent 2 kan al parameters van het besturingssysteem verzamelen, dus om een volledig beeld te krijgen, sluiten we gewoon de benodigde sjablonen aan op de netwerkknoop.

Handler

Handler - de belangrijkste eenheid van de module waarin het verzoek zelf wordt uitgevoerd en waarmee metrische gegevens kunnen worden verkregen.

Om een eenvoudige metriek te verkrijgen:

  1. Maak een bestand om een nieuwe metriek te verkrijgen:

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

  1. Sluit het pakket aan en geef de unieke sleutel(m) van de metrische gegevens op:

PostgreSQL-monitoring met Zabbix

  1. Maak een handler met een verzoek, dat wil zeggen, initieer een variabele waarin het resultaat zich bevindt:

PostgreSQL-monitoring met Zabbix

  1. Voer het verzoek uit:

PostgreSQL-monitoring met Zabbix

Het is noodzakelijk om het verzoek op fouten te controleren, waarna het resultaat zal worden opgepikt door het Zabbix Agent 2-proces.

  1. We registreren de sleutel van de nieuwe metriek:

PostgreSQL-monitoring met Zabbix

Na registratie van de metriek kan de agent opnieuw worden opgebouwd met de nieuwe metriek.

De module is beschikbaar vanaf Zabbix 5.0 op de website https://www.zabbix.com/download. In deze versie worden de parameters apart opgegeven via host en port. In versie Zabbix 5.0.2, die binnenkort uitkomt, zullen de verbindingsparameters worden samengevoegd in ƩƩn URI.

Bedankt voor uw aandacht!

Nuttige links

GitHub Mamonsu

Documentatie voor Mamonsu

Zabbix Git

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster