Windows Server - Textdatei durchsuchen

Hallo,
ich habe folgendes vor, komme aber leider nicht zu einem Ergebnis:
Auf einem Windows Server befindet sich eine Log-Datei D:\log\test.log.
Diese Datei möchte ich nach dem Begriff error durchsuchen.
Wenn error vorhanden, dann ein Warning im checkmk anzeigen lassen.

Ich habe bereits mit mk_logwatch.py und mk_logwatch.exe versucht ein Resultat zu bekommen, aber leider wird mir der zusätzliche Service nicht angezeigt.
Aktuelle checkmk-Version: 2.0.0p33 (CRE)

Gruß
Sascha

Hallo Sascha,

Bitte lese Dir erstmal die Docu dazu von vorn bis hinten durch:

Und wenns immer noch nicht klappt einfach nochmal durchlesen :wink:

Gruß

Michael

Hallo,

die Event Console ist dafür nicht notwendig.
Du brauchst drei Dinge…
Das Python Modul für den checkmk Agenten, das Plugin mk_logwatch.py und eine Konfigurationsdatei für das logwatch Plugin, mit dem du dem Plugin mitgibst, welche pattern du matchen möchtest.

Wenn ich am Wochenende Langeweile habe, schreibe ich das mal in einem Howto zusammen.

1 Like

Ich danke dir für deine Unterstützung. Das ist auch die Konstellation mit der ich es probiert habe. Vielleicht bringst du ja Licht ins Dunkle.

Hallo Sascha,

wird das Logfile “D:\log\test.log” im Agent Output in der Sektion “<<<logwatch>>>” aufgelistet?

Wenn nicht dann hast du ggf. noch irgend einen Fehler in der Konfiguration:

D:\log\test.log 
 C error

Evtl. auch mal im check_mk.log püfen ob Fehlermeldungen zu mk_logwatch vorhanden sind.
Gruss, Lars

Guten Morgen. Ich werde es nochmal ausführlich testen und später berichten.

Guten Morgen. Ich habe es heute mal wieder getestet.
Ich bin wie folgt vorgegangen:

  1. mk_logwatch.py in C:\ProgramData\checkmk\agent\plugins\ abgelegt.
  2. logwatch.cfg in C:\ProgramData\checkmk\agent\config wie folgt konfiguriert:
D:\log\test.log 
 C error

Das Logfile wird in der Sektion nicht aufgelistet. (cmk -d servername)

Ein Blick in die check_mk.log führt folgenden Eintrag auf:

`Plugin 'C:\ProgramData\checkmk\agent\plugins\mk_logwatch.py'  is  sync with age:0 timeout:60 retry:0`

Wenn ich das Skript im Debug-Modus laufen lasse: mk_logwatch.py -d erscheint folgende Meldung:
  File "C:\ProgramData\checkmk\agent\plugins\mk_logwatch.py", line 1170, in <module>
    main()
  File "C:\ProgramData\checkmk\agent\plugins\mk_logwatch.py", line 1120, in main
    logfiles_config, cluster_config = read_config(files, args.debug)
  File "C:\ProgramData\checkmk\agent\plugins\mk_logwatch.py", line 387, in read_config
    config_lines = list(iter_config_lines(files, debug=debug))
  File "C:\ProgramData\checkmk\agent\plugins\mk_logwatch.py", line 327, in iter_config_lines
    raise IOError("Did not find any content in config files: %s" % ", ".join(files))
IOError: Did not find any content in config files: ./logwatch.cfg

OK, da ist der Pfad wohl nicht richtig definiert. Also habe ich die logwatch.cfg ins Plugin Verzeichnis kopiert und das Skript nochmal laufen lassen. Dann erscheint folgende Meldung:

