He creado un shell script que verifica que el servicio mysql este corriendo... para ello hago un simple nmap al puerto 3306, si esta "open" el servicio esta corriendo, por lógica si al hacer el grep y el resultado es contrario, el servidor mysql esta parado o caído. Este script lo he colocado en 3 servidores por el momento, la salida del script (generada cada 2 minutos por un cron) deja el resultado "OK" o "CAÍDO" segun el nmap. Ese resultado lo toma un script en php en un servidor ajeno a estos tres, donde da el resultado de todos los mysqls (de los tres servidores).
Pero el tema esta en que todo funciona, cuando el puerto esta cerrado da "CAIDO", pero ayer un server dio problemas de SQL, el SQL estaba caído y acudi al server, y el puerto estaba abierto... así que me estoy planteando cambiar la forma en que verifico que el servicio este arriba.. porque el sql puede no conectar a los php's por ej. y seguir arriba ??
Estoy usando nmap porque es algo comun en todos los servidores, también podría verificar el estado como lo hace este tipillo en
este script, pero es algo realmente tedioso configurar los datos para cada servidor, cada password del root...
Este es mi scriptcillo :):
Código:
#!/bin/bash
# Mini-MySQL Monitor
MYTMP=/root/mychek.temp
DN=/dev/null
rm $MYTMP -f 2> $DN
function scan_service () {
nmap -p 3306 localhost > $MYTMP
}
function check_service () {
if cat $MYTMP | grep "open" 1> $DN
then
echo "OK"
else
echo "CAIDO"
fi
}
function main () {
scan_service
check_service
}
if [ -d /var/www/html/appliance ]; then
RESULT=/var/www/html/mychek/
else
RESULT=/usr/local/apache/htdocs/mychek/
fi
mkdir $RESULT 2> $DN
main > $RESULT/mychek.log
Alguna idea ?
Gracias.