
Vortrag von Daria Vilkova für das Zabbix Meetup Online
Ich möchte Sie mit einem Überwachungswerkzeug für PostgreSQL und das Betriebssystem bekannt machen, das von unserem Unternehmen unter Verwendung von Zabbix entwickelt wird.
Wir haben uns schon lange für Zabbix als Überwachungswerkzeug entschieden, da es sich um eine Open-Source-Plattform handelt, die von einer aktiven Community unterstützt wird und in Russland sehr beliebt ist.
Wir haben einen aktiven Agenten – Mamonsu – entwickelt, der eine flexiblere Überwachung ermöglicht, als es zu diesem Zeitpunkt die Standardwerkzeuge erlaubten, und der die Erfassung von Metriken und deren Übertragung an den Zabbix-Server ermöglicht. In unserem Unternehmen wird Mamonsu bei der Durchführung von Audits eingesetzt.
Mamonsu
Mamonsu ist ein aktiver Agent (Zabbix Trapper) zur Überwachung von PostgreSQL und dem Betriebssystem. Mamonsu (geschrieben in Python) ermöglicht es, die Überwachungsparameter von PostgreSQL und dem Betriebssystem innerhalb von fünf Minuten einzurichten.
Mamonsu bietet zusätzliche Werkzeuge:
- mamonsu tune – ein Befehl, der die Konfigurationseinstellungen in der PostgreSQL-Konfigurationsdatei für den Computer bearbeitet, auf dem der Mamonsu-Agent installiert ist.
- Mamonsu-Bericht — ein Team, das Antworten zu Betriebssystemen und PostgreSQL erstellt.
Mamonsu wird auf dem DB-Server installiert, sammelt Informationen, formatiert sie in JSON und sendet sie zur Visualisierung an den Zabbix-Server, auf dem ein Template für seine Metriken vorhanden sein muss.

Funktionsschema von Mamonsu
Funktionen von Mamonsu
- Effektive Arbeit mit PostgreSQL. Die ständige Verbindung zu PostgreSQL ist das Hauptmerkmal von Mamonsu. Dabei entspricht die maximale Anzahl der Verbindungen der maximalen Anzahl der Datenbanken, mit denen er verbunden ist.
- Erweiterbarkeit. Mamonsu ist ein vollständig „Plugin-basierter“ Agent, und dank der festen Struktur jedes Plugins und der relativen Einfachheit von Python ist es einfach, neue Plugins zu schreiben oder Standardplugins zu bearbeiten, d. h. die Parameter zur Sammlung von Metriken.
- Breite der Metrikabdeckung zur Überwachung für PostgreSQL einschließlich Metriken spezifischer Erweiterungen.
- Schneller Start, Verfügbarkeit „out-of-the-box“.
- Export von Templates und Konfigurationsdateien, sowie das Hochladen auf den Zabbix-Server.
- Plattformunabhängigkeit, was für unsere Kunden wichtig ist, die verschiedene Linux-Distributionen, einschließlich lokale Varianten, verwenden.
- BSD-Clause-Lizenz.
Derzeit bieten wir eine Vielzahl von Plugins an und bemühen uns, in jeder neuen Version etwas Neues hinzuzufügen.
- 14 Plugins für PostgreSQL,
- 8 Plugins für OS Linux,
- 4 Plugins für OS Windows.
Mamonsu sammelt über 110 Metriken für PostgreSQL und Betriebssysteme:
- 70 Metriken für PostgreSQL,
- 40 Metriken für OS Linux,
- 8 Metriken für OS Windows.
Zu den wichtigsten Metriken gehören die Verfügbarkeit der DBMS, die Anzahl der Verbindungen, die Größe der Datenbank, Checkpoints, Lese-/Schreibgeschwindigkeit, Sperrungen, die Anzahl der Autovacuum-Prozesse und die Geschwindigkeit der WAL-Generierung. Eine vollständige Liste der verfügbaren Metriken sowie eine detaillierte Beschreibung aller Tools sind auf der Website GitHub verfügbar.

