Zabbix PopUp-Meldungen auf Windows Geräten bei Problems / Triggern
Aus znilwiki
Bei einem Kunden wird in der Produktion ein Etikettendrucker überwacht - natürlich per Zabbix. Wenn es einen Versatz in den Etiketten gibt sollte Zabbix unmittelbar den Mitarbeiter an der Maschine benachrichtigen.
Dieser sitzt an einem Windows-PC und arbeitet mit diversen Programmen.
Ich habe dann eine PopUp-Meldung mit Windows-Boardmitteln realisiert:
Gemacht habe ich das wie folgt:
Der Befehl "msg"
Seit Windows Vista / Windows 7 gibt es einen Befehl msg.exe
:
C:\>msg.exe Eine Nachricht an einen Benutzer senden. MSG {Benutzername | Sitzungsname | Sitzungs-ID | @Dateiname | *} [/SERVER:Servername] [/TIME:Sekunden] [/V] [/W] [Nachricht] Benutzername Gibt den Benutzernamen an. Sitzungsname Der Name der Sitzung. Sitzungs-ID Die ID der Sitzung. @Dateiname Gibt eine Datei an, die eine Liste mit Benutzernamen, Sitzungsnamen und -IDs enthält, an die die Nachricht gesendet wird. * Sendet Nachricht an alle Sitzungen auf dem angegebenen Server. /SERVER:Servername Server, mit dem die Verbindung hergestellt wird (Standard ist der aktuelle Server). /TIME:Sekunden Wartezeit, bis der Empfänger die Nachricht bestätigt. /V Zeigt Informationen über die ausgeführten Funktionen an. /W Auf Antwort von Benutzer warten, nützlich mit /V. Nachricht Zu sendende Nachricht. Wird keine angegeben, so wird eine Nachricht angefordert oder von "stdin" gelesen.
Mit dem Befehl
msg console Dies ist ein Test
sendet man sich selbst z.B. ein PopUp an die Console des Rechners - an den Bildschirm, egal wer gerade angemeldet ist.
Ist niemand angemeldet so steht die Meldung auf dem Anmeldebildschirm.
Der Befehl funktioniert auch unter Windows 10 noch. Allerdings erwies er sich als zickig was das Senden über das Netzwerk angeht.
Auf Servern mit aktivierter Remoteverwaltung geht es, auf einem normalen Client soll es angeblich über Registry-Schlüssel möglich sein.
Es ging aus der DOS-Box eines Domänen-Administrators - über einen Aufruf von Zabbix zickte es aber. Deshalb sende ich die Meldung immer nur Lokal.
Vorbereitung des Rechners der die PopUp-Meldungen anzeigen soll
Installiert den Zabbix-Agenten auf diesem Rechner.
Wenn Ihr den Rechner nicht weiter überwachen wollt weist diesem halt keine Templates zu.
Der Agent muss installiert sein und Zabbix muss diesen über Port 10050 erreichen können (oder den von euch angepassten Port),
das sollte also in der Firewall frei geschaltet sein. Ich habe dazu ein Installationsskript welches die Regeln gleich setzt.
In der Konfigurationsdatei des Agenten müssen folgende Parameter gesetzt sein:
EnableRemoteCommands=1 Server=IP-oder-DNS-Zabbix-Server
Das ist alles. Wie zuvor beschrieben - es muss den Host nicht unbedingt auf dem Zabbix-Server geben bzw. dieser braucht keine Templates.
Die IP oder der DNS-Name des Servers muss aber angegeben sein sonst nimmt der Agent keine Befehle an.
Vorbereitung des Zabbix-Servers
Auf dem Zabbix-Server muss der Befehl
zabbix_get
Installiert sein - ggf. per
apt install zabbix_get
nachinstallieren.
Außerdem müsst ihr den genauen Pfad zu zabbix_get
kennen.
Das geht mit
updatedb locate zabbix_get
Bei mir zeigte er 2 verschiedene Versionen an (durch mehrere Upgrades),
wenn Ihr
/usr/bin/zabbix_get --version
aufruft gibt er die jeweilige Version aus. (Pfad anpassen je nachdem was locate ausgegeben hat)
Ein erster Test
Wenn der Agent auf dem Zielrechner läuft und Ihr zabbix_get
auf eurem Zabbix-Server installiert habt können wir einen ersten Test machen:
zabbix_get -s 192.168.1.32 -p 10050 -k system.run["msg console Dies ist eine Testnachricht"]
Es sollte ein entsprechenden PopUp erscheinen.
zabbix_get -s 192.168.1.32 => Ziel-Rechner -p 10050 => Ziel-Port -k system.run["msg console Dies ist eine Testnachricht"] => Agent-Item system.run mit Parametern aufrufen
Das ganze in einer Action
In der Action könnt Ihr seit Zabbix 3.4 bei Operations auch ein Remote Command auswählen:
Ich habe hier das Makro
{TRIGGER.NAME}
verwendet - das ist der Name des Triggers der ausgelöst hat. Ggf. Müsst Ihr mit dem Text und Makros etwas experimentieren.
Löst die Action aus so sendet diese dann eine PopUp-Meldung direkt an den entsprechenden Rechner.
Alternative zur Installation des Zabbix Agenten
Statt den Zabbix-Agenten zu Installieren kann man auch
winexe
verwenden. Das kann man ähnlich wie psexec
unter Windows verwenden.
Hatte aber mit Windows 10 Clients auch Probleme falls der RPC-Rmotezugriff nicht aktiviert ist.
Deshalb fand ich das mit dem Zabbix-Agenten einfacher.
Download dpkg-Pakete: https://doublefault0.wordpress.com/2017/02/21/winexe-1-1-ubuntu-16-04/ Anleitung: https://www.aldeid.com/wiki/Winexe