Script que permite monitorear e iniciar el servicio que nosotros le indiquemos. Los servicios que deseamos monitorizar se indican en un archivo de texto, validando el servicio que deseamos controlar en nuestro servidor, para el caso de distribuciones basadas en Debian, como es Ubuntu, entramos al directorio /etc/init.d y determinamos cuales queremos chequear. Se obtiene la fecha y hora del sistema, para registrar en un log que maneja el script, las incidencias del servicio.
Y si el servico se encuentra inactivo. Al momento de determinar el servicio inactivo, se inicia y se envía un email al administrador, para que valide el error puntual que origino la caída del servicio.
#! / bin / bash
FILE=servicios.txt
TIME='date +%Y-%m-%d_%H-%m-%S'
while read linea; do
if ps ax | grep -v grep | grep $linea > /dev/null
then
echo "Servicio $linea esta ejecutandose"
else
echo "El Servicio $linea ,estaba DETENIDO, a las $TIME" >> Servicios.log
service $linea start
echo "Validar el estado del servicio, si esta down, puede ser iniciado con: service $linea status, estaba down a las $TIME" | mail -s "Servicio $linea Detenido " usuario@dominio.com
fi
done < "$FILE"
Se debe tener en cuenta, crear el archivo de servicios.txt en la misma ruta donde coloquemos el script, por aquello del tema de las rutas. El archivo de Servicios.log podemos enviarlo a la ruta que deseamos, por solo mencionar /var/log/, para este caso, quedó en la misma ruta del script.
Ahora solo queda colocarlo en un cron. Al ser un proceso de corto tiempo de procesamiento del servidor, podemos programarlo cada 3 minutos, para que valide el estado del servicio. ¿ Como hacerlo ? editamos el vim /etc/crontab y agregamos la siguiente linea:
*/3 * * * * /ruta/del/script/script.sh
visto en la mirada del replicante