5 Benutzerparameter
Übersicht
Manchmal möchten Sie möglicherweise eine Agent-Prüfung ausführen, die nicht bereits vordefiniert mit Zabbix geliefert wird. Hier kommen Benutzerparameter ins Spiel.
Sie können einen Befehl schreiben, der die benötigten Daten abruft, und ihn im Benutzerparameter in der Agent-Konfigurationsdatei (Konfigurationsparameter 'UserParameter') einfügen.
Ein Benutzerparameter hat die folgende Syntax:
UserParameter=<key>,<command>
Wie Sie sehen, enthält ein Benutzerparameter auch einen Schlüssel. Der Schlüssel wird bei der Konfiguration eines Datenpunkts benötigt. Geben Sie einen Schlüssel Ihrer Wahl ein, auf den leicht verwiesen werden kann (er muss innerhalb eines Hosts eindeutig sein).
Starten Sie den Agent neu oder verwenden Sie die Option Laufzeitsteuerung des Agenten, damit der neue Parameter übernommen wird, z. B.:
zabbix_agentd -R userparameter_reload
Geben Sie dann beim Konfigurieren eines Datenpunkts den Schlüssel ein, um auf den Befehl aus dem Benutzerparameter zu verweisen, den Sie ausführen möchten.
Benutzerparameter sind Befehle, die vom Zabbix Agent ausgeführt werden. Beachten Sie, dass vor den Schritten der Datenpunkt-Wertvorverarbeitung bis zu 16 MB Daten zurückgegeben werden können.
Unter UNIX-Betriebssystemen wird /bin/sh als Befehlszeileninterpreter verwendet. Benutzerparameter unterliegen dem Timeout der Agent-Prüfung; wenn das Timeout erreicht wird, wird der durch den Benutzerparameter gestartete Prozess beendet.
Siehe auch:
- Schritt-für-Schritt-Anleitung zur Verwendung von Benutzerparametern
- Befehlsausführung
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 Benutzerparameter
Flexible Benutzerparameter akzeptieren Parameter mit dem Schlüssel. Auf diese Weise kann ein flexibler Benutzerparameter die Grundlage für die Erstellung mehrerer Datenpunkte sein.
Flexible Benutzerparameter haben die folgende Syntax:
UserParameter=key[*],command
| Parameter | Beschreibung |
|---|---|
| Key | Eindeutiger Datenpunktschlüssel. Das [*] definiert, dass dieser Schlüssel Parameter innerhalb der Klammern akzeptiert. Die Parameter werden bei der Konfiguration des Datenpunkts angegeben. |
| Command | Befehl, der zur Ermittlung des Werts des Schlüssels ausgeführt wird. Nur für flexible Benutzerparameter: Sie können Positionsreferenzen $1…$9 im Befehl verwenden, um auf den jeweiligen Parameter im Datenpunktschlüssel zu verweisen. Zabbix analysiert die in [ ] des Datenpunktschlüssels eingeschlossenen Parameter und ersetzt $1,...,$9 im Befehl entsprechend. $0 wird durch den ursprünglichen Befehl ersetzt (vor der Erweiterung von $0,...,$9), 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 bei der Ausführung des Befehls tatsächlich zu $2. |
Positionsreferenzen mit dem Zeichen $ werden nur bei flexiblen Benutzerparametern vom Zabbix Agent gesucht und ersetzt. Bei einfachen Benutzerparametern wird diese Referenzverarbeitung übersprungen, daher ist kein Escaping von $ erforderlich.
Bestimmte Zeichen sind in Benutzerparametern standardmäßig nicht erlaubt. 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“.