Monitorear servicios (ftp, mysql, apache etc) y levantar si esta caído.

Se que hay muchos monitores de servicios, incluso webmin tiene uno muy bueno, pero tengo servidores muy lite que apenas y ejecutas programas, algunos solo con un FTP y con RAM limitada, otros con nginx nada más y no corren nada más, hacen de proxy o son backup, así que no merece la pena instalar webmin en algunos, por lo tanto hice este pequeño script para levantar servicios caídos automáticamente.

Esta pensando en servidores con Debian, aunque funciona en Centos también, en servidores cPanel no hace falta ya que cpanel tiene su propia herramienta de monitoreo, pero hay que lo querrá poner por cualquier motivo, pero no funciona con apache con httpd status de cPanel y tampoco con exim ( motivo desconocido aún )

El script funciona con cualquier servicio que returne un código de error por defecto, aunque se puede pulir más.

#!/bin/bash
# Monitoreo de servicios.
# Por Skamasle - Maks Usmanov.
# Skamasle.com - kb.skamasle.com
# Contacto [email protected]
# Modificación: 29 dic 2013
# Versión 0.4
# Use bajo su propio riesgo, skamasle.com no se hace responsable del uso que se le de al script
# NOTA: Este script no borra ni hace intentos de borrar ningún archivo, solo revisa que los
# servicios estén corriendo, el único archivo que crea este script es ReporteServicios.txt
# que es donde se guardará el reporte de servicios que han estado caídos.
servicios='proftpd mysql apache2 nginx varnish memcached lighttpd pureftpd pure-ftpd-mysql httpd'
report=/root/ReporteServicios.txt
fecha=$(date)
checkstatus () {
service $1 status > /dev/null 
status="$?"
if [ $status  -eq "1" ] || [ $status  -eq "2" ] || [ $status  -eq "3" ] || [ $status  -eq "4" ]; then
	echo "$1 esta caído" $fecha >> $report
	/etc/init.d/$1 start >> $report
fi
}

existe () {

if [ -e /etc/init.d/$1 ]; then
	checkstatus $1
fi
}

for servicio in $servicios
        do 
                existe $servicio
done

Descargar y ejecutar:

wget mirror.skamasle.com/scripts/sk-monitoring.sh

Cron:

*/5 * * * * sh /ruta/sk-monitoring.sh

Eso es todo, si alguien quiere aportar alguna idea para mejorar el script, bienvenida sea.

Sistemas de monitoreo más completos

Si buscan algo más pro, pueden usar webmin que tiene un servicio de monitoreo completo.

Enlace a SIM
Enlace a CSF
Enlace a Webmin

Esos 3 son sistemas bastante completos si quieren algo mejor, sk-moinitoring es para tener algo propio, pero que no compite con sistemas con años de desarrollo.