Überwachung von PostgreSQL mit Zabbix

Überwachung von PostgreSQL mit Zabbix
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.

Überwachung von PostgreSQL mit Zabbix

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 Lagerstätten auf der GitHub-Site.

Überwachung von PostgreSQL mit Zabbix

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.

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

  1. Verbindungsaufbau. Es ist notwendig, die Verbindungsparameter für PostgreSQL und Zabbix Server in der Datei agent.conf festzulegen.

/etc/mamonsu/agent.conf

  1. Exportieren Sie die Vorlage auf den Zabbix-Server.

$ mamonsu zabbix template export

/usr/share/mamonsu/example.xml

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

  1. 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 pgx (PG-Treiber und Toolkit für Go).

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.

  1. Die globalen Parameter werden auf Agentenebene festgelegt, die Sitzungs- und Makroparameter definieren die Datenbankverbindungsparameter.

  2. Verbindungsparameter zu PostgreSQL – Sitzungen werden in der Datei festgelegt zabbix_agent2.conf.

Überwachung von PostgreSQL mit Zabbix

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.

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

Überwachung von PostgreSQL mit Zabbix

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:

  1. Erstellen Sie eine Datei, um eine neue Metrik zu erhalten:

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

  1. Wir verbinden das Paket und geben den eindeutigen Schlüssel (die eindeutigen Schlüssel) der Metriken an:

Überwachung von PostgreSQL mit Zabbix

  1. Wir erstellen einen Handler (Handler) mit einer Anfrage, d. h. wir initiieren eine Variable, die das Ergebnis enthält:

Überwachung von PostgreSQL mit Zabbix

  1. Wir führen die Anfrage aus:

Überwachung von PostgreSQL mit Zabbix

Es ist notwendig, die Anfrage auf Fehler zu überprüfen. Anschließend wird das Ergebnis vom Zabbix Agent 2-Prozess übernommen.

  1. Registrieren Sie den neuen Metrikschlüssel:

Überwachung von PostgreSQL mit Zabbix

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 https://www.zabbix.com/download. In dieser Version von Zabbix werden die Parameter getrennt über Host und Port eingestellt. In Zabbix 5.0.2, das bald veröffentlicht wird, werden die Verbindungsparameter in einen einzigen URI gepackt.

Danke!

Nützliche Links

GitHub Mamonsu

Mamonsu-Dokumentation

Zabbix Git

Source: habr.com

Kommentar hinzufügen