
Verslag van Daria Vilkova voor Zabbix Meetup Online
Ik wil u kennis laten maken met de PostgreSQL en de monitoringtool voor het besturingssysteem, die door ons bedrijf wordt ontwikkeld met behulp van Zabbix.
We hebben Zabbix al lange tijd gekozen als onze monitoringtool omdat het een open source-platform is dat wordt ondersteund door een actieve gemeenschap die erg populair is in Rusland.
We creëerden een actieve agent - Mamonsu, die meer flexibele monitoring bood dan de standaardtools op dat moment toestonden, en zorgden voor het verzamelen van statistieken en het verzenden ervan naar Zabbix Server. In ons bedrijf wordt Mamonsu gebruikt bij de audit.
Mamonsu
Mamonsu is een actieve agent (Zabbix Trapper) voor het monitoren van PostgreSQL en het besturingssysteem. Mamonsu (geschreven in Python) stelt u in staat om PostgreSQL en monitoringinstellingen voor het besturingssysteem in vijf minuten te configureren.
Mamonsu heeft extra tools:
- mamonsu tune is een commando dat de instellingen bewerkt in het PostgreSQL-configuratiebestand voor de machine waarop de Mamonsu-agent is geïnstalleerd.
- mamonsu-rapport is een opdracht die antwoorden over het besturingssysteem en PostgreSQL genereert.
Mamonsu wordt op de DBMS-server geïnstalleerd, verzamelt informatie, zet deze om in JSON, die deze naar de Zabbix-server stuurt voor visualisatie, waar er een sjabloon voor de statistieken moet zijn.

Mamonsu werkschema
Kenmerken Mamonsu
- Efficiënt werken met PostgreSQL. Een blijvende verbinding met PostgreSQL is het belangrijkste voordeel van Mamonsu. In dit geval is het maximum aantal verbindingen gelijk aan het maximum aantal databases waarmee het verbinding maakt.
- Uitbreidbaarheid. Mamonsu is een volledig "plug-in"-agent, en vanwege de vaste structuur van elke plug-in en de relatieve eenvoud van Python, kan men gemakkelijk leren hoe nieuwe plug-ins te schrijven of standaard plug-ins te bewerken, d.w.z. metrische verzamelingsparameters.
- Brede dekking van monitoringstatistieken voor PotgreSQL inclusief extensiespecifieke statistieken.
- snelle start, beschikbaarheid uit de doos.
- Sjablonen en configuratiebestanden uploaden, evenals uploaden naar Zabbix Server.
- Cross-platform, wat belangrijk is voor onze klanten die verschillende distributiesystemen gebruiken. Linux, inclusief binnenlandse.
- BSD-clausule licentie.
Op dit moment bieden we veel plug-ins aan en in elke volgende versie proberen we iets nieuws toe te voegen.
- 14 plug-ins voor PostgreSQL,
- 8 plug-ins voor OS Linux,
- 4 plug-ins voor het besturingssysteem Windows.
Mamonsu verzamelt meer dan 110 PostgreSQL- en besturingssysteemstatistieken:
- 70 PostgreSQL-statistieken,
- 40 OS-statistieken Linux,
- 8 OS-statistieken Windows.
Belangrijke statistieken zijn onder meer DBMS-beschikbaarheid, aantal verbindingen, databasegrootte, checkpoints, lees-/schrijfsnelheid, vergrendelingen, aantal autovacuümprocessen en WAL-generatiesnelheid. Een volledige lijst met beschikbare statistieken, evenals een gedetailleerde beschrijving van alle tools, is beschikbaar in op de GitHub-site.

