Monitorizar un Apache que se cuelga
Hay veces que tenemos problemas en un servidor de producción y tenemos que mantenerlo en pie sea como sea hasta que encontramos una solución.
Se me ocurrió que, si miraba en el log de apache y buscaba la cadena típica que deja el PHP (o lo que esté fastidiando) cuando se “estropea”, podría automatizar el reinicio del servidor hasta que diese con el problema. En mi caso, el mod_php5 hacía que el Apache se muriese con un “segmentation fault”.
Éste es mi sencillo “script”:
LINEAS=20 TOPE=18 CADENA="exit signal Segmentation fault" REINICIAR="service httpd restart" FICHREPORTE="/root/resultadosReinicios.log" FICHLOG="/var/log/httpd/error_log" NUMLINEASCHUNGAS=`tail --lines=$LINEAS $FICHLOG | grep "$CADENA" | wc -l` if [ $NUMLINEASCHUNGAS -gt $TOPE ]; then $REINICIAR echo `date` ": se ha reiniciado el apache." >> $FICHREPORTE cat <<EOF | sendmail -t From: `hostname` To: mi@direccion.correo Subject: Acabo de reiniciar el Apache Hola, soy el script que monitoriza el Apache de `hostname` y lo acabo de reiniciar. EOF fi
La finalidad de este script es poderte ir a dormir y al menos estar tranquilo durante la noche sin que el teléfono suene ![]()
En distros de la “familia Debian” se reiniciaría el Apache con un /etc/init.d/apache2 restart