Los discos duros modernos tienen un mecanismo interno llamado S.M.A.R.T. a través del cual es posible saber cuando un disco duro está a punto de fallar. ¿No sería bueno que el servidor le enviara un correo electrónico antes de tal falla?
Visión de conjunto
Programas como “mdadm” (para la administración de RAID por software) y la “Utilidad de disco Palimpsest” (utilizada en Ubuntu LiveCD), usan la información S.M.A.R.T para informarle cuando el disco está a punto de fallar o ha fallado. Sin embargo, en un servidor sin cabeza (sin GUI) no hay ningún servicio que le informe de la perdición pendiente antes de que sea demasiado tarde. Además, ¿cómo lo sabría sin iniciar sesión manualmente en el servidor?
Este script, cuando se ejecuta una vez al día con cron, alertará si alguno de los sectores defectuosos de los discos duros del sistema ha alcanzado un límite que es deliberadamente más bajo que el umbral de "el disco está defectuoso" y enviará la advertencia por correo electrónico al administrador de la máquina.
Requisitos previos y supuestos
- Ya ha configurado la asistencia por correo electrónico para el servidor mediante el " Cómo configurar alertas de correo electrónico en Linux ”Guía.
- Estás usando un sistema basado en Debian.
- No está utilizando un * controlador RAID de hardware.
- Verá que uso VIM como programa editor, esto es solo porque estoy acostumbrado ... puede usar cualquier otro editor que desee.
* 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 S.M.A.R.T del controlador del disco duro y nos la presenta.
sudo aptitude install smartmontools
Cree el script del monitor:
sudo vim /root/smart-monitor.sh
Haga de esto su contenido:
#! / 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: Umbral del monitor S.M.A.R.T violado" >> $ temp_email_file
echo "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t <$ temp_email_file
echo "Envió un correo electrónico al administrador"
}
smartc_func ()
{
/ usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s '' | cortar -d '' -f11
}
######## Fin de funciones ########
######## Establecer parámetro de trabajo ########
temp_email_file = / tmp / smart_monitor.txt
allow_threshold = 5 # establezca la cantidad de sectores defectuosos con los que está dispuesto a vivir, recomendado 5.
########Motor########
para yo en sda sdb; do # Agregue o reste nombres de disco de esta lista según corresponda para su configuración.
si [[ "`smartc_func $i`" -ge $allowed_threshold ]]; luego
echo Enviar un correo electrónico al administrador
email_admin_func "¡Uno de los discos duros en" `hostname`", ha alcanzado el límite superior del umbral !!! nEl umbral se estableció en: $ allowed_threshold y el estado del disco $ i era: "` smartc_func $ i` ""
ser
hecho
Los puntos clave a tener en cuenta son:
- Función de correo electrónico: configure la información adecuada, como el nombre de la máquina y el correo electrónico del administrador.
- Umbral permitido: establezca este parámetro en lo que crea que es apropiado. He usado 5 porque el límite establecido para los discos duros de "calidad de servidor" que usé fue de 10. (He encontrado el umbral para las unidades de "grado de consumidor" a ser tan alto como 140).
- Configure los dispositivos que desea monitorear ajustando la enumeración de nombres de disco en el ciclo "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 era una unidad flash, por lo que leer su información, si es posible, no es de mucha utilidad.
Haga que el script sea ejecutable:
sudo chmod + x /root/smart-monitor.sh
La configuración está lista.
Programe el script para que se ejecute automáticamente
Queremos que el script se ejecute automáticamente, por lo que crearemos un nuevo trabajo Cron para él.
Como se indica en el "
Cómo configurar alertas de correo electrónico en Linux
”Guiar el resultado 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 trabajos cron:
sudo crontab -e
Agregue esto a su contenido:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Esto configurará el script para que se ejecute todas las mañanas a las 7 a. M.
Todo tu sector nos pertenece :)