Lijst met beschikbare statistieken op GitHub
Run Mamonsu in 5 minuten
Om monitoring van PostgreSQL en het besturingssysteem met Mamonsu in te stellen, kunt u dit in 5 minuten doen door 5 eenvoudige stappen te volgen.
- Mamonsu installeren. Mamonsu kan vanuit de bron worden gebouwd of beschikbare pakketten gebruiken.
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- Verbinding instellen. Het is noodzakelijk om de verbindingsparameters voor PostgreSQL en Zabbix Server in te stellen in het bestand agent.conf.
/etc/mamonsu/agent.conf
- Sjabloon exporteren naar Zabbix Server.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- Een host toevoegen aan Zabbix Server. De geëxporteerde sjabloon wordt automatisch verbonden met de nieuwe host op Zabbix Server.
$ mamonsu zabbix host create mamonsu-demo
- lancering.
$ service mamonsu start
Mamonsu-ontwikkelingsrichtlijnen
Als onderdeel van de ontwikkeling van Mamonsu zijn we van plan de statistieken te verfijnen en nieuwe plug-ins te maken, zoals een plug-in voor het bewaken van de grootte van individuele tabellen. We zijn ook van plan om aanvullende tools te verbeteren en te creëren, en om de mogelijkheden voor automatisch afstemmen via de opdracht uit te breiden mamonsu deuntje.
PostgreSQL-bewakingsmodule als onderdeel van Zabbix Agent 2
Een snelle en populaire driver wordt gebruikt om verbinding te maken met PostgreSQL (PG-stuurprogramma en toolkit voor Go).
Tot nu toe gebruiken we twee interfaces: Exporter, die de handler met een sleutel aanroept, en Configurator Zabbix Agent 2, die de verbindingsparameters leest en controleert met de server die is opgegeven in het configuratiebestand.
We hebben geprobeerd het werk van het DBMS te optimaliseren door metrieken te groeperen en een handler (handler) te gebruiken voor metrieken en metriekgroepen, en door groepen metrieken in JSON te gebruiken als afhankelijke variabelen (afhankelijkheidsitems) en ontdekking op laag niveau (ontdekkingsregels ).
Belangrijkste kenmerken
- een permanente verbinding met PostgreSQL onderhouden tussen controles door;
- ondersteuning voor flexibele polling-intervallen;
- compatibiliteit met PostgreSQL-versies vanaf 10 en Zabbix Server vanaf versie 4.4;
- de mogelijkheid om meerdere PostgreSQL-instanties tegelijkertijd te verbinden en te bewaken, omdat u met Zabbix Agent 2 meerdere sessies kunt maken.
PostgreSQL-verbindingsparameterniveaus
In totaal zijn er drie niveaus van PostgreSQL-verbindingsparameters, d.w.z. taken en instellingen:
- Globaal,
- Sessies,
- Macro's.
De algemene parameters worden ingesteld op agentniveau, de parameters Sessie en Macro's definiëren de parameters voor de databaseverbinding.
Verbindingsparameters met PostgreSQL - Sessies worden ingesteld in het bestand zabbix_agent2.conf.

PostgreSQL-verbindingsopties - Sessies
- Na trefwoord Sessions er wordt een unieke sessienaam opgegeven, die moet worden opgegeven in de sleutel (sjabloon).
- Parameters URI и UserName vereist voor elke sessie.
- Als de basisnaam niet is opgegeven, wordt de standaard algemene basisnaam voor alle PostgreSQL-sessies gebruikt, die ook is ingesteld in het configuratiebestand.
- Verbindingsparameters met PostgreSQL - Macro's worden ingesteld in de metrische sleutel in de sjabloon (vergelijkbaar met de methode die wordt gebruikt in Zabbix Agent 1), d.w.z. ze worden gemaakt in de sjabloon en vervolgens gespecificeerd als parameters in de sleutel. In dit geval is de volgorde van macro's vast, d.w.z. bijvoorbeeld URI altijd als eerste vermeld.

PostgreSQL-verbindingsparameters - Macro's
De PostgreSQL-bewakingsmodule bevat al meer dan 95 statistieken waarmee u een vrij breed scala aan PostgreSQL-parameters kunt dekken, waaronder:
- aantal aansluitingen
- database-grootte,
- archiveren van walbestanden,
- controleposten,
- het aantal "opgeblazen" tafels,
- replicatiestatus,
- replica vertraging.
PostgreSQL-statistieken zijn niet informatief zonder parameters van het besturingssysteem. Maar Zabbix Agent 2 weet al hoe hij parameters van het besturingssysteem moet verzamelen, dus om het volledige beeld te krijgen, verbinden we gewoon de benodigde sjablonen met de host.
Behandelaar
De handler is de hoofdeenheid van de module waarin het verzoek zelf wordt uitgevoerd en waarmee u statistieken kunt ontvangen.
Om een eenvoudige metriek te krijgen:
- Maak een bestand om een nieuwe metriek te krijgen:
zabbix/src/go/plugins/postgres/handler_uptime.go
- We verbinden het pakket en specificeren de unieke sleutel (sleutels) van de metrics:

- We maken een handler (handler) met een verzoek, d.w.z. we starten een variabele die het resultaat zal bevatten:

- We voeren het verzoek uit:

Het is noodzakelijk om het verzoek op fouten te controleren, waarna het resultaat wordt opgehaald door het Zabbix Agent 2-proces.
- Registreer de nieuwe metrische sleutel:

Nadat u de metriek hebt geregistreerd, kunt u de agent opnieuw opbouwen met de nieuwe metriek.
De module is beschikbaar vanaf Zabbix 5.0 op de website . In deze versie van Zabbix worden de parameters afzonderlijk ingesteld via host en poort. In Zabbix 5.0.2, die binnenkort wordt uitgebracht, worden de verbindingsparameters verpakt in een enkele URI.
Dank je wel!
Nuttige links
Bron: www.habr.com
