/ / Hard Drive Monitor Script für Headless Linux Server

Festplattenüberwachungsskript für Headless Linux-Server

cool-cartoon-2569506

Moderne Festplatten haben einen internen Mechanismusgenannt S.M.A.R.T. Hiermit können Sie feststellen, wann eine Festplatte ausfällt. Wäre es nicht nett, wenn der Server Ihnen vor einem solchen Fehler eine E-Mail sendet?

Überblick

Programme wie das "mdadm" (für Software - RAIDVerwaltung) und das „Palimpsest-Festplatten-Dienstprogramm“ (auf der Ubuntu LiveCD verwendet) verwenden Sie die S.M.A.R.T-Informationen, um Sie zu informieren, wenn die Festplatte im Begriff ist oder ausgefallen ist. Auf einem Headless-Server (ohne GUI) gibt es jedoch keinen Dienst, der Sie über das bevorstehende Schicksal informiert, bevor es zu spät ist. Außerdem, wie würden Sie davon erfahren, ohne sich manuell beim Server anzumelden?

Dieses Skript wird einmal täglich mit cron ausgeführtWarnen Sie, wenn einer der fehlerhaften Festplattensektoren des Systems ein Limit erreicht hat, das absichtlich unter dem Schwellenwert für fehlerhafte Festplatten liegt, und senden Sie die Warnung per E-Mail an den Administrator des Computers.

Voraussetzungen und Annahmen

  • Sie haben die E-Mail-Unterstützung für den Server bereits mithilfe des Handbuchs „So richten Sie E-Mail-Benachrichtigungen unter Linux ein“ eingerichtet.
  • Sie verwenden ein Debian-basiertes System.
  • Sie verwenden keinen * Hardware-RAID-Controller.
  • Sie werden sehen, dass ich VIM als Editorprogramm verwende. Das liegt nur daran, dass ich es gewohnt bin. Sie können jeden anderen Editor verwenden, den Sie möchten.

* Da es sehr wahrscheinlich ist, dass der Hardware-RAID-Controller den Zugriff des Systems auf diese Informationen blockiert.

Konfiguration

Installieren Sie das Paket „smartmontools“, das die S.M.A.R.T-Informationen vom Festplattencontroller liest und uns vorlegt.

sudo aptitude install smartmontools

Erstellen Sie das Monitorskript:

sudo vim /root/smart-monitor.sh

Machen Sie dies zum Inhalt:

#!/bin/bash
########Email function########
email_admin_func()
{
echo "To: machine-admin@some-domain.com" > $temp_email_file
echo "From: machine-name@some-domain.com" >> $temp_email_file
echo "Subject: S.M.A.R.T monitor Threshold breached" >> $temp_email_file
echo "" >> $temp_email_file
echo -e $1 >> $temp_email_file
/usr/sbin/ssmtp -t < $temp_email_file
echo "Sent an Email to the Admin"
}

smartc_func()
{
/usr/sbin/smartctl -A /dev/$1 | grep Reallocated_Sector_Ct |tr -s ' '|cut -d' ' -f11
}

########End of Functions########

########Set working parameter########
temp_email_file=/tmp/smart_monitor.txt
allowed_threshold=5 #set the amount of bad sectors your willing to live with, recommended 5.

########Engine########
for i in sda sdb ; do # Add or subtract disk names from this list as appropriate for your setup.
if [[ "`smartc_func $i`" -ge $allowed_threshold ]] ; then
echo Emailing the Administrator
email_admin_func "One of the HDs on "`hostname`", has reached the upper threshold limit!!! nThe threshold was set to:$allowed_threshold and the $i disk status was: "`smartc_func $i`""
fi
done

Die wichtigsten Punkte zu beachten sind:

  • E-Mail-Funktion - Legen Sie die entsprechenden Informationen wie den Computernamen und die Administrator-E-Mail-Adresse fest.
  • Zulässiger Schwellenwert - Legen Sie diesen Parameter auf what festWenn Sie der Meinung sind, dass dies angemessen ist, habe ich 5 verwendet, da für die von mir verwendeten Festplatten der "Server-Klasse" ein Grenzwert von 10 festgelegt wurde.
  • Stellen Sie die Geräte ein, mit denen Sie überwachen möchtenAnpassen der Aufzählung von Datenträgernamen in der "for" -Schleife. Derzeit sind zwei Festplatten (sda & sdb) enthalten, passen Sie sie also an Ihr Setup an. Sie können alle oder nur einige Ihrer Datenträger einschließen, wenn Sie aus irgendeinem Grund * einen Datenträger ausschließen müssen.

* In meinem ursprünglichen Setup war die erste Festplatte ein Flash-Laufwerk, daher ist das Lesen der Informationen, wenn überhaupt möglich, wenig hilfreich.

Machen Sie das Skript ausführbar:

sudo chmod +x /root/smart-monitor.sh

Das Setup ist fertig.

Planen Sie die automatische Ausführung des Skripts

Wir möchten, dass das Skript automatisch ausgeführt wird, damit wir einen neuen Cron-Job dafür erstellen.
Wie in der Anleitung „So richten Sie E-Mail-Benachrichtigungen unter Linux ein“ beschrieben, bedeutet dies, dass cron uns automatisch per E-Mail benachrichtigt, sobald ein Fehler auftritt.

Öffnen Sie den Cron Job Scheduler:

sudo crontab -e

Fügen Sie dies zum Inhalt hinzu:

0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log

Dadurch wird das Skript so eingestellt, dass es jeden Morgen um 7:00 Uhr ausgeführt wird.


Alle Ihre Branche gehören zu uns :)</ p>