Zabbix Scripts Helfer fuer den Notfall

Was sind Skripte?

Zabbix kann Systeme nicht nur überwachen, sondern im Notfall auch aktiv eingreifen. Im Kapitel Aktionen einrichten, Alarme auslösen haben Sie gelernt, wie Zabbix selbstständig Aktionen ausführt. In vielen Situationen ist das automatische Ausführen einer Rettungsaktion aber nicht ratsam. Die Ursachen können zu verschieden sein, als dass Sie die passende Aktion hinterlegen können. Damit Sie sich im Notfall aber nicht erst auch einem System per SSH oder Remote Desktop einloggen müssen, kann der Zabbix-Server vorher hinterlegte Aktionen per Mausklick ausführen. Damit können Sie Dienste neu starten oder Werkzeuge zur Diagnose laufen lassen.

Ab der Version 2.0 können diese Skripte auf einem betroffenen Host durch den Zabbix-Agenten oder vom Zabbix-Server aus gestartet werden. Mit älteren Zabbix-Versionen ist das Ausführen von Skripten nur auf dem Zabbix-Server möglich.

Die beiden Skripte ping und traceroute werden bei jeder Zabbix-Installation angelegt. Diese verdeutlichen Ihnen die Funktionsweise. Über das Hauptmenü Administration|Scripts gelangen Sie zur Konfiguration der Skripte. In den Skripten können Sie alle Makros verwenden, die Sie auch in den Aktionen verwenden können. Das gebräuchlichste Makro ist {HOST.CONN}, welches durch die IP-Adresse oder den DNS-Namen des Hosts ersetzt wird, für den Sie die Aktion ausführen.

Zabbix kann auf Knopfdruck Skripte auf und für Hosts ausführen.

Die Skripte können Sie an verschiedenen Stellen für einen Host ausführen:

  • Über das Dashboard. Klicken Sie in der Liste der letzten Vorfälle (last issues) auf den Hostnamen. Es klappt ein kleines Menü mit den hinterlegten Skripten auf.
  • Über Monitoring|Latest Data. Dort können Sie auf den Hostnamen klicken und das Menü der Skripte erreichen. Filtern Sie nur nach Hostgruppen und nicht nach Hosts.
  • Über Monitoring|Triggers. Auch dort klappt ein Menü mit den Aktionen aus, sobald Sie auf einen Hostnamen klicken.
  • Über Monitoring|Maps, bei Klick auf einen Host in einem Diagramm
Ausführen eines Skriptes aus der Ansicht „Latest Data“

Skripte anlegen

Die Skripte werden vom Zabbix-Server (nicht dem Webserver) bzw. dem Zabbix-Agenten ausgeführt. Da beide Dienste nicht über Root-Rechte verfügen, müssen Sie u.U. Sudo-Regeln einrichten. Zum Beispiel darf der unprivilegierte Zabbix-User keine Dienste neu starten.

Beim Anlegen eines Skripts können Sie festlegen, welche Benutzer dieses Skript ausführen dürfen (Required host permissions). Der Standard ist auf „Read“ gesetzt. Das bedeutet, auch Benutzer, die keine Rechte zum Konfigurieren von Hosts besitzen, dürfen Skripte ausführen.

Über das Dropdown-Menü „User groups“ legen Sie fest, welche Benutzergruppe das Skript ausführen darf. Über das Dropdown-Menü „Hosts groups“ können Sie festlegen, dass das Skript nur für bestimmte Hosts angewendet werden darf.

Wenn ein Skript über den Zabbix-Agenten auf einem entfernten Host ausgeführt werden soll, dann muss der Agent dies erlauben. In der Konfigurationsdatei zabbix_agentd.conf des Agenten muss dafür die Einstellung EnableRemoteCommands=1 vorgenommen werden.

Skripte, die der Agent ausführt, dürfen nicht länger als der eingestellte Timeout laufen. Der Standardwert von drei Sekunden ist in vielen Fällen knapp bemessen. Erhöhen Sie gff. den Wert Timeout für den Zabbix-Agenten. Passen Sie ggf. auch die Timeout-Einstellung für den Zabbix-Server an. Wenn der Zabbix-Agent ein längeres Timeout hat als der Server, dann führt der Agent das Skript zwar bis zum Ende aus, der Server bricht aber frühzeitig die Verbindung ab und empfängt nicht mehr die Ausgabe des Skriptes.

Skripte sind eine potenzielle Schwachstelle, insbesondere wenn Sie das Ausführen von Skripten über die Agenten zulassen. Wer die Kontrolle über den Zabbix-Server erlangt, kann damit die angebundenen Hosts ggf. auch unter seine Kontrolle bringen. Kontrollieren Sie Sudo-Regeln sehr sorgsam und erlauben Sie dem Zabbix-Agenten auf keinen Fall das generelle Ausführen von Kommandos mit Root-Rechten.
Unter Red Hat und CentOS Linux verhindern u.U. die Standardeinstellungen von SELinux das Ausführen der Skripte. Prüfen Sie die Einstellungen von SELinux oder deaktivieren Sie diese Funktion.

Beispiel Webserver Restart

  • Prüfen Sie die Einstellungen das Zabbix-Agenten und erlauben Sie das Ausführen von Kommandos (siehe oben).
  • Setzen Sie den Timeout für den Zabbix-Server und Agenten auf 30 Sekunden (siehe oben).
  • Sofern noch nicht geschehen, installieren Sie sudo.
  • Fügen Sie eine Sudo-Regel in die Datei /etc/sudoers ein oder legen Sie eine neue Datei mit einer neuen Regel im Verzeichnis /etc/sudoers.d/ an:
zabbix  ALL=(ALL) NOPASSWD:/etc/init.d/apache2 restart
  • Legen Sie über Administration|Skripts ein neues Skript mit dem Namen „Apache restart (SUSE, Debian)“ an.
  • Das Skript soll über den Zabbix-Agenten ausgeführt werden.
  • Als Kommando geben Sie sudo /etc/init.d/apache2 restart ein.
Anlegen eines neuen Skripts zum Neustarten des Webservers

Sorgen Sie dafür, dass ein Host mindestens einen Fehler meldet. Suchen Sie diesen Host im Dashboard in der Liste der letzten Vorkommnisse (Last Issues). Klicken Sie auf den Hostnamen. In der Liste der Skripte klicken Sie auf „Apache restart (SUSE, Debian)“.

Ausführung eines Skriptes über die Weboberfläche