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.
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
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.
Damit ist die Konfiguration abgeschlossen und Sie können das Plugin samt Konfiguration über die Agentenbäckerei verteilen.
Manuelle Konfiguration
In der 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:
[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:
<<<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.
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.
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.
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.
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.
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.
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
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.
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
.
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:
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
In der Checkmk Raw Edition müssen Sie auch bei fileinfo wieder über Dateien konfigurieren, unterschiedlich nach Betriebssystem:
Linux: Konfigurationsdatei fileinfo.cfg
:
C:\myfiles\*
/myfiles/*
/media/evo/test_$DATE:%Y%m%d$
Windows: Konfigurationsdatei 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:
<<<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
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.
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:
yourfile
wird von fileinfo angezeigt, obwohl nicht für die Statusänderung verantwortlichAlle Dateien, die von fileinfo ins Monitoring geliefert und keiner Gruppe zugeordnet werden, bleiben als einzelne Services erhalten:
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 |
|
Beispielkonfigurationsdatei |
Checkmk-Server |
|
Python-3-Agentenplugin inklusive Erläuterungen |
Checkmk-Server |
|
Python-2-Agentenplugin inklusive Erläuterungen |
Linux-Host |
|
Konfigurationsdatei - von der Agentenbäckerei oder manuell erstellt |
6.2. fileinfo
Ort | Pfad | Bedeutung |
---|---|---|
Checkmk-Server |
|
Beispielkonfigurationsdatei |
Linux-Host |
|
Konfigurationsdatei - von der Agentenbäckerei oder manuell erstellt |
Windows-Host |
|
Konfigurationsdatei - von der Agentenbäckerei erstellt |
Windows-Host |
|
Konfigurationsdatei - manuell erstellt |