Windows Eventlog überwachen

Aus ITwiki
Wechseln zu: Navigation, Suche

Vorwort

Sinn oder Unsinn - das ist hier die Frage. Wer das Windows Ereignisprotokoll überwachen möchte, hat einiges vor. Allerdings gibt es ein Tool von Cheshire Cat Software namens Nagios EventLog und einen dazu passenden Windows Agenten. Man benötigt also folgendes:

  1. Den eben genannten Agenten, zu installieren auf dem Windows System (Version 1.9.1 läuft bei mir auch auf Windows Server 2008 R2)
  2. Am Nagios-Server ist das Paket nsca zu installieren

NSCA - Die Linux-Seite

NSCA ermöglicht es, so genannte Passive Prüfungen (Passive Checks) auszuführen. Grob gesagt führt hier nicht Nagios einen Systemcheck durch, sondern der Client führt die Prüfung aus und teilt dies Nagios mit - Details siehe hier. Bei Debian Squeeze ist nsca per aptitude nachinstallierbar. Die Konfig /etc/nsca.cfg sieht bei mir wie folgt aus:

pid_file=/var/run/nsca.pid
server_port=5667
nsca_user=nagios
nsca_group=nogroup
debug=0
command_file=/var/lib/nagios3/rw/nagios.cmd
alternate_dump_file=/var/run/nagios/nsca.dump
aggregate_writes=0
append_to_file=0
max_packet_age=30
password=deinnscapasswort
decryption_method=3 #3DES Verschlüsselung

Den Dienst noch starten und schon fertig:

/etc/init.d/nsca restart

Windows EventLog Agent - die Windows-Seite

Die Programminstallation sollte nahezu selbsterklärend sein: man wird nach Nagios Servername und Port gefragt. Wichtig bei Angabe des Hostnamen: hier muss exakt der Name stehen, der auch in Nagios als "Hostname" hinterlegt ist! Beim NSCA Passwort gib das ein, was du in der nsca.cfg bei

password=

eingegeben hast. Solltest du nach der Installation nun beim Programmstart eine Fehlermeldung

Fehler beim Generieren des Aktivierungskontextes für "C:\Program Files (x86)\Monitoring\NagEvLogCtrl.exe". Die abhängige Assemblierung "Microsoft.VC80.MFC,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50608.0"" konnte nicht gefunden werden. Verwenden Sie für eine detaillierte Diagnose das Programm "sxstrace.exe".

erhalten, installiere das Microsoft Visual C++ 2005 Redistributable Package, 32 Bit - dann lässt sich das Programm auch starten. Wenn dir das Programm nun sagt, dass der Dienst NagiosEventLog nicht (richtig) installiert ist, stelle (unter Windows 7, Vista, Server 2008 R2, 2008) sicher, dass du das Programm "Als Administrator" gestartet hast.

Nagevtlog01.jpg

Nach Klick auf "NSCA Daemons" musst du noch die passende Verschlüsselung einstellen - also jene, die in der nsca.cfg am Server hinterlegt wurde. Im Bereich "Filters" kannst du nun die 3 Standardfilter

  1. System Log
  2. Application Log
  3. Security Log

bearbeiten:

Nagevtlog02.jpg

Im Screenshot siehst du, dass ich nicht nur die kritischen, sondern auch die Warnmeldungen protokolliere. Durch setzen des Hakens bei "Event IDs (comma list) Not" lege ich fest, dass für die hier angegebenen Eventlog IDs (durch Komma getrennt) KEINE (deshalb der Haken "Not") Nagios-Ereignisse ausgelöst werden. Wichtig: der bei "Service Name" eingegebene Text muss genau dem Wert entsprechen, den du in Nagios für den dort definierten Servicenamen eingegeben hast - sonst geht's nicht!

Nach Klick auf "OK" und starten des Dienstes kann man sich an die Nagios-Konfiguration machen.

Nagios Service-Konfiguration abändern

In deiner Service-Konfigurationsdatei füge nun für das Überwachen des Application Logs folgendes ein:

define service {
# host                          DEIN HOST ... oder
hostgroup_name                  DEINE_HOSTGRUPPE
# Muss exakt dem entsprechen, was du im Windows Client hinterlegt hast:
service_description             Windows Application EventLog
use                             eventlog
check_command                   check_evtlog!0
register                        1
}

Mein Service-Template "eventlog" sieht so aus:

define service {
name                            stpl_windows_eventlog_24x7_mail
service_description             Service Template Windows EventLog 24x7, Mail Notification
initial_state                   o
max_check_attempts              1
check_interval                  10
active_checks_enabled           0
passive_checks_enabled          1
check_period                    24x7
check_freshness                 1
flap_detection_enabled          0
notification_interval           0
notification_period             24x7
notification_options            w,u,c
notifications_enabled           1
contact_groups                  DEINE_KONTAKTGRUPPE
register                        0
}


und in meiner commands.cfg steht

define command {
command_name                    check_evtlog
command_line                    $USER1$/check_dummy $ARG1$
register                        1
}


Grob gesagt: der check_evtlog-Befehl, der in der Servicedefinition "Windows Application EventLog" aufgerufen wird, gibt immer OK zurück - ein Dummy-Befehl. Zum Überwachen brauchen wir hier passive Prüfungen (oben erwähnt was das ist). Tritt also nun im Anwendungsprotokoll eines Servers, der der Hostgrouppe "DEINE_HOSTGRUPPE" angehört, eine Warnung oder ein Fehler auf, so läst der Windows Client in Nagios eine entsprechende Aktion aus, die angegebene Kontaktgruppe wird per Mail benachrichtigt. Es macht übrigens keinen Sinn, bei "max_check_attempts" einen anderen Wert als 1 hinzuschreiben: im Windows Log wird wohl kaum ein "Problem behoben"-Eintrag auftauchen, daher macht eine erneute Prüfung keinen Sinn. Beachte auch: es wird genau 1 Mail verschickt, dann ändert sich automatisch nach gewisser Zeit der Nagios-Zustand des Services wieder in "OK" - nochmal: wir können im Windows Eventlog keinen Zustand hinterlegen, mit dem ich Nagios mitteilen könnte "Hey, ich habe das Eventlog angesehen, der Fehler wurde behoben".

Ich hoffe, ich konnte das Ganze einigermaßen erklären. Im Web gibt es noch weitere Erklärungen, wie NagiosEventLog funktioniert und eingerichtet werden kann.

Nützliche Links