Zabbix:Template Windows Eventlog
Aus znilwiki
Changelog:
- 04.02.2015: Erste Version auf Englisch
Download: DGHB_Template_Windows_Eventlog_English_V2015-02-04.zip
Nach dem Import findet Ihr das Template unter der Host-Gruppe "Templates DATAGROUP"
Allgemeine Informationen
Das Template bietet eine Überwachung der folgenden Windows Eventlogs:
- Application / Anwendung
- Directory Service / Verzeichnisdienst
- DNS Server / DNS-Server
- File Replication Service / Dateireplikationsdienst
- Security / Sicherheit
- System / System
Das Template ist auf Englisch, funktioniert aber auch auf "deutschen" Server bzw. die eingestellte Sprache von Windows ist egal.
Es sollte ab Windows 2000 funktionieren und setzt einen installierten Zabbix-Agenten voraus.
Der Agent ist als Zabbix agent (active)
Voreingestellt ist folgendes:
- Nur Eventlog-Einträge ab der Stufe "Warnung" werden erfasst (Warning|Error|Critical)
- Nur neue Eventlog-Einträge ab der Zuweisung und Übernahme des Templates werden erfasst (Parameter skip)
- Für die Stufen "Warnung", "Fehler" und "Kritisch" sind Trigger eingericht mit den dazu passenden Stufen
- Für die Stufe "Information" gibt es Trigger, diese sind aber deaktiviert. Die Items sammeln auch keine Informations-Events
Da Eventlog-Einträge immer auch aus ganz viel Text bestehen reduziert das den benötigten Datenbank-Speicherplatz ganz enorm.
Items im Detail
Die Items sind mit folgendem Key aufgebaut: (Beispiel System-Eventlog)
eventlog[System,,"Warning|Error|Critical",,,,skip]
Im einzelnen bedeuten diese
eventlog[ : Agent soll Eventlog abfragen System : und zwar nur das Eventlog "System" , : ALLE Eventlogeinträge (kein Textfilter) ,"Warning|Error|Critical" : die diesen Stufen entsprechen , : Alle Quellen , : Alle Event-ID , : Ohne Zeilen-/Zeichenbegrenzung ,skip] : keine alten/historischen Einträge sondern nur neue ab Beginn der Überwachung
Mehr dazu in der offiziellen Anleitung: https://www.zabbix.com/documentation/2.4/manual/config/items/itemtypes/zabbix_agent/win_keys
Trigger im Detail
Beispiel System-Eventlog:
Die Trigger sind wie folgt aufgebaut (Beispiel System-Eventlog Fehler)
Trigger Name:
System Eventlog ERROR: {ITEM.LASTVALUE3}
Das Makro {ITEM.LASTVALUE3}
enthält den Text des Eventlogeintrages - warum kommt weiter unten.
Expression:
{DGHB Template Windows Eventlog English V2015-02-04:eventlog[System,,"Warning|Error|Critical",,,,skip].logseverity(0)}=4 and {DGHB Template Windows Eventlog English V2015-02-04:eventlog[System,,"Warning|Error|Critical",,,,skip].nodata(300)}=0 and {DGHB Template Windows Eventlog English V2015-02-04:eventlog[System,,"Warning|Error|Critical",,,,skip].regexp(.)}=1
und hier die Erklärung im Detail:
{DGHB ... ,skip].logseverity(0)}=4
Hiermit filtern wir aus den 3 Stufen "Warning|Error|Critical" gezielt die Stufe "Error" (=4) heraus, siehe auch die offizielle Anleitung https://www.zabbix.com/documentation/2.4/manual/appendix/triggers/functions
and {DGHB Template Windows Eventlog English V2015-02-04:eventlog[System,,"Warning|Error|Critical",,,,skip].nodata(300)}=0
Das Problem ist nun das wir auch nur noch Fehler mitgeteilt bekommen ... der Trigger auf Error würde also erst wieder auf "grün" zurückspringen wenn ein "Warning" oder "Critital" Event kommt. Wir wollen ja einerseits eine Benachrichtigung - und zwar nur über Fehler - andererseits soll so ein System auch irgendwann wieder "fehlerfrei" werden.
Durch diese
.nodata(300)=0
Ergänzung erreichen wir das. nodata
liefert 0 zurück wenn in dem angegebenen Zeitraum (hier 300 Sekunden/5 Minuten) neue Daten vom Host geliefert werden.
Da wir hier diese Prüfung mit and
Verknüpfen (in älteren Zabbix-Versionen &
) wird dieser Trigger nach 300 Sekunden ohne neue Daten / neue Fehlermeldung wieder grün.
Den Wert kann man natürlich auch auf Stunden oder Tage setzen - Da ich in der Regel über jeden ausgelösten Trigger eine Email versenden lasse bekomme ich dies trotzdem mit.
and {DGHB Template Windows Eventlog English V2015-02-04:eventlog[System,,"Warning|Error|Critical",,,,skip].regexp(.)}=1
Das ist jetzt "Blödsinn" und nur ein Kunstgriff. Der regexp(.)
Ausdruck prüft nur ob die Eventlog-Meldung mindestens ein Zeichen enthält - und das wird diese immer tun.
Warum also das ganze? Weil ich das innerhalb des Triggers nur Werte in Makros verwenden kann die auch verwendet wurden.
Durch den Zeichen-Vergleich haben wir einmal den ganzen Text der Eventlog-Meldung angefasst - und können diesen im Trigger-Namen verwenden! Im Trigger-Namen verwenden wir nämlich den Ausdruck {ITEM.LASTVALUE3}
- die 3 bezieht sich auf den 3. Wert den wir in der Expression verwenden. Dadurch wird die Fehlermeldung bei Auslösung in den Übersichten zumindest mit den ersten paar Wörtern sichtbar. Zudem wird der Text auch in die Beschreibung aufgenommen.
In {ITEM.LASTVALUE1}
steht demnach die Stufe der Meldung und in {ITEM.LASTVALUE1}
der Zeitpunkt der letzten Datenerfassung.
Tipp für Action
Wenn ihr euch die Triggermeldungen per Action als Email etc. senden lasst - baut in die Meldung unbedingt das Makro
{ITEM.VALUE1}
ein - dann könnt Ihr auch gleich den Text des Eventlog-Eintrages lesen.