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 den Befehl aus dem benutzerdefinierten Parameter zu referenzieren, der ausgeführt werden soll.

Benutzerdefinierte Parameter sind Befehle, die vom Zabbix Agent ausgeführt werden. Beachten Sie, dass bis zu 16 MB Daten zurückgegeben werden können, bevor die Schritte der Vorverarbeitung des Datenpunktwerts ausgeführt werden.

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 Beschreibung
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 in doppelte (") oder einfache (') Anführungszeichen eingeschlossen sind.
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 Escaping des $-Zeichens 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]

Befehlsergebnis

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

Ein Datenpunkt, der Text zurückgibt (Zeichen-, Log- oder Texttyp von Informationen), wird im Fall einer Standardfehlerausgabe nicht zu „nicht unterstützt“.

Der Rückgabewert ist auf 16 MB begrenzt (einschließlich nachgestellter Leerzeichen, die abgeschnitten werden); Datenbankbeschränkungen gelten ebenfalls.

Benutzerparameter, die Text zurückgeben (Zeichen-, Log- oder Texttyp von Informationen), können ebenfalls Leerraum zurückgeben. Im Fall eines ungültigen Ergebnisses wird der Datenpunkt zu „nicht unterstützt“.