Moderne Festplatten verfügen über einen internen Mechanismus namens S.M.A.R.T. über die es möglich ist zu wissen, wann eine Festplatte ausfallen wird. Wäre es nicht nett vom Server, Ihnen vor einem solchen Fehler eine E-Mail zu senden?
Überblick
Programme wie "mdadm" (für Software-RAID-Verwaltung) und "Palimpsest Disk Utility" (auf der Ubuntu LiveCD verwendet) verwenden die S.M.A.R.T-Informationen, um Sie zu informieren, wenn die Festplatte kurz vor dem Ausfall steht oder ausgefallen ist. Auf einem Headless-Server (keine GUI) gibt es jedoch keinen Dienst, der Sie über das bevorstehende Schicksal informiert, bevor es zu spät ist. Wie würden Sie darüber hinaus Bescheid wissen, ohne sich manuell beim Server anzumelden?
Wenn dieses Skript einmal täglich mit cron ausgeführt wird, werden Sie benachrichtigt, wenn einer der fehlerhaften Sektoren der Festplatten des Systems einen Grenzwert erreicht hat, der absichtlich unter dem Schwellenwert "Die Festplatte ist fehlerhaft" liegt, und die Warnung per E-Mail an den Administrator des Computers gesendet.
Voraussetzungen und Annahmen
- Sie haben die E-Mail-Unterstützung für den Server bereits mithilfe der Option „ So richten Sie E-Mail-Benachrichtigungen unter Linux ein " leiten.
- Sie verwenden ein Debian-basiertes System.
- Sie verwenden keinen * Hardware-RAID-Controller.
- Sie werden sehen, dass ich VIM als Editorprogramm verwende. Dies liegt nur daran, dass ich daran gewöhnt 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 präsentiert.
sudo aptitude installiert smartmontools
Erstellen Sie das Monitorskript:
sudo vim /root/smart-monitor.sh
Machen Sie dies zum Inhalt:
#!/bin/bash
######## E-Mail-Funktion ########
email_admin_func ()
{
Echo "An: [email protected]"> $ temp_email_file
echo "Von: [email protected]" >> $ temp_email_file
echo "Betreff: S.M.A.R.T Monitor-Schwellenwert überschritten" >> $ temp_email_file
echo "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t <$ temp_email_file
echo "E-Mail an den Administrator gesendet"
}
smartc_func()
{
/ usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s '' | cut -d '' -f11
}
######## Ende der Funktionen #########
######## Arbeitsparameter einstellen ########
temp_email_file = / tmp / smart_monitor.txt
allow_threshold = 5 #Stellt die Anzahl der fehlerhaften Sektoren ein, mit denen Sie leben möchten, empfohlen 5.
########Motor########
für i in sda sdb; do # Fügen Sie Datenträgernamen zu dieser Liste hinzu oder subtrahieren Sie sie entsprechend Ihrer Einrichtung.
wenn [[ "`smartc_func $i`" -ge $allowed_threshold ]]; dann
Echo E-Mail an den Administrator
email_admin_func "Eine der Festplatten auf" `hostname`" hat den oberen Schwellenwert erreicht !!! nDer Schwellenwert wurde auf $ allow_threshold festgelegt und der Status der $ i-Festplatte lautete: "` smartc_func $ i` ""
Sein
erledigt
Die wichtigsten Punkte sind:
- E-Mail-Funktion - Legen Sie die entsprechenden Informationen wie den Computernamen und die Administrator-E-Mail-Adresse fest.
- Zulässiger Schwellenwert - Stellen Sie diesen Parameter auf das ein, was Sie für angemessen halten. Ich habe 5 verwendet, da der für die von mir verwendeten Festplatten mit Serverqualität festgelegte Grenzwert 10 betrug. (Ich habe den Schwellenwert für Laufwerke mit Consumer-Qualität auf gefunden so hoch wie 140 sein).
- Stellen Sie die Geräte ein, die Sie überwachen möchten, indem Sie die Aufzählung der Datenträgernamen in der for-Schleife anpassen. Derzeit sind zwei Festplatten (sda & sdb) enthalten. Passen Sie diese an Ihr Setup an. Sie können alle oder nur einige Ihrer Festplatten einschließen, wenn Sie aus irgendeinem Grund * eine Festplatte 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, nicht von großem Nutzen.
Machen Sie das Skript ausführbar:
sudo chmod + x /root/smart-monitor.sh
Das Setup ist abgeschlossen.
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 „
So richten Sie E-Mail-Benachrichtigungen unter Linux ein
Das Ergebnis ist, dass cron uns automatisch per E-Mail informiert, sobald das Skript selbst auf einen Fehler stößt.
Öffnen Sie den Cron Job Scheduler:
sudo crontab -e
Fügen Sie dies zu seinem 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 Uhr morgens ausgeführt wird.
Alle Ihre Branchen gehören uns :)