Zabbix Skript Zabbix Agent per Popup-Skript aus der Zabbix-Server Weboberfläche deaktivieren
Aus znilwiki
Changelog:
- 14.12.2017: erste Version
Aufgabenstellung
Bei einem Kunden werden alte Server aus Zabbix gelöscht. Dies geschieht innerhalb eines Changes, der Zabbix-Administrator wird informiert, deaktiviert und verschiebt den Host zunächst und löscht diesen dann nach einer Karenzzeit von einigen Tagen. Soweit kein Problem.
Nun kommt es doch öfters vor das so ein Altsystem doch wieder gestartet wird um "noch mal etwas nachzusehen". Dank des Zabbix Agenten registriert sich das System darauf hin wieder (Autoregistration), ist wieder im Monitoring - nur um ein paar Minuten später Trigger und Tickets auszulösen weil es wieder heruntergefahren wurde.
Lösung
Der Zabbix-Administrator muss sowieso einmal Hand anlegen. Da kann er auch gleich den Zabbix-Agenten auf dem System deaktivieren.
Aber dazu hat er eigentlich keine Rechte...
Hat er doch. Der Zabbix-Agent läuft unter dem Benutzer SYSTEM und kann somit eine ganze Menge.
Deshalb können wir über ein Zabbix-Script einfach den Registry-Schlüssel des Agent manipulieren so das dieser deaktiviert wird.
Beim nächsten Start des Systems wird der Agent dann nicht mehr gestartet.
Voraussetzungen
- Bis Zabbix 3.2 funktioniert das nur für Hosts die direkt an den Zabbix Server senden, nicht für Hosts die über einen Proxy angebunden sind
- Ab Zabbix 3.4 funktioniert das auch für Hosts hinter Proxys (muss aber in der Proxy-Konfiguration aktiviert werden)
- In der Konfigurationsdatei des Agenten müssen die folgenden Optionen gesetzt sein:
# Befehle vom Zabbix Server annehmen EnableRemoteCommands=1 # Sonderzeichen in Parametern / Aufrufen erlauben UnsafeUserParameters=1
Skript Agent deaktivieren
Unter Administration => Scripts erstellen wir folgendes Skript:
Name ..............: Windows/Zabbix Agent Dienst deaktivieren Commands ..........: reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Zabbix Agent" /v "Start" /t REG_DWORD /f /d 4 Confirmation Text .: Warnung: Wenn der Dienst deaktiviert wird kann dieser nach einem Neustart des Hosts nur lokal auf dem System wieder aktiviert werden
Ich habe das mit Bestätigung eingerichtet damit man es nicht versehentlich macht.
Wenn eurer Agent nicht unter dem Standardnamen Zabbix Agent
registriert wurde müsst Ihr diesen Namen anpassen.
Nutzung
Überall wo das Kontextmenü eines Host zur Verfügung steht könnt Ihr nun den Agent deaktivieren:
unter den Diensten auf dem Host ist das Ergebnis zu sehen:
Auf gleichem Wege könnte man den Agenten wieder aktivieren - so lange der Dienst noch läuft.
Nach einem Neustart geht das nur wieder manuell direkt auf dem Host.