<<<logwatch>>>
Traceback (most recent call last):
  File "C:\ProgramData\checkmk\agent\plugins\mk_logwatch.py", line 1170, in <module>
    main()
  File "C:\ProgramData\checkmk\agent\plugins\mk_logwatch.py", line 1132, in main
    found_sections, non_matching_patterns = parse_sections(logfiles_config)
  File "C:\ProgramData\checkmk\agent\plugins\mk_logwatch.py", line 989, in parse_sections
    logfile_refs = find_matching_logfiles(glob_pattern)
  File "C:\ProgramData\checkmk\agent\plugins\mk_logwatch.py", line 907, in find_matching_logfiles
    matches = list(glob.glob(glob_pattern))
  File "C:\Python27\lib\glob.py", line 16, in glob
    return list(iglob(pathname))
  File "C:\Python27\lib\glob.py", line 25, in iglob
    if os.path.lexists(pathname):
  File "C:\Python27\lib\genericpath.py", line 18, in exists
    os.stat(path)
TypeError: must be encoded string without NULL bytes, not str

Habe auf einem Testsystem nochmal Python-3.8 installiert und dann per C:\ProgramData\checkmk\agent\plugins>mk_logwatch.py -d das Skript gestartet.
Das Ergebnis sieht jetzt zwar besser aus, aber leider immer noch nicht zufriedenstellend:

<<<logwatch>>>
[[[D:\log\test.log]]]

Wenn das der Output des ersten Durchlauf war, dann ist das so korrekt. Beim ersten Durchlauf trägt mk_logwatch im zugehöorigen Statefile nur ein wie lang das Log bereits ist, damit nicht 4 Millionen alte Zeilen an den Server geschickt werden. (Zusammen mit dem Batching ist da ganze tatsächlich noch etwas anders, aber das geht hier zu weit.)

Füge nach dem ersten (manuellen) Lauf von mk_logwatch mal neue Zeilen mit Fehlern in das Log ein und lass mk_logwatch dann nochmal mit -d laufen.

Stimmt. Irgendwie beim ganzen testen nicht auf dem Schirm gehabt.
Habe jetzt mal 7 Zeilen hinzugefügt. Ergebnis:

<<<logwatch>>>
[[[D:\log\test.log]]]
. 2023-03-25T00:05:54Z: Error Testeintrag 1e[0m
. 2023-03-25T00:20:54Z: Error Testeintrag 2e[0m
. 2023-03-25T00:20:54Z: Error Testeintrag 3e[0m
. 2023-03-25T00:20:54Z: Error Testeintrag 4e[0m
. 2023-03-25T00:20:54Z: Error Testeintrag 5e[0m
e[1;31mC 2023-03-25T00:35:54Z: ERROR Testeintrag 6e[0m
e[1;31mC 2023-03-25T00:35:54Z: ERROR Testeintrag 7e[0m

Ich denke, dass wir jetzt einen Schritt weiter sind, aber unter Services wird mir leider noch nichts angezeigt.

Wenn mk_logwatch eine Sektion erzeugt, sollte das auch im Agent Output ankommen. Lasse diesen nochmal auf dem Host manuell laufen und prüfe, ob da eine Logwatch-Sektion und der Hinweis auf test.log drin steht.

Wenn das so ist, dann sollte nach einer Service Discovery auch der Service in Checkmk entstehen. Egal ob da jetzt Log-Zeilen drin stehen oder nicht.

Neuer Tag, neues Glück.
Wenn ich auf dem Windows Host check_mk_agent.exe test | more ausführe, wird in der Ausgabe folgende Sektion angezeigt:

<<<logwatch>>>
[[[Application]]]
[[[HardwareEvents]]]
[[[Internet Explorer]]]
[[[Key Management Service]]]
[[[Security]]]

Hier fehlt leider der neue Eintrag.

Die Ausführung des Skripts funktioniert, wie gesagt, jetzt problemlos.

Was habe ich möglicherweise vergessen ?

This topic was automatically closed 365 days after the last reply. New replies are no longer allowed. Contact an admin if you think this should be re-opened.