Fileinfo - Prüfen ob eine Datei/Dateigruppe in einem Verzeichnis/Verzeichnisse älter als ist, wobei immer die jüngste datei inspiziert werden soll

CheckMK RAW Edition 2.2.0p16
deutsche GUI

Hallo Gemeinschaft,
ich versuch mich nunmehr seit einer Woche daran CheckMK in der oben genannten Version eine Meldung bezgl. jüngsten Dateien in einem Verzeichnis und auch Unterverzeichnisse abzuringen, sobald diese Datei länger als eine vorgegebene Zeit(periode) liegt.

CheckMK ist auf einem Linuxserver installiert.
Überwacht werden soll ein Windowsserver
Auf dem Windowsserver ist der Windowsagent mit fileinfo installiert und konfiguriert.

Auszug aus der check_mk.user.yml
fileinfo:
enabled: yes
path:
- ‘c:\daten**.*’

Prüfen des Agentenoutput auf dem Windowsserver über
cmk-agent-ctl.exe dump liefert auch alle Dateien im Verzeichnis und auch den darunterliegenden Verzeichnissen.
Diese kommen auch bei CheckMK an, denn es werden bei der Serviceerkennung weitere Services erkannt. Dies bezieht sich auf alle gefundenen Dateien.

Nun die Fragen:

  1. Wie schränke ich die Dateien auf eine Verzeichnisebene in CheckMK selbst ein. Ich möchte nicht unbedingt im Configfile auf dem Host immer rumwurschteln. Zudem wären dann ja wohl auch diese Verzeichnisse mit eingeschlossen. Wie schliesse ich also Verzeichnisse aus? Dies müsste über irgendwelche Gruppen gehen, doch ich habe noch nicht herausgefunden welche Regel das nun ist oder welche Kombination aus Regeln.
  2. Ich habe es irgendwie geschafft, dass CheckMK Dateien mit der Endung .txt erkennt und auch irgendwie verarbeitet, doch es gibt keine Meldung wenn die jüngste Datei älter als 2 Minuten ist.
    Im Test hatte ich folgende Regel erstellt:
    Setup > Services > Erzwungene Services > Größe, Alter und Anzahl von Dateigruppen > Regel Größe, Alter und Anzahl von Dateigruppen hinzufügen
    Maximales Alter der jüngsten Datei → 2 Minuten
    Dazu noch explizit den Host angegeben.
    Leider passierte nach den festgelegten 2 MInuten nichts.
    Was mache ich falsch?

Es kommt noch hierzu, dass die periodische Serviceerkennung neue Dateien natürlich findet und diese dann nicht zuteilt (ist so gewollt) und deswegen eine Meldung (Warnung) ausgibt. Dies sollte unterbunden werden, denn in den Verzeichnissen kommen laufend neue Dateien hinzu und werden wieder gelöscht, da dies ein Durchlauf von zu verarbeitenden Dateien ist. Deswegen die Überwachung, damit man erkennt ob die Verarbeitung im Hintergrund funktional ist.

Ich hoffe es gibt Personen hier, welche mir Tips und Unterstützung bieten. Danke im voraus.

Hallo Michael,

du benötigst zu der von dir bereits konfigurierten Ebene noch eine sogenannte FileGroup, die dir deine Dateien dann logisch zussammenfasst.
Auf diese Gruppe kannst du dann die von dir gewünschten Schwellwerte setzen.

Die Einrichtung ist hier erklärt :

https://checkmk.atlassian.net/wiki/spaces/KB/pages/9471395/How-to+monitor+files+Agent-based+Linux+Windows

Prima, danke sehr.
Ich kenn nun auch meinen Fehler…
Prinzipiell habe ich auch vorher alles schon so gemacht wie im Link beschrieben. Ich bekam allerdings immer eine Kritisch Meldung… warum? Ich Depp hab den Parameter für ab wann Kritisch nicht gesetzt und diesen bei 0 gelassen in der Hoffnung, dass Null eben nicht gewertet wird. Pustekuchen, checkMK macht dann eben genau das und setzt die Meldung bei Alter null ab.

