Script de monitor de disco duro para servidores Linux sin cabeza
Los discos duros modernos tienen un mecanismo interno llamado S.M.A.R.T. a través del cual es posible saber cuándo un disco duro está a punto de fallar. ¿No sería agradable que el servidor te enviara un correo electrónico antes de que se produjera tal falla??
Visión general
Programas como el "mdadm" (para la administración de software RAID) y la "Utilidad de disco Palimpsest" (utilizado en el LiveCD de Ubuntu), use la información de S.M.A.R.T para informarle cuándo el disco está a punto o ha fallado. Sin embargo, en un servidor sin cabeza (sin GUI) no hay ningún servicio que le informe de la muerte pendiente antes de que sea demasiado tarde. Además, ¿cómo lo sabría sin iniciar sesión manualmente en el servidor??
Esta secuencia de comandos, cuando se ejecuta una vez al día con cron, alertará si el recuento de sectores defectuosos de los Discos Duros del sistema ha alcanzado un límite deliberadamente inferior al umbral de "el disco es malo" y enviará la advertencia al administrador de la máquina por correo electrónico..
Prerrequisitos y suposiciones
- Ya ha configurado el soporte de correo electrónico para el servidor utilizando la guía "Cómo configurar las alertas de correo electrónico en Linux".
- Estás usando un sistema basado en Debian.
- No estás utilizando un controlador RAID de hardware *.
- Me verás usando VIM como el programa editor, esto es solo porque estoy acostumbrado ... puedes usar cualquier otro editor que desees.
* Porque es muy posible que el controlador RAID de hardware bloquee el acceso del sistema a esta información..
Preparar
Instale el paquete "smartmontools" que lee la información de S.M.A.R.T del controlador del disco duro y nos la presenta..
sudo aptitude instalar smartmontools
Crear el script de monitor:
sudo vim /root/smart-monitor.sh
Haz que esté contento:
#! / bin / bash
######## Función de correo electrónico ########
email_admin_func ()
echo "Para: [email protected]"> $ temp_email_file
echo "From: [email protected]" >> $ temp_email_file
echo "Asunto: S.M.A.R.T monitor de umbral infringido" >> $ temp_email_file
echo "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t < $temp_email_file
echo "Enviado un correo electrónico al administrador"
smartc_func ()
/ usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s "| cut -d" -f11
######## Fin de las funciones ########
######## Establecer el parámetro de trabajo ########
temp_email_file = / tmp / smart_monitor.txt
allowed_threshold = 5 # establezca la cantidad de sectores defectuosos con los que está dispuesto a vivir, se recomienda 5.
########Motor########
para i en sda sdb; # Agregue o reste los nombres de los discos de esta lista según corresponda para su configuración.
si [["smartc_func $ i '" -ge $ allowed_threshold]]; entonces
echo correo electrónico al administrador
email_admin_func "¡Uno de los HD en" 'nombre de host' "ha alcanzado el límite de umbral superior! nEl umbral se estableció en: $ allowed_threshold y el estado del disco de $ i fue:" 'smartc_func $ i' ""
fi
hecho
Los puntos clave a tener en cuenta son:
- Función de correo electrónico: configure la información apropiada, como el nombre de la máquina y el correo electrónico del administrador.
- Umbral permitido: establezca este parámetro según lo que considere apropiado. He usado 5 porque el límite establecido para los discos duros de "grado de servidor" que utilicé fue 10. (Encontré el umbral para los discos de "calidad de consumidor" para ser tan alto como 140).
- Configure los dispositivos que desea monitorear ajustando la enumeración de los nombres de disco en el bucle “for”. Actualmente se incluyen dos discos (sda y sdb), así que ajústelos a su configuración. Puede incluir todos sus discos o solo algunos, si necesita * excluir un disco por alguna razón.
* en mi configuración original, el primer disco fue una unidad flash, por lo que leer su información si es posible no sirve de mucho.
Hacer el script ejecutable:
sudo chmod + x /root/smart-monitor.sh
La configuración está hecha.
Programe el script para que se ejecute automáticamente
Queremos hacer que el script se ejecute automáticamente, por lo que crearemos un nuevo trabajo Cron para él..
Como se indica en la guía “Cómo configurar las alertas de correo electrónico en Linux”, el hecho de hacerlo es que si el script en sí encuentra un error, cron nos informará automáticamente por correo electrónico tan pronto como suceda..
Abra el programador de tareas cron:
sudo crontab -e
Añade esto a su contenido:
0 7 * * * /root/smart-monitor.sh> /tmp/last_smart_monitor_run.log
Esto establecerá que el script se ejecute cada mañana a las 7AM.
Todo tu sector nos pertenece :)