in

Script de moniteur de disque dur pour les serveurs Linux sans tête

Les disques durs modernes ont un mécanisme interne appelé SMART grâce auquel il est possible de savoir quand un disque dur est sur le point de tomber en panne. Ne serait-il pas bien que le serveur vous envoie un e-mail avant un tel échec?

Aperçu

Des programmes comme «mdadm» (pour la gestion du RAID logiciel) et «Palimpsest Disk Utility» (utilisé sur Ubuntu LiveCD), utilisent les informations SMART pour vous informer lorsque le disque est sur le point de tomber ou échoue. Cependant, sur un serveur sans tête (pas d’interface graphique), il n’y a aucun service qui vous informera du destin en attente avant qu’il ne soit trop tard. De plus, comment le sauriez-vous sans vous connecter manuellement au serveur?

Ce script, lorsqu’il est exécuté une fois par jour avec cron, alertera si le nombre de secteurs défectueux des disques durs du système a atteint une limite délibérément inférieure au seuil «le disque est défectueux» et envoie l’avertissement par e-mail à l’administrateur de la machine.

Prérequis et hypothèses

  • Vous avez déjà configuré l’assistance par e-mail pour le serveur à l’aide du « Comment configurer les alertes par e-mail sous Linux » guider.
  • Vous utilisez un système basé sur Debian.
  • Vous n’utilisez pas de contrôleur RAID matériel *.
  • Vous me verrez utiliser VIM comme programme d’édition, c’est juste parce que j’y suis habitué… vous pouvez utiliser n’importe quel autre éditeur que vous souhaitez.

Installer

Installez le package «smartmontools» qui lit les informations SMART du contrôleur de disque dur et nous les présente.

sudo aptitude install smartmontools

Créez le script de surveillance:

sudo vim /root/smart-monitor.sh

Faites-en un contenu:

#!/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

Les points clés à noter sont:

  • Fonction e-mail – Définissez les informations appropriées telles que le nom de la machine et l’adresse e-mail de l’administrateur.
  • Seuil autorisé – Réglez ce paramètre sur ce que vous jugez approprié, j’ai utilisé 5 parce que la limite définie pour les disques durs «de qualité serveur» que j’ai utilisés était de 10. (j’ai trouvé le seuil pour les disques «grand public» à être aussi élevé que 140).
  • Définissez les périphériques que vous souhaitez surveiller en ajustant l’énumération des noms de disque dans la boucle «for». Actuellement, deux disques (sda et sdb) sont inclus, alors ajustez-les en fonction de votre configuration. Vous pouvez inclure tous vos disques ou seulement certains, si vous devez * exclure un disque pour une raison quelconque.

Rendez le script exécutable:

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

La configuration est terminée.

Planifiez l’exécution automatique du script

Nous voulons que le script s’exécute automatiquement afin de créer un nouveau travail Cron pour lui.
Comme indiqué dans le « Comment configurer les alertes par e-mail sous Linux»Guide le résultat de le faire, est que si le script lui-même rencontre une erreur, cron nous informera automatiquement par e-mail dès que cela se produit.

Ouvrez le planificateur de tâches cron:

sudo crontab -e

Ajoutez ceci à son contenu:

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

Cela définira le script à exécuter tous les matins à 7 heures du matin.

Tout votre secteur nous appartient 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Comment obtenir une suggestion de mot de style smartphone sous Windows

Comment obtenir une suggestion de mot de style smartphone sous Windows

Comment démarrer une discussion de groupe dans WhatsApp

Comment démarrer une discussion de groupe dans WhatsApp