Find ich sehr geil, dass die Frage ASAP beantwortet wurde und das auch korrekt und sinnreich. In so manchen Foren ist das nicht so und man erhält erstmal irrelevante und nicht zielführende Antworten, wenn nicht gar mit Gegenfragen garniert nach dem Motto warum muss das so und so sein.

Deswegen nochmals herzlichen Dank.

1 Like

Bleibt noch eine Sache…
Wie bekomme ich es hin, wenn ich innerhalb eines Verzeichnisses nur bestimmte Unterverzeichnisse einschließen möchte bzw. bestimmte unterzeichnisse ausschließen möchte.

Meine Config sieht ja vor rekursiv und nach allen Dateien zunächst zu suchen
c:\daten**.*
Der Agent findet also alle Dateien in allen Verzeichnissen unterhalb von c:\daten
prima

Nun möchte ich checkmk mitteilen, dass für eine Gruppe nur das Verzeichnis c:\daten\o1 zu durchsuchen ist, und da eben alle *.txt dateien. Letzteres geht auch soweit
Im Verzeichnis c:\daten\o2 sollen alle Dateien mit der Endung *.tmp gefunden werden und entsprechend geprüft werden.

Ich bin mir sicher ich finde das heraus, doch vielleicht geht es hier dann doch bequemer.

Danke im Voraus die Hilfestellung.

Hi Michael,

du kannst einfach im Agenten mehrere Zeilen mit Verzeichnissen mit unterschiedlichen FileGlobbing Parametern angeben.

path:
- c:\daten\o1\*.txt
- c:\daten\o2\*.tmp

In der Filegrouping Regel kannst du das dann entsprechend anpassen. Entweder du machst zwei Gruppen mit zwei Regeln daraus, oder arbeitest mit einem regex, um alle Dateien zusammen zu einer fassen.
Das hängt aber von deinem Einsatzzweck ab.

Wie verhälts es sich denn, wenn ich im Verzeichnis c:\daten starten, dieses rekursive durchsuche, also inkl. o1 und o2 und zukünftige…
kann ich die suchtiefe in der filegroupingregel entsprechend anpassen, also darauf basierend auswählen: suche in o2 und darunterliegende oder geht das nur in der config?
und wie wähle ich nun aus den zwei pfaden einen der beiden für gruppe1 und den anderen für gruppe2 aus.

So kannst du beide Gruppen unabhängig voneinander betrachten und für beide unterschiedliche Schwellwerte definieren.

achso… noch was.
checkmk meckert jede neue datei als neuen service zur überwachung an (noch nicht zugeteilt)
in der übersicht sehe ich das nicht doch es nervt bei der servicesuche. kann man das explizit abstellen?
und dann wird der zugeteilte service, welchen wir nun hier definiert haben immer wieder nicht zugeteilt bzw. steht als verschwunden da. wieso?

ah ok… danke (betr. filegruppen)

Dann klappt deine Filegrouping Regel mit dem gewählten Pattern nicht richtig.
Wenn es richtig eingerichtet ist, gibt es hinterher für jede FileGroup einen check und nicht mehr für die einzelnen Dateien.
Du musst den Host aber nach der Einrichtung dann noch mal neu discovern, damit die Services verschwinden.

das pattern *.txt macht schon das was es soll.
kommt aber eine andere dateiendung dazu dann meckert checkmk
liegt das daran, dass dann dieses pattern aus der prüfung rausfällt weil nicht angegeben?

die services lass ich immer nach jeder änderung neu suchen. da seh ich das dann.
vor allem nervt, dass der einmal eingebundene service auf einmal als verschwundener service drinsteht und da auch nicht rauszubekommen ist, also wieder in die gruppe der regulären services.

Wenn du vom Agenten aus Dateien ausgibst, die auf der checkmk Server Seite nicht von den Filegroup Pattern “erwischt” werden, dann werden diese Dateien als eigene Services erstellt.

OK. könnte ich mit leben und klingt auch logisch.
kann man dies evtl. unterbinden und falls ja wie.

