Aktionen

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:

ClipCapIt-181011-212102.PNG

Gemacht habe ich das wie folgt:

1 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.


2 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.


3 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)


4 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



5 Das ganze in einer Action

In der Action könnt Ihr seit Zabbix 3.4 bei Operations auch ein Remote Command auswählen:

ClipCapIt-181011-211423.PNG

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.


6 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




Kommentar hinzufügen
znilwiki freut sich über alle Kommentare. Sofern du nicht anonym bleiben möchtest, trage deinen Namen oder deine Email-Adresse ein oder melde dich an. Du kannst das Feld auch einfach leer lassen.