Hallo Liste,
seit mittlerweile September letzten Jahres setze ich das geniale check_mk zum Überwachen von primär Windows-Hosts ein.
Ich finde es etwas schade, dass die bestätigten Logmeldungen vom Monitoring-Server verschwinden. Hier wäre nämlich cool, wenn die bestätigten Meldungen quasi in Archiv-Files liegen bleiben und man könnte über alle Hosts über einen Zeitraum z.B. alle VSS-Events rauslassen (cat / grep rekursiv auf archivbaum) somit könnten schleichende Veränderungen (wann ist VSS Error auf welchen Systemen zuerst aufgetreten) relativ einfach ermittelt werden (hat mir bei der bisherigen Variante - Logmeldungen werden im nagios.log protokolliert) schon paar mal gewaltig weitergeholfen.
Um dieses "Manko" etwas zu lindern, habe ich mir mal die Python-Skripts angesehen, welche durchlaufen, wenn man die Logfiles bestätigt. Hier habe ich quasi hinter den "Bestätigungsknopf" eine Funktion hinterlegt, die die logwatch-Files VOR dem Löschen ausliest und in ein Archivverzeichnis überträgt und ggfs. fortschreibt.
Folgende Änderungen habe ich vorgenommen:
In /usr/share/check_mk/web/htdocs/defaults.py habe ich folgende Variable mit eingefügt:
logwatch_archive_dir = '/var/lib/check_mk/logwatch_arch'
Dann habe ich das Verzeichnis /var/lib/check_mk/logwatch_arch MANUELL (ja - sorry) angelegt und schreibenden Zugriff für den User des Webservers aktiviert.
Im Modul /usr/share/check_mk/web/htdocs/page_logwatch.py
habe ich ab Zeile 173 folgendes eingetragen (bei Version 1.1.8 / Funktion
do_log_ack):
# Submit acknowledged Messages to archive
# Open plain logwatch-message-file
loginhalt = open(defaults.logwatch_dir + '/' + host + '/' + file, 'r')
# check archive path - if not exist create
archive_file_path = defaults.logwatch_archive_dir + '/' + host + '/' + file
if not os.path.exists(defaults.logwatch_archive_dir + '/' + host):
os.makedirs(defaults.logwatch_archive_dir + '/' + host),
# if archive-logfile exist - open it and append acknowledged messages
logfile = open(defaults.logwatch_archive_dir + '/' + host + '/' + file, 'a')
for line in loginhalt:
logfile.write(line),
# close files
logfile.close()
loginhalt.close()
# remove acknowledged files from check_mk logwatch default-logwatch path
os.remove(defaults.logwatch_dir + '/' + host + '/' + file)
Das Ganze hört sich jetzt wahrscheinlich etwas abenteuerlich an - aber es scheint erstmal zu funktionieren - im Archivbaum wachsen die bestätigten Logfiles.
Wie ist Eure Meinung dazu?
Evtl. könnte man die "Archivfunktion" quasi als Option im check_mk Logwatchmodul mit fest einbauen. Somit koennte z.B. in defaults.py eine Option vielleicht lauten "enable archiv = yes / no " und ggfs. die Sache mit den Verzeichnisanlegen besser programmieren.
Grüße
Wolfgang Ströhlein