Linux: Plattenplatz überwachen ohne Nagios/Icinga
Manchmal benötigt man eine Benachrichtigung über den Plattenplatz, ohne ein großes Monitoring Tool wie Nagios/Icinga zur Verfügung zu haben.
Im konkreten Fall war es eine Linux-Appliance, die nach und nach die Systemplatte vollgeschrieben hat.
Leider war hier Icinga nicht nutzbar, da man auf dem System kein snmpd oder die Nagios Clients installieren konnte.
Lösung:
Auf dem Server (Debian) konnte der Konsolen-Mailer „mail“ installiert werden.
- Falls nicht schon vorhanden, den ‚mail‘ Konsolenclient installieren
apt-get install mailutils - Exim konfigurieren, damit die Mails auch ausserhalb des Systems empfangen werden können:
dpkg-reconfigure exim4-config - Jetzt benötigen wir noch ein kleines Script:
vi diskmailer
Und dann folgenden Text einfügen:#!/bin/bash CURRENT=$(df / | grep / | awk '{ print $5}' | sed 's/%//g') THRESHOLD=90 if [ "$CURRENT" -gt "$THRESHOLD" ] ; then mail -s 'Disk Space Alert' mailid@domainname.com << EOF Der Plattenplatz deiner root Partition läuft voll. Verwendet: $CURRENT% EOF fi
Erklärung:
Mit CURRENT und TRESHOLD werden zwei Variablen erzeugt, bzw. gesetzt.
Bevor man das Script einsetzt, kann man die Funktion für die Variable CURRENT überprüfen, in dem man den Befehl in den Klammern in der Shell absetzt:df / | grep / | awk '{ print $5}' | sed 's/%//g'
Dabei sollte jetzt eine ganze Zahl gezeigt werden. Das sind die belegten Prozent der root Partition ‚/‘
Man kann natürlich auch andere Partitionen so überwachen.
Mit THRESHOLD gibt man die Warnschwelle an, ab der eine Mail gesendet werden soll. Die Zahl entspricht der belegten Prozent der Partition. Also 90 für eine 90% volle Partition.Mit der ‚if‘-Bedingung wird jetzt geprüft, ob die Warnschwelle erreicht wurde:
if [ "$CURRENT" -gt "$THRESHOLD" ] ; then
Also wenn der Wert für CURRENT größer ist (-gt) als der Wert für THRESHOLD, dann führe den Mail-Teil aus.
Der weitere Teil des Scripts ist mehr oder weniger selbsterklärend. Dort wird dann der Betreff (Subject), der Empfänger und der Inhalt der Mail angegeben. - Das Script kann man jetzt z.B. nach /etc/cron.daily legen.
Nicht vergessen:
Mit ‚chmod +x‘ ausführbar machen und keine Endung wie ‚.sh‘ in dem Verzeichnis verwenden. - Alternativ kann man das Script auch woanders ablegen und als cronjob laufen lassen.
Hoffe es hilft …
Script-Quelle: linuxjournal