Bericht von Daria Vilkova für Zabbix Meetup Online
Ich möchte Ihnen das PostgreSQL- und Betriebssystemüberwachungstool vorstellen, das von unserem Unternehmen unter Verwendung von Zabbix entwickelt wird.
Wir haben uns schon lange für Zabbix als Überwachungstool 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 entwickelt – Mamonsu, der eine flexiblere Überwachung ermöglichte, als es die damaligen Standardtools erlaubten, und die Erfassung von Metriken und deren Übermittlung an den Zabbix-Server sicherstellte. In unserem Unternehmen wird Mamonsu im Audit eingesetzt.
Mamonsu
Mamonsu ist ein aktiver Agent (Zabbix Trapper) zur Überwachung von PostgreSQL und dem Betriebssystem. Mit Mamonsu (in Python geschrieben) können Sie PostgreSQL- und Betriebssystemüberwachungseinstellungen in fünf Minuten konfigurieren.
Mamonsu verfügt über zusätzliche Tools:
- mamonsu tune ist ein Befehl, der die Einstellungen in der PostgreSQL-Konfigurationsdatei für den Computer bearbeitet, auf dem der Mamonsu-Agent installiert ist.
- mamonsu report ist ein Befehl, der Antworten zum Betriebssystem und zu PostgreSQL generiert.
Mamonsu wird auf dem DBMS-Server installiert, sammelt Informationen, komponiert sie in JSON, das sie zur Visualisierung an den Zabbix-Server sendet, wo es eine Vorlage für seine Metriken geben sollte.
Mamonsu-Arbeitsplan
Mit Mamonsu
- Effizientes Arbeiten mit PostgreSQL. Eine dauerhafte Verbindung zu PostgreSQL ist der Hauptvorteil von Mamonsu. In diesem Fall entspricht die maximale Anzahl an Verbindungen der maximalen Anzahl an Datenbanken, zu denen eine Verbindung hergestellt wird.
- Erweiterbarkeit. Mamonsu ist ein vollständiger „Plugin“-Agent, und aufgrund der festen Struktur jedes Plugins und der relativen Einfachheit von Python kann man leicht lernen, wie man neue Plugins schreibt oder Standard-Plugins, d. h. Parameter zur Erfassung von Metriken, bearbeitet.
- Breite Abdeckung von Überwachungsmetriken für PotgreSQL einschließlich erweiterungsspezifischer Metriken.
- Schnellstart, Verfügbarkeit sofort verfügbar.
- Hochladen von Vorlagen und Konfigurationsdateiensowie das Hochladen auf den Zabbix-Server.
- Plattformübergreifend, was für unsere Kunden wichtig ist, die verschiedene Linux-Distributionen verwenden, auch inländische.
- BSD-Klausel-Lizenz.
Im Moment bieten wir viele Plugins an und in jeder nächsten Version versuchen wir, etwas Neues hinzuzufügen.
- 14 Plugins für PostgreSQL,
- 8 Plugins für OS Linux,
- 4 Plugins für das Betriebssystem Windows.
Mamonsu sammelt über 110 PostgreSQL- und Betriebssystemmetriken:
- 70 PostgreSQL-Metriken,
- 40 Betriebssystem-Linux-Metriken,
- 8 OS Windows-Metriken.
Zu den wichtigsten Kennzahlen gehören DBMS-Verfügbarkeit, Anzahl der Verbindungen, Datenbankgröße, Prüfpunkte, Lese-/Schreibgeschwindigkeit, Sperren, Anzahl der Autovacuum-Prozesse und WAL-Generierungsgeschwindigkeit. Eine vollständige Liste der verfügbaren Metriken sowie eine detaillierte Beschreibung aller Tools finden Sie unter
Liste der verfügbaren Metriken auf GitHub
Führen Sie Mamonsu in 5 Minuten aus
Um die Überwachung von PostgreSQL und dem Betriebssystem mit Mamonsu einzurichten, können Sie dies in 5 Minuten erledigen, indem Sie 5 einfache Schritte befolgen.
- Mamonsu installieren. Mamonsu kann aus dem Quellcode erstellt werden oder verfügbare Pakete verwenden.
$ git clone ... && cd mamonsu && python setup.py
build && python setup.py install
- Verbindungsaufbau. Es ist notwendig, die Verbindungsparameter für PostgreSQL und Zabbix Server in der Datei agent.conf festzulegen.
/etc/mamonsu/agent.conf
- Exportieren Sie die Vorlage auf den Zabbix-Server.
$ mamonsu zabbix template export
/usr/share/mamonsu/example.xml
- Hinzufügen eines Hosts zum Zabbix-Server. Die exportierte Vorlage wird automatisch mit dem neuen Host auf Zabbix Server verbunden.
$ mamonsu zabbix host create mamonsu-demo
- Starten.
$ service mamonsu start
Mamonsu-Entwicklungsanweisungen
Im Rahmen der Weiterentwicklung von Mamonsu planen wir, die Metriken zu verfeinern und neue Plugins zu erstellen, beispielsweise ein Plugin zur Überwachung der Größe einzelner Tabellen. Wir planen außerdem, zusätzliche Tools zu verbessern und zu erstellen sowie die Auto-Tuning-Funktionen durch den Befehl zu erweitern Mamonsu-Melodie.
PostgreSQL-Überwachungsmodul als Teil von Zabbix Agent 2
Für die Verbindung zu PostgreSQL wird ein schneller und beliebter Treiber verwendet
Bisher verwenden wir zwei Schnittstellen: Exporter, der den Handler per Schlüssel aufruft, und Configurator Zabbix Agent 2, der die Verbindungsparameter mit dem in der Konfigurationsdatei angegebenen Server liest und überprüft.
Wir haben versucht, die Arbeit des DBMS zu optimieren, indem wir Metriken gruppierten und einen Handler (Handler) für Metriken und Metrikgruppen verwendeten sowie Metrikgruppen in JSON als abhängige Variablen (Abhängigkeitselemente) und Erkennung auf niedriger Ebene (Erkennungsregeln) verwendeten ).
Основные возможности
- Aufrechterhaltung einer dauerhaften Verbindung zu PostgreSQL zwischen den Überprüfungen;
- Unterstützung für flexible Abfrageintervalle;
- Kompatibilität mit PostgreSQL-Versionen ab 10 und Zabbix Server ab Version 4.4;
- die Möglichkeit, mehrere PostgreSQL-Instanzen gleichzeitig zu verbinden und zu überwachen, da Sie mit Zabbix Agent 2 mehrere Sitzungen erstellen können.
PostgreSQL-Verbindungsparameterebenen
Insgesamt stehen drei Ebenen der PostgreSQL-Verbindungsparameter zur Verfügung, also Aufgaben und Einstellungen:
- Gesamt,
- Sitzungen,
- Makros.
-
Die globalen Parameter werden auf Agentenebene festgelegt, die Sitzungs- und Makroparameter definieren die Datenbankverbindungsparameter.
-
Verbindungsparameter zu PostgreSQL – Sitzungen werden in der Datei festgelegt zabbix_agent2.conf.
PostgreSQL-Verbindungsoptionen – Sitzungen
- Nach Schlüsselwort Sessions Es wird ein eindeutiger Sitzungsname angegeben, der im Schlüssel (Vorlage) angegeben werden muss.
- Parameter URI и UserName für jede Sitzung erforderlich.
- Wenn der Basisname nicht angegeben ist, wird der standardmäßige gemeinsame Basisname für alle PostgreSQL-Sitzungen verwendet, der auch in der Konfigurationsdatei festgelegt ist.
- Verbindungsparameter zu PostgreSQL – Makros werden im Metrikschlüssel in der Vorlage festgelegt (ähnlich der in Zabbix Agent 1 verwendeten Methode), d. h. sie werden in der Vorlage erstellt und dann als Parameter im Schlüssel angegeben. In diesem Fall ist die Reihenfolge der Makros festgelegt, d. h. z. B. URI immer zuerst aufgeführt.
PostgreSQL-Verbindungsparameter – Makros
Das PostgreSQL-Überwachungsmodul umfasst bereits mehr als 95 Metriken, mit denen Sie ein ziemlich breites Spektrum an PostgreSQL-Parametern abdecken können, darunter:
- Anzahl der Verbindungen
- Datenbankgröße,
- Archivierung von Wal-Dateien,
- Kontrollpunkte,
- die Anzahl der „aufgeblasenen“ Tische,
- Replikationsstatus,
- Replikationsverzögerung.
PostgreSQL-Metriken sind ohne Betriebssystemparameter nicht informativ. Zabbix Agent 2 weiß jedoch bereits, wie Betriebssystemparameter erfasst werden. Um ein vollständiges Bild zu erhalten, verbinden wir einfach die erforderlichen Vorlagen mit dem Host.
Handler
Der Handler ist die Haupteinheit des Moduls, in dem die Anfrage selbst ausgeführt wird und der Ihnen den Empfang von Metriken ermöglicht.
Um eine einfache Metrik zu erhalten:
- Erstellen Sie eine Datei, um eine neue Metrik zu erhalten:
zabbix/src/go/plugins/postgres/handler_uptime.go
- Wir verbinden das Paket und geben den eindeutigen Schlüssel (die eindeutigen Schlüssel) der Metriken an:
- Wir erstellen einen Handler (Handler) mit einer Anfrage, d. h. wir initiieren eine Variable, die das Ergebnis enthält:
- Wir führen die Anfrage aus:
Es ist notwendig, die Anfrage auf Fehler zu überprüfen. Anschließend wird das Ergebnis vom Zabbix Agent 2-Prozess übernommen.
- Registrieren Sie den neuen Metrikschlüssel:
Nachdem Sie die Metrik registriert haben, können Sie den Agenten mit der neuen Metrik neu erstellen.
Das Modul ist ab Zabbix 5.0 auf der Website verfügbar
Danke!
Nützliche Links
Source: habr.com