Windows Eventlog überwachen
Inhaltsverzeichnis
Vorwort[Bearbeiten]
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:
- Den eben genannten Agenten, zu installieren auf dem Windows System (Version 1.9.1 läuft bei mir auch auf Windows Server 2008 R2)
- Am Nagios-Server ist das Paket nsca zu installieren
NSCA - Die Linux-Seite[Bearbeiten]
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[Bearbeiten]
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.
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
- System Log
- Application Log
- Security Log
bearbeiten:
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[Bearbeiten]
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.