19 Erweiterungen
Übersicht
Obwohl Zabbix eine Vielzahl von Funktionen bietet, gibt es immer Raum für zusätzliche Funktionalität. Erweiterungen sind eine praktische Möglichkeit, die Monitoring-Fähigkeiten von Zabbix zu verändern und zu erweitern, ohne den Quellcode zu ändern.
Sie können die Funktionalität von Zabbix entweder mithilfe integrierter Erweiterungsoptionen (Trapper-Datenpunkte, Benutzerparameter usw.) oder durch die Verwendung oder Erstellung benutzerdefinierter Erweiterungen (ladbare Module, Plugins usw.) erweitern.
Dieser Abschnitt bietet eine Übersicht mit Verweisen auf alle Optionen zur Erweiterung von Zabbix.
Datenerfassung mit benutzerdefinierten Befehlen
Trapper-Datenpunkte
Trapper-Datenpunkte sind Datenpunkte, die eingehende Daten annehmen, anstatt sie abzufragen.
Trapper-Datenpunkte sind nützlich, um bestimmte Daten an den Zabbix Server oder Proxy zu senden, zum Beispiel periodische Verfügbarkeits- und Leistungsdaten im Fall von lang laufenden Benutzerskripten.
Das Senden von Daten an den Zabbix Server oder Proxy ist mit dem Dienstprogramm Zabbix sender oder dem Protokoll von Zabbix sender möglich.
Das Senden von Daten an den Zabbix Server ist auch mit der API-Methode history.push möglich.
Externe Prüfungen
Eine externe Prüfung ist ein Datenpunkt zum Ausführen von Prüfungen durch das Starten einer ausführbaren Datei, zum Beispiel eines Shell-Skripts oder einer Binärdatei.
Externe Prüfungen werden vom Zabbix Server oder Proxy ausgeführt (wenn der Host vom Proxy überwacht wird) und erfordern keinen auf dem überwachten Host laufenden Agent.
Benutzerparameter
Ein Benutzerparameter ist ein benutzerdefinierter Befehl (der einem benutzerdefinierten Schlüssel zugeordnet ist), der bei der Ausführung die benötigten Daten vom Host abrufen kann, auf dem der Zabbix Agent läuft. Benutzerparameter sind nützlich, um Agent- oder Agent-2-Datenpunkte zu konfigurieren, die in Zabbix nicht vordefiniert sind.
system.run[] Zabbix-Agent-Datenpunkte
Der Zabbix-Agent-Datenpunkt system.run[]
ist ein Datenpunkt für einen benutzerdefinierten Befehl (verknüpft mit einem vordefinierten Schlüssel system.run[],
zum Beispiel system.run[myscript.sh]), der auf dem Host ausgeführt werden kann, auf dem der Zabbix Agent läuft.
Hinweis: system.run[]-Datenpunkte sind standardmäßig deaktiviert und müssen bei Verwendung
aktiviert (erlaubt) und in der Konfigurationsdatei
des Zabbix Agent oder Agent 2 definiert werden (Konfigurationsparameter AllowKey).
Benutzerdefinierte Befehle in Datenpunkten wie externen Prüfungen, Benutzerparametern und system.run[]-Zabbix-Agent-Datenpunkten
werden unter dem OS-Benutzer ausgeführt, der zum Ausführen von Zabbix-Komponenten verwendet wird.
Um diese Befehle auszuführen, muss dieser Benutzer über die erforderlichen Berechtigungen verfügen.
HTTP-Agent-Datenpunkte
Der HTTP-Agent Datenpunkt ist ein Datenpunkt zum Ausführen von Datenanfragen über HTTP/HTTPS.
HTTP-Agent-Datenpunkte sind nützlich, um Anfragen an HTTP-Endpunkte zu senden und Daten von Diensten wie Elasticsearch und OpenWeatherMap abzurufen, den Status der Zabbix-API oder den Status des Apache- oder Nginx-Webservers zu prüfen usw.
HTTP-Agent-Datenpunkte (mit aktivierter Trapper-Funktion) können auch als Trapper-Datenpunkte fungieren.
Skript-Datenpunkte
Ein Skript-Datenpunkt ist ein Datenpunkt zum Ausführen von benutzerdefiniertem JavaScript-Code, der Daten über HTTP/HTTPS abruft. Skript-Datenpunkte sind nützlich, wenn die von HTTP-Agent-Datenpunkten bereitgestellte Funktionalität nicht ausreicht. Zum Beispiel kann in anspruchsvollen Datenerfassungsszenarien, die mehrere Schritte oder eine komplexe Logik erfordern, ein Skript-Datenpunkt so konfiguriert werden, dass er einen HTTP-Aufruf ausführt, dann die empfangenen Daten verarbeitet und anschließend den transformierten Wert an einen zweiten HTTP-Aufruf übergibt.
HTTP-Agent-Datenpunkte und Skript-Datenpunkte werden von Zabbix Server und Proxy unterstützt und erfordern keinen laufenden Agent auf dem überwachten Host.
Erweiterte Erweiterungen
Ladbare Module
Ladbare Module, in C geschrieben, sind eine vielseitige und leistungsorientierte Option zur Erweiterung der Funktionalität von Zabbix-Komponenten (Server, Proxy, Agent) auf UNIX-Plattformen. Ein ladbares Modul ist im Grunde eine Shared Library, die vom Zabbix-Daemon verwendet und beim Start geladen wird. Die Bibliothek sollte bestimmte Funktionen enthalten, damit ein Zabbix-Prozess erkennen kann, dass die Datei tatsächlich ein Modul ist, das er laden und mit dem er arbeiten kann.
Ladbare Module bieten eine Reihe von Vorteilen, darunter die Möglichkeit, neue Metriken hinzuzufügen oder andere Logik zu implementieren (zum Beispiel den Zabbix-Export von Verlaufsdaten), hohe Leistung sowie die Möglichkeit, die bereitgestellte Funktionalität zu entwickeln, zu nutzen und zu teilen. Dies trägt zu einer reibungslosen Wartung bei und hilft dabei, neue Funktionalität einfacher und unabhängig von der Zabbix-Kerncodebasis bereitzustellen.
Ladbare Module sind besonders in einer komplexen Monitoring-Umgebung nützlich.
Bei der Überwachung eingebetteter Systeme, bei einer großen Anzahl überwachter Parameter
oder bei umfangreichen Skripten mit komplexer Logik oder langer Startzeit
wirken sich Erweiterungen wie Benutzerparameter, system.run[]-Zabbix-Agent-Datenpunkte und externe Prüfungen
auf die Leistung aus.
Ladbare Module bieten eine Möglichkeit, die Zabbix-Funktionalität zu erweitern, ohne Einbußen bei der Leistung hinnehmen zu müssen.
Plugins
Plugins erweitern die Überwachungsfunktionen von Zabbix Agent 2. Sie sind in der Programmiersprache Go geschrieben und bieten eine Alternative zu ladbaren Modulen (geschrieben in C).
Ein Plugin ist ein Go-Paket, das die Struktur definiert und eine oder mehrere Plugin-Schnittstellen implementiert (Exporter, Collector, Configurator, Runner, Watcher). Es werden zwei Typen von Zabbix Agent 2-Plugins unterstützt:
- Integrierte Plugins (unterstützt seit Zabbix 4.4.0)
- Ladbare Plugins (unterstützt seit Zabbix 6.0.0)
Siehe die Liste der von Zabbix bereitgestellten Plugins.
Anleitungen und Tutorials zum Erstellen eigener Plugins finden Sie im Developer center.
Anpassung von Warnmeldungen
Webhooks
Ein webhook ist ein Zabbix-Medientyp, der eine Möglichkeit bietet, die Zabbix-Benachrichtigungsfunktionen auf externe Software wie Helpdesk-Systeme, Chats oder Messenger zu erweitern. Ähnlich wie Skript-Datenpunkte sind webhooks nützlich, um HTTP-Aufrufe mit benutzerdefiniertem JavaScript-Code auszuführen, zum Beispiel um Benachrichtigungen an verschiedene Plattformen wie Microsoft Teams, Discord und Jira zu senden. Es ist auch möglich, einige Daten zurückzugeben (zum Beispiel zu erstellten Helpdesk-Tickets), die dann in Zabbix angezeigt werden.
Vorhandene webhooks sind im Zabbix-Git-Repository verfügbar. Informationen zur Entwicklung benutzerdefinierter webhooks finden Sie unter Webhook-Entwicklungsrichtlinien.
Warnskripte
Ein Warnskript ist ein Zabbix-Medientyp, der die Möglichkeit bietet, eine alternative Methode (Skript) zur Verarbeitung von Zabbix-Warnungen zu erstellen. Warnskripte sind nützlich, wenn Sie mit den vorhandenen Medientypen zum Senden von Warnungen in Zabbix nicht zufrieden sind.
Anpassung des Frontends
Benutzerdefinierte Themes
Es ist möglich, das visuelle Erscheinungsbild des Zabbix Frontend durch benutzerdefinierte Themes zu ändern. Siehe die Anleitung zum Erstellen und Anwenden Ihrer eigenen Themes.
Frontend-Module
Frontend-Module bieten eine Möglichkeit, die Funktionalität des Zabbix-Frontend zu erweitern, indem Module von Drittanbietern hinzugefügt oder eigene Module entwickelt werden. Mit Frontend-Modulen können Sie neue Menüpunkte sowie die entsprechenden Ansichten, Aktionen usw. hinzufügen.
Globale Skripte
Ein globales Skript ist eine benutzerdefinierte Befehlsmenge, die auf einem Überwachungsziel ausgeführt werden kann (durch den Shell-Interpreter (/bin/sh)), abhängig vom konfigurierten Geltungsbereich und den Benutzerberechtigungen. Globale Skripte können für die folgenden Aktionen konfiguriert werden:
Globale Skripte sind in vielen Fällen nützlich.
Wenn sie beispielsweise für Aktionsoperationen oder manuelle Host-Aktionen konfiguriert sind, können Sie globale Skripte verwenden,
um Remote-Befehle
wie den Neustart einer Anwendung (Webserver, Middleware, CRM usw.)
oder das Freigeben von Speicherplatz (Entfernen älterer Dateien, Bereinigen von /tmp usw.) automatisch oder manuell auszuführen.
Oder, ein weiteres Beispiel: Wenn sie für manuelle Ereignisaktionen konfiguriert sind,
können Sie globale Skripte verwenden, um Problem-Tickets in externen Systemen zu verwalten.
Globale Skripte können durch den Zabbix Server, Proxy oder Agent ausgeführt werden.
Benutzerdefinierte Befehle werden mit dem Betriebssystembenutzer ausgeführt, der zum Ausführen der Zabbix-Komponenten verwendet wird. Um diese Befehle auszuführen, muss dieser Benutzer über die erforderlichen Berechtigungen verfügen.
Zabbix API
Die Zabbix API ist eine HTTP-basierte API, die Teil des Zabbix Frontend ist. Mit der Zabbix API können Sie die folgenden Vorgänge ausführen:
- Die Konfiguration von Zabbix programmgesteuert abrufen und ändern.
- Die Zabbix-Konfiguration importieren und exportieren.
- Auf Verlaufs- und Trenddaten von Zabbix zugreifen.
- Anwendungen für die Zusammenarbeit mit Zabbix konfigurieren.
- Zabbix mit Software von Drittanbietern integrieren.
- Routineaufgaben automatisieren.
Die Zabbix API besteht aus einer Vielzahl von Methoden, die nominell in separate APIs gruppiert sind. Jede Methode führt eine bestimmte Aufgabe aus. Informationen zu den verfügbaren Methoden sowie einen Überblick über die von der Zabbix API bereitgestellten Funktionen finden Sie in der Zabbix API-Methodenreferenz.