servicio caido

5 de enero de 2009

Tengo una web que tiene un formulario de contacto y desde mi servidor de correo, una vez al día, recojo esos correos que se han generado en el formulario web. El formulario no envía directamente el correo a mi servidor sino que se queda en un buzón externo a mi dominio. Una vez al día recojo este correo con un fetchmail.

Por motivos que aun no he descubierto el servicio del fecthmail se me cae y pasan semanas hasta que me doy cuenta que no llegan los correo de la web. Para salir del paso lo normal es programar un cron que reinicie el servicio cada cierto tiempo. Si el servicio esta up pues no pasa nada, y si esta down pues se levantará.

Este es un script para determinar si un servicio esta caído y que le llegue al admin un correo. El servicio no es critico y no necesito ninguna solución en tiempo real como whatsup.

#!/bin/bash

if pidof fetchmail > /dev/null; then
   echo Servicio fetchmail esta UP
else
   echo "El servicio de fetchmail esta DOWN en $(uname -n)" | 
         mail -s "ALERT: Fetchmail DOWN" admin@miempresa.com
fi

Este script lo programaría cada hora para que mirara si está levantado el servicio. Podríamos modificarlo para que después de enviar el correo levantara el servicio, pero a mi solo me interesa que me avise.

El comando /bin/pidof me dice si un servicio esta up o down. Este comando es un script con el siguiente código:
#!/bin/sh
ps axc|awk "{if (\$5==\"$1\") print \$1}";