bleibt noch das problem mit dem verschwundenen service
grafik

der verschwundene service wird dennoch überwacht und meldet auch korrekt.

In deiner Darstellung ist es ja genau falsch rum, du willst eigentlich die Filegroups als Service und die einzelnene Dateien nicht.
D.h. du musst schauen, warum deine Filegroup die Dateien nicht richtig “matcht”.

jetzt bin korrekt verwirrt…
im moment meldet mir das dingens nur noch ok obwohl nach 3 minuten eine warnung und nach 5 minuten eine kritisch kommen sollte.

ok hier der auszug aus der config für den agent auf dem zu überwachenden host

fileinfo:
enabled: yes
path:
- ‘c:\daten**.
- 'c:\daten\o1*.

- ‘c:\daten\o2*.*’

Dies sollte ja nun in der filegruppenregel nun entsprechend den hier definierten pattern exakt auch dort definiert werden und kann damit dann aufgedröselt werden.

hier nun eine der filegruppenregeln

in der anderen regeln (gruppe o2) steht für …\o2*.tmp
und für die gruppe all gibt es c:\daten*.*

und dazu dann jeweils analog diese regel

Prima… case sensitiv.
Der Pfadname ist case-sensitiv, ist er nicht.
Der übergeordnete Ordner heißt “Daten” und das ist anders als “daten” in der filegruppe. Man muss also exakt den ordnernamen case sensitiv hinter legen. Im configfile ist das egal.
grmpf.

So, ich schon wieder und wieder eine Frage zur Verzeichnis und Dateiüberwachung.
Allerdings dieses mal auf dem Linux Agent.

Aufgabe
Auf einem Linuxsystem soll ein Verzeichnis und dessen Unterverzeichnisse überwacht werden. Dabei werden dort Dateien und Verzeichnisse immer wieder angelegt und gelöscht. Man kann also nicht einfach die Verzeichnisse hart in die fileinfo.cfg schreiben. Das muss dynamisch/rekursiv sein. Beim Windows Agent geht das ja ohne Probleme.

Ich habe nun mal ein paar Verzeichnisse und ein paar Dateien angelegt.
Mein Stammverzeichnis von wo aus gestartet wird ist /root/Dokumente
Da gibt es Dateien und ein Verzeichnis, in welchem wieder Dateien und ein weiteres Verzeichnis liegen. Könnte man beliebig fortsetzen.
Es sollen nun alle Dateien in allen Unterverzeichnissen durch den Linux Agent an CheckMK übermittelt werden.

Wie muss die fileinfo.cfg dafür aussehen?
Im Moment sieht meine fileinfo.cfg wie folgt aus
/root/Dokumente/*
Damit werden alle Dateien im Verzeichnis /root/Dokumente übermittelt, jedoch keine einzige Datei aus den Unterverzeichnissen. Bei Windows ist das so schön einfach.
Gibt es beim Linux Agent einen ebenso mächtigen wie einfachen Trick?

Du musst nur den Stern weglassen, also:

input_patterns: /root/Dokumente

Der / am Ende ist optional und ändert nichts, d.h. es ginge auch /root/Dokumente/.
Die Doku sagt dazu: Wenn man bei input_patterns ein Verzeichnis angibt, dann wird das rekursiv durchsucht:

* ``input_patterns'':
  Here you can specify one or more *globbing* patterns. If more than one
  pattern is provided, they will be splitted according to shell rules
  (using shlex.split). Every matching file will be dealt with, every
  matching folder will recursively searched for *all* files.

Mit /root/Dokumente/* hast du aber nicht ein Verzeichnis angegeben, sondern N Dateien (die in /root/Dokumente liegen).

Geht leider nicht :frowning:

Oben im Terminal die Ausgabe
grep /root ist nur dazu da, dass nicht alles da rausrattert
auch wenn ich grep txt mache (es gibt durchaus .txt Dateien) kommt nichts.

Mit Stern sieht das dann so aus

Da kommen wenigstens die Dateien im angegebenen Verzeichnis.