Als Sysop gibt es immer was zu überwachen, egal ob Netzwerkverkehr, Systemauslastung oder das Dateisystem. Letzteres lässt sich über die Inotify-Schnittstelle des Linux-Kernels Ressourcen-schonend erledigen. Das Perl-Programm Iwatch hilft dabei.
Um einzelne Verzeichnisse und Dateien zu überwachen, gibt es unter Linux eine ganze Reihe von Lösungen. So kann der Sysadmin seine Überwachungsskripte als Cronjobs regelmäßig ausführen lassen. Oder ein Skript enthält eine Schleife, die seine Dateitests regelmäßig startet. In beiden Fällen läuft die Prüfung entweder nur recht selten ab oder beansprucht, geschieht sie häufiger, relativ viele Ressourcen. Effektiver überwacht man seit Linux 2.6.13 Dateien und Verzeichnisse über die Inotify-Schnittstelle des Betriebssystems.
Nachricht vom Kernel
Weil der Betriebssystemkern ohnehin in jede Änderung am Dateisystem eingebunden ist, kann er selbst auch am besten darüber wachen. Der Anwender teilt dem Kernel einfach mit, für welche Dateien er sich interessiert. Im Fall des Falles meldet er die Veränderung dann an den Userspace. Weil es sich bei der Inotify-Schnittstelle um ein API handelt, muss der Sysadmin dafür allerdings selbst zum Compiler greifen. Will er das nicht, gibt es auch ein paar Softwarepakete, die den Zugriff über Skriptsprachen erlauben.
Noch einfacher geht\’s mit Iwatch [1], einem Perl-Skript von Cahya Wirawan, das eine XML-Konfigurationsdatei liest und die dort festgelegten Pfade und Dateien überwacht. Tritt die definierte Veränderung ein, benachrichtigt Iwatch den User per E-Mail oder führt ein frei einstellbares Kommando aus.
Die Installation des Pakets ist kein großes Problem, es setzt nur die Perl-Module Linux::Inotify2, Event, Mail::Sendmail und XML::Simple voraus. Letztere sind zum Beispiel in Fedora Core 6 in den Repositories vorhanden, nur das Inotify-Paket muss aus den Quellen kompiliert werden. Alternativ geschieht das über das CPAN-Interface: als Administrator »perl -MCPAN -e shell« ausführen und dann »install Linux::Inotify2« eingeben.
Inotify-Events
Iwatch bietet zwei Ausführungsmodi: Im ersten erhält es alle Informationen über Kommandozeilenparameter, im zweiten liest es eine XML-Konfigurationsdatei. Im einfachsten Fall hängt der Admin einfach den zu überwachenden Pfad an das Kommando an: »iwatch /Verzeichnis«. Gibt er in einem anderen Fenster in »/Verzeichnis« zum Beispiel »touch test« ein, gibt Iwatch die Änderungen aus. In Abbildung 1 sind die zwei Inotify-Events zu sehen, die beim Anlegen einer neuen Datei auftreten.

Abbildung 1: Iwatch protokolliert im einfachsten Fall Veränderungen an überwachten Dateien in der Konsole.
Per Default überwacht Iwatch die Events »close_write«, »create«, »delete«, »move«, »delete_self« und »move_self«. Eine Liste aller nutzbaren Events enthält die Dokumentationsseite der Iwatch-Homepage. Auf der Command Line sind die Events hinter dem Schalter »-e« anzugeben.
Mit der zusätzlichen Option »-r« (rekursiv) überwacht Iwatch nicht nur das spezifizierte Verzeichnis selbst, sondern auch dessen Unterverzeichnisse. Die E-Mail-Adresse für die Benachrichtigung folgt hinter dem Schalter »-m«. Ein alternativ auszuführender Befehl steht hinter »-c«. Mit »-s« meldet Iwatch auftretende Events über das Syslog.
XML-Konfiguration
Alternativ zum einfachen Kommandozeilenmodus liest Iwatch seine Einstellungen aus einer XML-Datei – für umfangreiche Monitoring-Aktivitäten sicherlich die übersichtlichere Lösung. Die verfügbaren XML-Tags sind nicht formal in einer DTD, einem XML-Schema oder etwas Ähnlichem spezifiziert, das Format ist aber überschaubar. Tabelle 1 listet die Tags und ihre Attribute auf. Ohne weitere Optionen liest Iwatch die Datei »/etc/iwatch.xml«, Alternativen erwartet es hinter dem Schalter »-f«.






