5 Benutzerparameter

Übersicht

Manchmal möchten Sie eine Agent-Prüfung ausführen, die in Zabbix nicht vordefiniert ist. Hier kommen benutzerdefinierte Parameter ins Spiel.

Sie können einen Befehl schreiben, der die benötigten Daten abruft, und ihn im benutzerdefinierten Parameter in der Agent-Konfigurationsdatei (Konfigurationsparameter UserParameter) eintragen.

Ein benutzerdefinierter Parameter hat die folgende Syntax:

UserParameter=<key>,<command>

Wie Sie sehen, enthält ein benutzerdefinierter Parameter auch einen Schlüssel. Der Schlüssel wird benötigt, wenn Sie einen Datenpunkt konfigurieren. Geben Sie einen Schlüssel Ihrer Wahl ein, der sich leicht referenzieren lässt (er muss innerhalb eines Host eindeutig sein).

Starten Sie den Agent neu oder verwenden Sie die Option Laufzeitsteuerung des Agent, um den neuen Parameter zu übernehmen, z. B.:

zabbix_agentd -R userparameter_reload

Wenn Sie dann einen Datenpunkt konfigurieren, geben Sie den Schlüssel ein, um auf den Befehl aus dem benutzerdefinierten Parameter zu verweisen, der ausgeführt werden soll.

Benutzerdefinierte Parameter sind Befehle, die vom Zabbix Agent ausgeführt werden. Beachten Sie, dass vor den Schritten der Vorverarbeitung von Datenpunktwerten bis zu 16 MB Daten zurückgegeben werden können.

Unter UNIX-Betriebssystemen wird /bin/sh als Befehlszeileninterpreter verwendet. Benutzerdefinierte Parameter unterliegen dem Timeout der Agent-Prüfung; wenn das Timeout erreicht wird, wird der per Fork erzeugte Prozess des benutzerdefinierten Parameters beendet.

Siehe auch:

Beispiele für einfache Benutzerparameter

Ein einfacher Befehl:

UserParameter=ping,echo 1

Der Agent wird immer eine "1" für ein Element mit dem Schlüssel "ping" zurückgeben.

Ein komplexeres Beispiel:

UserParameter=mysql.ping,mysqladmin -uroot ping | grep -c alive

Der Agent gibt '1' zurück, wenn der MySQL-Server aktiv ist, andernfalls '0'.

Flexible user parameters

Flexible user parameters akzeptieren Parameter mit dem Schlüssel. Auf diese Weise kann ein flexibler user parameter die Grundlage für die Erstellung mehrerer Datenpunkte sein.

Flexible user parameters haben die folgende Syntax:

UserParameter=key[*],command
Parameter Description
Key Eindeutiger Datenpunkt-Schlüssel. Das [*] definiert, dass dieser Schlüssel Parameter innerhalb der Klammern akzeptiert.
Parameter werden bei der Konfiguration des Datenpunkts angegeben.
Command Befehl, der ausgeführt wird, um den Wert des Schlüssels zu ermitteln.
Nur für flexible user parameters:
Sie können Positionsreferenzen $1…$9 im Befehl verwenden, um auf den jeweiligen Parameter im Datenpunkt-Schlüssel zu verweisen.
Zabbix analysiert die in [ ] eingeschlossenen Parameter des Datenpunkt-Schlüssels und ersetzt $1,...,$9 im Befehl entsprechend.
$0 wird durch den ursprünglichen Befehl (vor der Erweiterung von $0,...,$9) ersetzt, der ausgeführt werden soll.
Positionsreferenzen werden unabhängig davon interpretiert, ob sie zwischen doppelten (") oder einfachen (') Anführungszeichen stehen.
Um Positionsreferenzen unverändert zu verwenden, geben Sie ein doppeltes Dollarzeichen an - zum Beispiel awk '{print $$2}'. In diesem Fall wird $$2 beim Ausführen des Befehls tatsächlich zu $2.

Positionsreferenzen mit dem $-Zeichen werden nur für flexible user parameters vom Zabbix Agent gesucht und ersetzt. Für einfache user parameters wird diese Referenzverarbeitung übersprungen und daher ist kein Quoting mit dem $-Zeichen erforderlich.

Bestimmte Zeichen sind in user parameters standardmäßig nicht zulässig. Die vollständige Liste der Zeichen finden Sie unter UnsafeUserParameters.

Beispiel 1

Etwas sehr Einfaches:

UserParameter=ping[*],echo $1

Wir können eine unbegrenzte Anzahl von Elementen für die Überwachung definieren, die alle das folgende Format haben ping[something].

  • ping[0] - wird immer '0' zurückgeben
  • ping[aaa] - wird immer 'aaa' zurückgeben
Beispiel 2

Lassen Sie uns mehr Sinn hinzufügen!

UserParameter=mysql.ping[*],mysqladmin -u$1 -p$2 ping | grep -c alive

Dieser Parameter kann zur Überwachung der Verfügbarkeit einer MySQL-Datenbank verwendet werden. Wir können Benutzernamen und Passwort übergeben:

mysql.ping[zabbix,our_password]
Beispiel 3

Wie viele Zeilen in einer Datei entsprechen einem regulären Ausdruck?

UserParameter=wc[*],grep -c "$2" $1

Dieser Parameter kann verwendet werden, um die Anzahl der Zeilen in einer Datei zu berechnen.

wc[/etc/passwd,root]
wc[/etc/services,zabbix]

Befehlsausgabe

Der Rückgabewert des Befehls ist die Standardausgabe zusammen mit der vom Befehl erzeugten Standardfehlerausgabe.

Ein Datenpunkt, der Text zurückgibt (Zeichen-, Protokoll- oder Texttyp von Informationen), wird bei einer Standardfehlerausgabe nicht auf den Status „nicht unterstützt“ gesetzt.

Der Rückgabewert ist auf 16 MB begrenzt (einschließlich nachfolgender Leerzeichen, die abgeschnitten werden); Datenbanklimits gelten ebenfalls.

Benutzerparameter, die Text zurückgeben (Zeichen-, Protokoll- oder Texttyp von Informationen), können auch ein Leerzeichen zurückgeben. Im Falle eines ungültigen Ergebnisses wird der Datenpunkt nicht unterstützt.