Zabbix Daten per Zabbix-Sender schicken
Inhaltsverzeichnis
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.
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.
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
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"
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%"