Aus Linux-Magazin 03/2007

Verzeichnisse überwachen mit Iwatch

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.

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«.

Tabelle 1:
Iwatch-Tags

 

Name

Attribute

config

guard

email, name

watchlist

title

contactpoint

email, name

path

alert, events, exec, syslog, type, filter

Eingeschlossen wird die gesamte Konfiguration von den Config-Tags. Auf dieser Ebene ist auch das Guard-Tag angesiedelt, dessen Attribut »email« den Absender der Benachrichtung angibt. Zwischen den Config-Tags stehen einzelne Watchlists, die jeweils mehrere Pfade enthalten können. Jeder Watchlist dürfen andere E-Mail-Adressen zugeordnet sein – das ist praktisch für die administrative Aufteilung von Serverbereichen.

Interessant sind vor allem die Attribute des Tag »path«. So legt »single« fest, dass Iwatch nur den Inhalt des angegebenen Verzeichnisses überwacht. Das Attribut »recursive« dagegen lässt Iwatch auch ein Auge auf die darunter liegenden Verzeichnisse werfen, genauso wie der erwähnte Schalter »-r« im Kommandozeilenmodus. Einzelne Unterverzeichnisse vom Monitoring ausschließen, das geht mit dem Attribut »exception«. Listing 1 zeigt ein einfaches Beispiel für die XML-Konfiguration.

Listing 1:
»beispiel.xml«

01 <config>
02   <guard email="iwatch@localhost"/>
03   <watchlist>
04     <title>Konfigurationsdateien</title>
05     <contactpoint email="oliver@localhost"/>
06     <path type="recursive">/etc</path>
07     <path type="exception">/etc/httpd/run</path>
08   </watchlist>
09 </config>

Unabhängig von der Iwatch-Anwendung unterliegt die Inotify-Benutzung Beschränkungen. Zum Beispiel legt der Kernel eine Obergrenze für die Zahl der überwachten Objekte fest. Das entsprechende Proc-File heißt »/proc/sys/fs/inotify/max_user_watches«, es ist per Default auf 8192 festgesetzt.

Die Zugriffskontrolle erfolgt über die bekannten Datei-Zugriffsrechte, allerdings überprüft Iwatch sie nicht selbst. Es ist also möglich, auch als normaler Benutzer »./iwatch /root/« auszuführen, ohne dass das Programm sich über das Fehlen der Rechte beschwert. Tatsächlich überwacht das Tool das Verzeichnis aber nicht einmal, denn ihm fehlen schlichtweg die Rechte.

Relativ neu und deshalb bisher nur im Changelog dokumentiert ist der Schalter »-t«, dem in der XML-Konfiguration das Tag »filter« entspricht. Das Argument ist jeweils eine Regular Expression für den Dateinamen. So lässt sich beispielsweise eine Pfadangabe mit einem Muster für den Dateinamen verbinden.

Klein, aber fein

Bei Iwatch handelt es sich um ein praktisches Programm, das die Inotify-Schnittstelle für den Endverbraucher nutzbar macht. Statt das Kernel-API zur Datei-Überwachung zu verwenden, genügt eine übersichtliche XML-Datei, um recht fein granuliert einzelne Bereiche des Dateisystems auf Veränderungen hin zu überwachen. Weil es sich um ein gut lesbares Perl-Skript handelt, können Anwender auch leicht Änderungen an Iwatch vornehmen, um zum Beispiel die fehlende Überprüfung der Zugriffsrechte zu implementieren.

Infos

[1] Iwatch: [http://iwatch.sourceforge.net]

Copyright © 2002 Linux New Media AG

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 2 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Nach oben