Zabbix Daten per Zabbix-Sender schicken

Was macht Zabbix-Sender?

Eine der vielen Datenquellen, die Items im Zabbix-Server mit Daten versorgen, ist Zabbix-Sender. Zabbix-Sender ist ein ausführbares Programm, welches Daten an den Zabbix-Server schickt. Für ein bestimmtes Item aktualisiert Zabbix-Sender aus der Ferne den Item Value.

Zabbix-Sender funktioniert unabhängig vom Zabbix-Agenten, das heißt, Sie müssen nur die Datei zabbix_sender bzw. zabbix_sender.exe in der für das Betriebssystem passenden Version auf einen Host kopieren. Eine Konfigurationsdatei braucht Zabbix-Sender nicht.

Zabbix-Sender sendet Daten selbstständig und ungefragt an den Zabbix-Server. Das Senden von Daten kann nicht, wie beim Zabbix-Agenten, von außen ausgelöst werden. Zabbix-Sender kommt vor allem in Skripten, Cronjobs oder geplanten Tasks zum Einsatz.

Der Einsatz von Zabbix-Sender ist sinnvoll, wenn

  • ein externes Programm Daten an den Zabbix-Server liefern soll, aufgrund der zu langen Laufzeit (mehr als 30 Sekunden) aber nicht als User-Parameter in den Zabbix-Agenten integriert werden kann.
  • ein externes Programm mehr als ein Item pro Ausführung aktualisieren soll.
  • ein externes Programm, zum Beispiel ein Backup-Skript, sofort nach der Beendigung seinen Status an Zabbix melden soll.
  • der Zabbix-Agent aufgrund von Berechtigungen nicht an Daten „rankommt“ und die Daten zum Beispiel nur vom Benutzer root gesammelt und an den Zabbix-Server geschickt werden können.

Den Zabbix-Trapper konfigurieren

Wenn Sie per Zabbix-Sender Daten schicken, dann nimmt der sogenannte Zabbix-Trapper diese Daten entgegen. Der Zabbix-Trapper ist eine Option des Zabbix-Servers oder -Proxys, die Sie ggf. in der Datei zabbix_sever.conf oder zabbix_proxy.conf konfigurieren müssen. Öffnen Sie die entsprechende Datei mit einem Texteditor und tragen Sie die IP-Adressen ein, auf denen der Trapper Daten entgegennehmen soll. Wenn Sie keine IP angeben, denn werden alle verfügbaren IPs des Systems verwendet.

### Option: ListenIP
#       List of comma delimited IP addresses that the trapper should listen on.
#       Trapper will listen on all network interfaces if this parameter is missing.
#
# Mandatory: no
# Default:
ListenIP=0.0.0.0

Je nachdem wie intensiv Sie den Zabbix-Trapper verwenden möchten, müssen Sie über die Einstellung StartTrappers mehrere Trapper starten. Wenn Ihre Skripte die Daten nur sehr langsam senden, passen Sie die Einstellungen TrapperTimeout entsprechend an.

Item anlegen

  • Legen Sie ein Item vom Type "Zabbix-Trapper" an.
  • Der Item-Key kann beliebig gewählt werden, muss aber den Vorschriften für Item-Keys entsprechen.
Anlegen eines Items vom Typ Zabbix-Trapper, welches vom Zabbix-Sender mit Daten versorgt wird

Daten schicken

Nun können Sie per Zabbix-Sender dem eingerichteten Item einen Wert zuweisen. Der mit der Option -s angegebene Hostname muss exakt mit dem Hostnamen übereinstimmen, wie er im Zabbix-Server hinterlegt ist. Hier ein Beispiel:

zabbix-sender -k test.item -o 19 -z 127.0.0.1 -s "Zabbix server"

Für manuelle Tests sollten Sie die Option "-vv" verwenden, um zu prüfen, ob der Zabbix-Server das Item aktualisiert hat.

./zabbix_sender -vv -k test.item -o "Test" -z 127.0.0.1 -s "Zabbix server"
zabbix_sender [28138]: DEBUG: Answer [{
        "response":"success",
        "info":"Processed 0 Failed 1 Total 1 Seconds spent 0.000049"}]
Info from server: "Processed 0 Failed 1 Total 1 Seconds spent 0.000049"
sent: 1; skipped: 0; total: 1

Im oben gezeigten Beispiel hat der Server das Update nicht akzeptiert, was Sie an der Zeile "Processed 0 Failed 1" erkennen. Eine positive Meldung würde "Processed 1 Failed 0" lauten.

Wird ein Host von einem Proxy überwacht, dann akzeptiert nur der zuständige Proxy die Dateneinlieferung per zabbix_sender.

Sie können mit einem Aufruf des Zabbix-Senders auch mehrere Items für verschiedene Hosts aktualisieren. Dazu müssen alle Daten, die an den Zabbix-Server geschickt werden sollen, in einer Textdatei gespeichert werden. Die Datei enthält pro Zeile einen Datensatz bestehend aus Hostnamen, Item-Key und Item-Value, getrennt mit einem Leerzeichen.

server1.firma.local backup.status OK
server1.firma.local backup.datasize 1256914
server2.firma.local backup.status FAILED
server2.firma.local backup.datasize 0

Eine solche Datei schicken Sie dann wie folgt an den Zabbix-Server:

zabbix_sender -z <IP_ZABBIX_SERVER> -i eingabedatei.txt
Wenn der Zabbix-Sender Daten aus einer Datei oder über STDIN (Pipe) einliest, dürfen pro Zeile nur exakt zwei Leerzeichen vorkommen. Der Hostname darf Leerzeichen enthalten. Wenn das Item ein Leerzeichen enthält, muss dieses in Anführungszeichen eingeschlossen werden (Quote Escape). Beispielsweise müsste das Item backup["Data Size"] in einem Zabbix-Sender-Skript als backup[\"Data Size\"] angegeben werden.

Ein einfaches Beispiel

Folgendes Beispiel demonstriert, wie Sie den Zabbix-Sender in ein Backup-Skript integrieren können.

#!/bin/bash
# Backup file on a remote host
BACKUP="rsync -a /var/www/ root@backup.local:/var/backups/$(hostname)/var/www/"
if $BACKUP
then
  STATUS="OK"
else
   STATUS="FAILED"
fi
echo "Backup $STATUS"
zabbix_sender -k backup.status -o $STATUS -z 192.168.10.17 -s "Webserver01"
Sie müssen den Zabbix-Server-Host nicht zwangsläufig angeben. Wenn auf einem Host der Zabbix-Agent konfiguriert ist, kann der Zabbix-Sender den Hostnamen des „zuständigen“ Zabbix-Servers und seinen eigenen Namen aus dessen Konfiguration auslesen. Ein Strich an erster Position des Datensatzes bedeutet, dass der eigene Hostname aus der angegebenen Konfigurationsdatei gelesen wird.
Beispiel:echo "- backup.status OK" | zabbix_sender -c /etc/zabbix/zabbix_agentd.conf -T -i -

Ein Beispiel für Microsoft Windows

dir foo 2>c:\error
zabbix_sender.exe -z 172.16.70.198 -s "Windows Server" -k backup.status -o %ERRORLEVEL%
set /p MSG=<c:\error
zabbix_sender -z 172.16.70.198 -s "Windows Server" -k backup.error -o "%MSG%"
Verwenden Sie unter Microsoft Windows nur doppelte Anführungszeichen um Eingaben mit Leerzeichen zu umschließen.
Zabbix-Sender für Microsoft Windows. Achten Sie auf doppelte Anführungszeichen.