Checkmk
to checkmk.com

1. Grundlagen zur Dateiüberwachung

Mit Checkmk können Sie Dateien bezüglich Anzahl, Größe und Alter überwachen, einzeln oder in Gruppen. Diese Funktion lässt sich äußerst vielfältig einsetzen. Beispielsweise lässt sich damit der Erfolg von Backup-Strategien überwachen: Ist die richtige Anzahl an Archiven vorhanden? Ist keines der Backups älter als X Tage? Ist eines der Backups verdächtig groß oder klein? Sie können auch unternehmensweite Dateiserver darauf abklopfen, ob Nutzer diese als private Ablage für Filme missbrauchen. Oder ganz klassisch Auslagerungs- oder flüchtige Dateien wie Container im Auge behalten.

Das grundsätzliche Vorgehen entspricht dem Checkmk-Standard: Im Agenten wird ein Plugin/eine Konfiguration installiert, das die gewünschten Informationen über Dateien oder Dateigruppen ins Monitoring bringt. Dort wird dann über entsprechende Regelsätze bestimmt, welche Eigenschaften zu welchen Status führen.

Die eigentliche Filterung, also welche Daten überhaupt im Monitoring landen, geschieht im Agenten. Sie können hier über Globbing-Muster beispielsweise Dateien ganzer Verzeichnisse rekursiv einbeziehen oder auch nur bestimmte Dateitypen oder gar einzelne Dateien. Über Globbing-Muster wie /myfiles/*.* können dabei unter Umständen enorm große Dateilisten entstehen, obwohl Sie vielleicht nur an besonders alten oder großen Dateien interessiert sind. Diesem Umstand ist es geschuldet, dass es derzeit zwei Agenten- und zugehörige Monitoring-Regelsätze gibt: Das ältere fileinfo ist bereits im Agenten eingebaut und filtert nur nach Globbing-Muster/Pfad, das neuere mk_filestats muss als Plugin separat installiert werden und filtert nach weiteren Eigenschaften.

Es gibt noch weitere Unterschiede zwischen mk_filestats und fileinfo, die wir im Folgenden aufzeigen werden. Der wichtigste Unterschied: mk_filestats kann nur Linux-Hosts überwachen, fileinfo hingegen auch Windows-Hosts. Für Linux-Hosts sollten Sie in der Regel das aktuellere mk_filestats verwenden.

2. Unterschiede mk_filestats und fileinfo

Wenn Sie die Regelsätze der beiden Varianten der Übersicht halber nebeneinander sehen wollen, geben Sie einfach im Setup-Menü size age ein. Die Regeln für einzelne Dateien und Gruppen heißen (weitgehend) identisch, die mk_filestats-Regeln sind aber explizit als solche ausgewiesen. Beide Varianten von Service-Regeln gibt es zusätzlich als erzwungene Services.

Setup-Menü mit mk_filestats- und fileinfo-Einträgen.
fileinfo-Regeln sind nicht explizit gekennzeichnet

Unterschiede der beiden Varianten gibt es auf Agenten- und Service-Ebene. Hier zunächst die groben theoretischen Unterschiede. Die Details sehen Sie dann im Anschluss in den konkreten Anleitungen für das Agentenplugin mk_filestats und für fileinfo des Agenten.

Beim Agenten zeichnet sich mk_filestats durch zwei Möglichkeiten aus, die fileinfo fehlen: mk_filestats bietet zum einen die bereits erwähnten zusätzlichen Filtermöglichkeiten, nämlich nach Dateigröße, -anzahl und -name, letzteres in Form regulärer Ausdrücke. So könnten Sie bei einem Globbing-Muster /myfiles/* beispielsweise nur die Dateien ins Monitoring holen, die größer als 1 KB sind und backup irgendwo im Dateinamen haben. Zum anderen werden bei mk_filestats auch Dateigruppen direkt in der Plugin-Konfiguration festgelegt, ganz einfach, indem mehrere Filter angelegt werden, die dann jeweils als eigene Sektion in der Agentenausgabe landen und später über die Sektionsnamen von Regeln angesprochen werden können.

Bei den Service-Monitoring-Regeln unterscheiden sich die Wege von mk_filestats und fileinfo eher im Detail. Beide können Auswertungen auf bestimmte Zeitperioden beschränken, aber nur fileinfo ermöglicht die explizite Angabe von Zeitfenstern pro Tag direkt in der Regel. Ebenfalls exklusiv kann fileinfo für Dateigruppen so genannte Conjunctions konfigurieren. Dabei wird für jeden Status eine Reihe von Bedingungen verknüpft, also zum Beispiel: „Der Status geht auf CRIT, sobald die älteste Datei der Gruppe genau 5 Stunden alt und die kleinste Datei genau 8 Megabyte groß ist.“ Im Gegenzug liefert mk_filestats für Dateigruppen die Option, Ausreißer zu definieren: Angenommen, eine Dateigruppe soll auf CRIT gehen, sobald die Gruppengröße 2 Gigabyte übersteigt. Wenn die Gruppe aber nicht auf CRIT gehen soll, wenn eine bestimmte einzelne Datei allein schon auf über 1 Gigabyte kommt (etwa eine temporäre Datei), so können Sie dies als Sonderfall definieren und die Gruppenregel damit fallweise überschreiben.

Die Unterschiede in der Übersicht:

Feature mk_filestats fileinfo

Überwachte Betriebssysteme

Linux

Linux und Windows

Agent

Agentenplugin

Im Agenten enthalten

Filter

Filtert direkt im Agenten nach Globbing-Muster und Eigenschaften

Filtert im Agenten nur nach Globbing-Muster

Dateilisten

Liefert schlanke Dateilisten

Liefert bisweilen ausschweifende Dateilisten

Dateigruppierung

Gruppiert direkt im Agenten

Gruppiert über einen separaten Monitoring-Regelsatz

Anzeige von Dateien

Zeigt optional Dateien in den Service-Details

Zeigt immer Dateien in den Service-Details

Dateiauswertung

Kann Ausreißer bei den Dateien berücksichtigen

Kann Zusammenhänge zwischen Dateien berücksichtigen

In den folgenden Kapiteln sehen Sie nun die beiden Funktionen einzeln im praktischen Einsatz — dabei sollten die geschilderten Unterschiede und Features deutlich werden. mk_filestats liefert zudem selbst ausführliche Informationen über den Aufruf filestats.py --help.

3. Dateien überwachen mit mk_filestats (Linux)

Im folgenden Beispiel sehen Sie das Vorgehen für Gruppen von Dateien. Bei einzelnen Dateien ist das Prozedere identisch, es gibt lediglich weniger Optionen. Angenommen, Sie möchten eine Gruppe von Backup-Dateien (mybackup_01.zip etc.) überwachen, die eine bestimmte Anzahl haben und eine minimale Größe nicht unterschreiten sollen, dann können Sie wie folgt vorgehen:

3.1. Regel für das Agentenplugin konfigurieren

Konfiguration über Agentenbäckerei

CEE In den kommerziellen Editionen rufen Sie zunächst die Regel für das Agentenplugin Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules > Count, size and age of files - mk_filestats (Linux) auf. Unter Section name vergeben Sie einen beliebigen Namen, der so später in der Agentenausgabe als eigenständige Sektion erscheint.

Unter Globbing pattern for input files geben Sie dann an, welche Dateien überwacht werden sollen. Dabei können Sie Globbing-Muster nutzen, also letztlich Pfadangaben mit Platzhaltern. Hier soll es bei einer absoluten Pfadangabe bleiben, die alle Dateien im angegebenen Ordner einbezieht.

Die weitere Filterung übernehmen hier die nächsten beiden Optionen: Filter files by matching regular expression inkludiert Dateien nach angegebenem Muster, hier Dateien mit my irgendwo im Namen. Filter files by not matching regular expression exkludiert dann Dateien, hier solche, die auf tmp enden.

Formular zur Konfiguration des Agentenplugins mk_filestats.
Achten Sie auf die Unterscheidung von Globs und regulären Ausdrücken

Damit ist die Konfiguration abgeschlossen und Sie können das Plugin samt Konfiguration über die Agentenbäckerei verteilen.

Manuelle Konfiguration

CRE In der CRE Checkmk Raw Edition konfigurieren Sie das Plugin wie üblich über eine Textdatei: Eine Beispielkonfiguration finden Sie als Instanzbenutzer in der Datei share/check_mk/agents/cfg_examples/filestats.cfg. Eine Konfiguration gemäß obiger Vorgaben sieht dann so aus:

/etc/check_mk/filestats.cfg
[myfiles]
input_patterns: /media/evo/myfiles/
filter_regex: .*my.*
filter_regex_inverse: tmp$

Damit ist die Konfiguration abgeschlossen und Sie können das Agentenplugin manuell installieren.

Daten in der Agentenausgabe

Das Ergebnis Ihrer Konfiguration finden Sie dann in Form von Rohdaten in der Agentenausgabe:

mysite-myhost-agent.txt
<<<filestats:sep(0)>>>
[[[file_stats myfiles]]]
{'type': 'file', 'path': '/media/evo/myfiles/mybackup_01.zip', 'stat_status': 'ok', 'size': 13146562, 'age': 339080, 'mtime': 1633966263}
{'type': 'file', 'path': '/media/evo/myfiles/mybackup_02.zip', 'stat_status': 'ok', 'size': 13145766, 'age': 325141, 'mtime': 1633980202}
{'type': 'file', 'path': '/media/evo/myfiles/mybackup_03.zip', 'stat_status': 'ok', 'size': 13151050, 'age': 325352, 'mtime': 1633979991}
...

3.2. Service-Regel konfigurieren

Über den Agenten stehen dem Monitoring jetzt also die Daten zu den Dateien zur Verfügung. Zur Auswertung rufen Sie die Regel Setup > Services > Service monitoring rules > Size, age and count of file groups (mk_filestats) auf. In unserem Beispiel soll gewarnt werden, sobald eine bestimmte Anzahl von Dateien über- oder unterschritten wird. Das erledigen die Optionen Minimal file count und Maximal file count, über die schlicht Grenzwerte eingetragen werden. Alle anderen Minimal-Maximal-Optionen arbeiten analog.

Formular mit Grenzwerten für Dateiüberwachung.
Teil 1/3: OK sind hier ausschließlich 7 oder 8 Dateien

Aber welche Datei provoziert dann beispielsweise einen CRIT-Status? Dabei hilft die Option Show files in service details: Ist diese aktiviert, sehen Sie alle betroffenen Dateien aufgelistet in der Detailansicht des Services.

Festlegung zur Anzeige einzelner Dateien in den Service-Details.
Teil 2/3: Die Option sorgt für Transparenz — kann aber auch sehr lange Listen erzeugen

Nun könnte es sein, dass zwar die richtige Anzahl an Dateien vorhanden ist, es aber beispielsweise Ausreißer bezüglich der Größe gibt. Für solche Ausnahmen können Sie die Option Additional rules for outliers einsetzen: Hier wird zum Beispiel festgelegt, dass für Dateien unterhalb von 5 Megabyte der Status WARN gesetzt wird, unter 1 Megabyte geht der Service auf CRIT. Nützlich ist das zum Beispiel, um auf defekte Backups aufmerksam zu werden.

Festlegung von Ausreißern in den überwachten Dateien.
Teil 3/3: Dateien müssen mindestens 5 MB groß sein, sonst wird gewarnt

Im Kasten Conditions können Sie nun noch bestimmen, dass die Regel ausschließlich für die im Agentenplugin konfigurierte Dateigruppe myfiles gelten soll: Geben Sie dazu unter File Group Name den Namen ein, den Sie im Agentenplugin unter Section name vergeben haben.

Filter auf Dateien der Gruppe myfiles.
File Group Name entspricht dem Section name aus der Plugin-Regel

Damit ist auch die Service-Regel fertig. Optional könnten Sie die Auswertung noch auf eine Zeitperiode beschränken. Fügen Sie anschließend wie üblich den neuen Service zu den betroffenen Hosts hinzu und aktivieren Sie die Änderungen.

3.3. mk_filestats im Monitoring

Die Auswertung sehen Sie dann im Monitoring in Listen und natürlich in den Details. Neben den Parametern des Services sehen Sie hier nun auch die Dateien, die für den Status WARN beziehungsweise CRIT verantwortlich sind.

Service-Details im Monitoring für den Status WARN.
mk_filestats offenbart im Monitoring, welche Dateien für den Status verantwortlich sind

Bei der Option Show files in service details ist jedoch Vorsicht angeraten: Wenn viele Dateien für eine Statusänderung sorgen, werden sie auch alle aufgeführt, was zu langen Listen und damit verbundenen Problemen mit Performance und Ansichten führen kann.

Service-Details im Monitoring für den Status CRIT.
Allzu offenherzige reguläre Ausdrücke können riesige Listen erzeugen

4. Dateien überwachen mit fileinfo (Linux, Windows)

Die Überwachung von Dateien mit fileinfo läuft prinzipiell genauso wie mit mk_filestats, daher das Prozedere hier leicht verkürzt, abermals für Dateigruppen.

4.1. Regel für den Agenten konfigurieren

Konfiguration über Agentenbäckerei

CEE Die Konfiguration des Agenten in den kommerziellen Editionen unter Setup > Agents > Windows, Linux, Solaris, AIX > Agent rules > Count, size and age of files (Linux, Windows) ist deutlich einfacher gehalten: Sie definieren hier lediglich den Pfad für die Dateien in Form eines Globbing-Musters. Das wirft eben auch das Problem auf, dass eventuell extrem lange Dateilisten übertragen werden, die das Monitoring spürbar verlangsamen können.Außerdem wird standardmäßig für jede gefundene Datei ein eigener Service angelegt, was sich lediglich durch Gruppenbildung verhindern lässt.

Regel für fileinfo mit Filterung auf Windows-Pfad.
Überwachung aller Dateien unterhalb des Pfads

Zusätzliches Datum: Es gibt aber noch eine leicht versteckte Filtermöglichkeit: Im Globbing-Muster können Sie die Variable $DATE nutzen, um nur Dateien einzubeziehen, deren Namen das aktuelle Datum enthält. Die Angabe des Datumsformats entspricht dabei dem Linux-Programm date.

Regel für fileinfo mit Filterung über Datumsvariable.
Dateien mit Zeitstempel im Namen lassen sich nur unter Linux explizit ansprechen

Eine Angabe wie /backups/mybackup_*_$DATE:%Y%m%d$ würde — Stand heute, dem 22.10.2021 — folglich Dateien wie mybackup_01_20211022 und mybackup_foobar_20211022 finden:

Datei im Monitoring, gefiltert nach Datum im Dateinamen.
Für Backup-Dateien bieten sich Zeitstempel und eine tagesaktuelle Prüfung an

Weitere Informationen finden Sie direkt auf der Seite der Regel sowie in der zugehörigen Inline-Hilfe.

Damit ist die Konfiguration abgeschlossen und Sie können das Plugin samt Konfiguration über die Agentenbäckerei verteilen.

Manuelle Konfiguration

CRE In der CRE Checkmk Raw Edition müssen Sie auch bei fileinfo wieder über Dateien konfigurieren, unterschiedlich nach Betriebssystem:

Linux: Konfigurationsdatei fileinfo.cfg:

/etc/check_mk/fileinfo.cfg
C:\myfiles\*
/myfiles/*
/media/evo/test_$DATE:%Y%m%d$

Windows: Konfigurationsdatei check_mk.user.yml:

C:\ProgramData\checkmk\agent\check_mk.user.yml
fileinfo:
  enabled: yes
  path:
  - 'c:\myfiles\*.*'
  - "c:\\myfiles\\*.*"
  - /media/evo/test_$DATE:%Y%m%d$

Beachten Sie hier die unterschiedlichen Schreibweisen von Windows-Pfaden — in doppelten Anführungsstrichen müssen die Backslashs escaped werden.

Damit ist die Konfiguration abgeschlossen und Sie können das Plugin unter Linux oder unter Windows manuell installieren.

Daten in der Agentenausgabe

Das Ergebnis Ihrer Konfiguration finden Sie dann in Form von Rohdaten in der Agentenausgabe, beginnend mit dem Sektions-Header fileinfo:

mysite-myhost-agent.txt
 <<<fileinfo:sep(124)>>>
1634131485
C:\myfiles\myfile|12|1632490780
C:\myfiles\myfile2|12|1632490780
C:\myfiles\myfile3|12|1632490780
...

4.2. Service-Regel konfigurieren

Im zweiten Schritt wird auch hier wieder die Service-Regel Setup > Services > Service monitoring rules > Size, age and count of file groups konfiguriert: Die Minimal-Maximal-Optionen entsprechen denen von mk_filestats, die Optionen zum Anzeigen der betroffenen Dateinamen in den Service-Details und für Ausreißer sind hier aber nicht vorhanden. Dafür gibt es zwei zusätzliche Optionen: Zum einen können Sie über Add time range direkt einen Zeitraum eingeben — außerhalb dieses Zeitraums hat der Service immer den Status OK.

Zum anderen steht Ihnen das mächtige Feature Level conjunctions zur Verfügung: Hierüber können Sie für jeden der vier Zustände OK, WARN, CRIT und UNKNOWN Reihen von Bedingungen setzen. So könnten Sie zum Beispiel festlegen, dass der Service auf CRIT geht, wenn

  • es exakt 7 Dateien gibt,

  • die kleinste Datei unterhalb von 10 Megabyte liegt,

  • die älteste Datei jünger als 5 Tage alt ist und

Festlegung der Bedingungen für die mit fileinfo überwachten Dateien.
Level conjunctions ermöglichen auch, explizite Ausnahmen zu definieren

Und auch diese Regel können Sie wieder im Kasten Conditions auf die gewünschte Gruppe myfiles mit File Group Name beschränken.

Anders als bei mk_filestats läuft die Gruppenbildung erst im Monitoring über die Service-Regel Setup > Services > Service monitoring rules > File Grouping Patterns. Die Zuordnung stellen Sie sicher, indem Sie unter Name of group ebenfalls die Gruppe myfiles eintragen.

Die Angabe der Muster für ein- und auszuschließende Dateien geschieht hier standardmäßig nicht über reguläre Ausdrücke, sondern lediglich über Globbing. Wenn Sie eine Tilde (~) voranstellen, können Sie aber auch hier reguläre Ausdrücke verwenden.

Filter auf Dateien der Gruppe myfiles.
Eingabefelder verhalten sich nicht immer identisch — die Inline-Hilfe bietet immer weitere Details

Zusätzliches Datum: Wieder ist die Verwendung der Variablen $DATE möglich, mehr noch: Alternativ können Sie auch $YESTERDAY zum Filtern verwenden, was schlicht einen Tag von $DATE abzieht. Weitere Infos dazu erhalten Sie wie immer in der Inline-Hilfe.

4.3. fileinfo im Monitoring

Im Monitoring unterscheidet sich die Ansicht einer fileinfo-Gruppe nicht sonderlich von einer mk_filestats-Gruppe. Allerdings werden bei fileinfo immer alle betroffenen Dateien explizit aufgeführt, egal, ob sie für eine Statusänderung verantwortlich sind oder nicht. Hier im Beispiel sehen Sie etwa die beiden Dateien yourfile mit 0 Megabyte ohne Auswirkungen auf den Status und yourfile_2.exe mit knapp 11 Megabyte, die damit den Status CRIT auslöst:

Eine fileinfo-Gruppe im Monitoring.
yourfile wird von fileinfo angezeigt, obwohl nicht für die Statusänderung verantwortlich

Alle Dateien, die von fileinfo ins Monitoring geliefert und keiner Gruppe zugeordnet werden, bleiben als einzelne Services erhalten:

Einzelne Dateien als separate Services im Monitoring.
Bei fileinfo sind es zu offenherzige Globbing-Muster, die für riesige Listen sorgen können

Genau diese Liste zeigt, warum es so wichtig ist, bei fileinfo präzise auf die Filter zu achten: Wenn hier etwa C:\ ohne jegliche Einschränkungen angegeben würde, gäbe es es anschließend mehrere Hunderttausend einzelne Services im Monitoring.

5. Troubleshooting

5.1. Keine/zu viele Dateien im Monitoring

Egal, ob Sie mit mk_filestats oder fileinfo arbeiten, fehlende Dateien oder auch zu viele Einträge im Monitoring liegen häufig an falschen Filtern. Dafür gibt es vor allem zwei Quellen: Eine Verwechslung von Globbing-Muster und regulärem Ausdruck oder eine falsche Konfiguration. Beispielsweise verhält sich das Sternchen in beiden Varianten anders: Beim Globbing steht * als Platzhalter für beliebig viele beliebige Zeichen, in einem regulären Ausdruck für ein oder mehrere Vorkommen des davor stehenden Zeichens. Um per Regex beliebige Zeichen in beliebiger Menge zu matchen, müsste entsprechend mit .* gearbeitet werden.

6. Dateien und Verzeichnisse

Wie immer sind alle Pfadangaben für den Checkmk-Server relativ zum Instanzverzeichnis (z.B. /omd/sites/mysite) angegeben.

6.1. mk_filestats

Ort Pfad Bedeutung

Checkmk-Server

~/share/check_mk/agents/cfg_examples/filestats.cfg

Beispielkonfigurationsdatei

Checkmk-Server

~/share/check_mk/agents/plugins/mk_filestats.py

Python-3-Agentenplugin inklusive Erläuterungen

Checkmk-Server

~/share/check_mk/agents/plugins/mk_filestats_2.py

Python-2-Agentenplugin inklusive Erläuterungen

Linux-Host

/etc/check_mk/filestats.cfg

Konfigurationsdatei - von der Agentenbäckerei oder manuell erstellt

6.2. fileinfo

Ort Pfad Bedeutung

Checkmk-Server

~/share/check_mk/agents/cfg_examples/fileinfo.cfg

Beispielkonfigurationsdatei

Linux-Host

/etc/check_mk/fileinfo.cfg

Konfigurationsdatei - von der Agentenbäckerei oder manuell erstellt

Windows-Host

C:\ProgramData\checkmk\agent\bakery\check_mk.bakery.yml

Konfigurationsdatei - von der Agentenbäckerei erstellt

Windows-Host

C:\ProgramData\checkmk\agent\check_mk.user.yml

Konfigurationsdatei - manuell erstellt

Auf dieser Seite