Die Liste der verfügbaren Metriken auf der Website GitHub
Starten von Mamonsu in 5 Minuten
Die Einrichtung der Überwachung von PostgreSQL und des Betriebssystems mit Mamonsu kann in 5 Minuten erledigt werden, indem 5 einfache Schritte befolgt werden.
- Installation von Mamonsu. Mamonsu kann aus den Quellcodes erstellt oder aus den verfügbaren Paketen installiert werden.
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- Konfiguration der Verbindungen. Die Verbindungsparameter für PostgreSQL und den Zabbix-Server müssen in der Datei agent.conf angegeben werden.
/etc/mamonsu/agent.conf
- Export der Vorlage in den Zabbix-Server.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- Hinzufügen eines Netzwerknotens zum Zabbix-Server. Die exportierte Vorlage wird automatisch mit dem neuen Netzwerk-Knoten auf dem Zabbix Server verbunden.
$ mamonsu zabbix host create mamonsu-demo
- Start.
$ service mamonsu start
Entwicklungsrichtungen von Mamonsu
Im Rahmen der Weiterentwicklung von Mamonsu planen wir, Metriken zu erweitern und neue Plugins zu erstellen, zum Beispiel ein Plugin zur Überwachung der Größe einzelner Tabellen. Außerdem beabsichtigen wir, zusätzliche Tools zu verbessern und die Auto-Tune-Funktionen über den Befehl zu erweitern. mamonsu tune.
Das PostgreSQL-Monitoring-Modul im Zabbix Agent 2
Zur Verbindung mit PostgreSQL verwenden wir den schnellen und beliebten Treiber (PG-Treiber und Toolkit für Go).
Derzeit verwenden wir zwei Schnittstellen: einen Exporter, der den Handler über den Schlüssel aufruft, und den Konfigurator Zabbix Agent 2, der die Verbindungsparameter zum Server, die in der Konfigurationsdatei festgelegt sind, einliest und prüft.
Wir haben versucht, die Leistung der Datenbank zu optimieren, indem wir Metriken gruppieren und einen Handler für Metriken und Gruppen von Metriken verwenden, sowie Gruppen von Metriken im JSON als abhängige Variablen (Dependency Items) und niedrigstufige Erkennung (Discovery Rules) nutzen.
Grundlegende Funktionen
- aufrechterhalten einer konstanten Verbindung zu PostgreSQL zwischen den Überprüfungen;
- Unterstützung flexibler Abfrageintervalle;
- Kompatibilität mit PostgreSQL-Versionen ab 10 und Zabbix Server ab Version 4.4;
- Möglichkeit, mehrere PostgreSQL-Instanzen gleichzeitig zu verbinden und zu überwachen, da Zabbix Agent 2 mehrere Sitzungen erstellen kann.
Verbindungsebenen für PostgreSQL
Insgesamt gibt es drei Verbindungsebenen für PostgreSQL, d. h. Aufgaben und Einstellungen:
- Global,
- Sessions,
- Macros.
Die Global-Parameter werden auf Agentenebene festgelegt; die Session- und Macros-Parameter bestimmen die Verbindungseinstellungen zur Datenbank.
Die Verbindungseinstellungen für PostgreSQL – Sessions werden in der Datei zabbix_agent2.conf.

Die Verbindungseinstellungen für PostgreSQL – Sessions
- Nach dem Schlüsselwort Sessions wird ein eindeutiger Sitzungsname angegeben, der im Schlüssel (Template) vermerkt werden muss.
- Einstellungen URI und UserName ist für jede Sitzung erforderlich.
- Wenn der Datenbankname nicht angegeben ist, wird der allgemeine Standarddatenbankname für alle PostgreSQL-Sitzungen verwendet, der ebenfalls in der Konfigurationsdatei festgelegt wird.
- Die Verbindungsparameter für PostgreSQL-Makros werden im Metrikschlüssel im Template festgelegt (ähnlich wie im Zabbix Agent 1), d.h. sie werden im Template erstellt und dann als Parameter im Schlüssel angegeben. Die Reihenfolge der Makros ist dabei festgelegt, zum Beispiel, URI wird immer an erster Stelle angegeben.

Verbindungsparameter zu PostgreSQL - Makros
Das Monitoring-Modul für PostgreSQL umfasst bereits mehr als 95 Metriken, die einen breiten Bereich von PostgreSQL-Parametern abdecken, einschließlich:
- Anzahl der Verbindungen,
- Datenbankvolumen,
- Archivierung von WAL-Dateien,
- Kontrollpunkte,
- Anzahl der aufgeblähten Tabellen,
- Replikationsstatus,
- Replikationsverzögerung.
PostgreSQL-Metriken sind ohne die Parameter des Betriebssystems nicht informativ. Aber Zabbix Agent 2 kann bereits Betriebsparameter sammeln, daher verbinden wir einfach die benötigten Templates mit dem Netzwerk-Knoten, um ein umfassendes Bild zu erhalten.
Handler
Der Handler ist die Hauptkomponente des Moduls, in der die Anfrage selbst ausgeführt wird und die es ermöglicht, Metriken zu erhalten.
Um eine einfache Metrik zu erhalten:
- Erstellen Sie eine Datei zur Erfassung einer neuen Metrik:
zabbix/src/go/plugins/postgres/handler_uptime.go
- Wir verbinden das Paket und geben den einzigartigen Schlüssel (Schlüssel) für die Metriken an:

- Wir erstellen einen Handler für die Anforderung, d. h. wir initiieren eine Variable, in der das Ergebnis gespeichert wird:

- Wir führen die Anfrage aus:

Es ist notwendig, die Anfrage auf Fehler zu überprüfen, nachdem das Ergebnis vom Zabbix Agent 2 übernommen wird.
- Wir registrieren den Schlüssel für die neue Metrik:

Nach der Registrierung der Metrik kann der Agent mit der neuen Metrik neu kompiliert werden.
Das Modul ist ab Zabbix 5.0 auf der Webseite verfügbar . In dieser Version werden die Parameter separat über Host und Port angegeben. In der bald erscheinenden Version Zabbix 5.0.2 werden die Verbindungsparameter in einer URI zusammengefasst.
Vielen Dank für Ihre Aufmerksamkeit!
Nützliche Links
Quelle: habr.com
