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

Table des matières:

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

Vidéo: Script de moniteur de disque dur pour serveurs sans tête Linux

Vidéo: Script de moniteur de disque dur pour serveurs sans tête Linux
Vidéo: Transformer une image en ASCII ART ! - YouTube 2024, Novembre
Anonim
Les disques durs modernes ont un mécanisme interne appelé S.M.A.R.T. à travers lequel il est possible de savoir quand un disque dur est sur le point de tomber en panne. Ne serait-il pas agréable que le serveur vous envoie un e-mail avant un tel échec?
Les disques durs modernes ont un mécanisme interne appelé S.M.A.R.T. à travers lequel il est possible de savoir quand un disque dur est sur le point de tomber en panne. Ne serait-il pas agréable que le serveur vous envoie un e-mail avant un tel échec?

Vue d'ensemble

Des programmes tels que «mdadm» (pour la gestion RAID logiciel) et «Palimpsest Disk Utility» (utilisé sur le LiveCD Ubuntu), utilisent les informations S.M.A.R.T pour vous informer lorsque le disque est sur le point ou en panne. Cependant, sur un serveur sans interface utilisateur (sans interface graphique), aucun service ne vous informera de la fin prochaine avant qu'il ne soit trop tard. De plus, comment le sauriez-vous sans vous connecter manuellement au serveur?

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

Prérequis et hypothèses

  • Vous avez déjà configuré la prise en charge de la messagerie par courrier électronique pour le serveur à l'aide du guide «Comment configurer les alertes par courrier électronique sous Linux».
  • 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 uniquement parce que j’y suis habitué… vous pouvez utiliser n’importe quel autre éditeur que vous souhaitez.

* Parce qu’il est très possible que le contrôleur RAID matériel bloque l’accès du système à ces informations.

Installer

Installez le package “smartmontools” qui lit les informations S.M.A.R.T du contrôleur de disque dur et nous les présente.

sudo aptitude install smartmontools

Créez le script du moniteur:

sudo vim /root/smart-monitor.sh

Faites que ce soit le contenu:

#!/bin/bash ########Email function######## email_admin_func() { echo 'To: [email protected]' > $temp_email_file echo 'From: [email protected]' >> $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é - Définissez ce paramètre sur ce que vous jugez approprié. J’en ai utilisé 5 car la limite fixée pour les disques durs «de niveau serveur» que j’utilisais était de 10 (j’ai trouvé le seuil pour les lecteurs «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 «pour». Actuellement, deux disques (sda et sdb) sont inclus. Réglez-le en fonction de votre configuration. Vous pouvez inclure tous vos disques ou juste quelques-uns, si vous devez * exclure un disque pour une raison quelconque.

* Dans ma configuration d’origine, le premier disque était un lecteur flash. Il est donc inutile de lire ses informations, si possible.

Rendre le script exécutable:

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

La configuration est terminée.

Planifier l'exécution automatique du script

Nous voulons que le script s'exécute automatiquement afin de créer un nouveau travail Cron pour celui-ci. Comme indiqué dans le guide «Comment configurer les alertes par e-mail sous Linux», le résultat escompté est que si le script lui-même rencontre une erreur, cron nous en 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 chaque matin à 7 heures.

Tout votre secteur nous appartient:)

Conseillé: