[Check_mk (deutsch)] check_mk logwatch - Archivfunktion / Bestätigte Meldungen auf check_mk Host bzw. Nagios Host belassen für spätere, zentrale Analyse

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

Hallo Wolfgang,

ich persönlich bin der Meinung, dass es für Logfilearchive bessere Lösungen gibt. Deswegen macht Check_MK hier auch keinen Versuch, eines
zu ersetzen. Denn man wecht ja nur Begehrlichkeiten. Der nächste möchte
dann Funktionen, um im Archiv zu suchen, etc. Außerdem gibt es noch
das Problem, das manche Logfiles irrsinnig viele Daten liefern. Dann
braucht man noch eine Funktion, die das Archiv aufräumt usw. Deswegen
bin ich - so nützlich die Funktion auch im Einzelfall sein mag - dagegen, das ins Check_MK aufzunehmen.

Viele Grüße,

Mathias

···

Am 27.01.2011 10:47, schrieb Stroehlein, Wolfgang:

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

_______________________________________________
checkmk-de mailing list
checkmk-de@lists.mathias-kettner.de
http://lists.mathias-kettner.de/mailman/listinfo/checkmk-de

Hi (noch Wolfgang zum Thema :wink:

ich persönlich bin der Meinung, dass es für Logfilearchive bessere
Lösungen gibt. Deswegen macht Check_MK hier auch keinen Versuch,
eines zu ersetzen.

Für Syslogs aus Unix-Umgebungen wäre check_mk aufzubohren aus meiner Sicht
Overkill. Aber wenn ich mir das so auf Windows-Seite überlege ... .ich habe
ne Zeitlang evtsys eingesetzt, aber Windows ist einfach zu geschwätzig ...
und nsclient++ für Eventlogs zu umständlich.

Idee: wenn man die von check_mk protokollierten Ereignisse (und nur diese,
dann kann man den Filter schön in check_mk setzen) optional an einen lokalen
Syslog weiterreichen kann, der dann die Archivierung und weiss ich was
sonst noch übernimmt?

wob

···

On Sun, Jan 30, 2011 at 01:14:26PM +0100, Mathias Kettner wrote:
--
<wob (at) swobspace de> * http://www.swobspace.de