Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/07/2006, 12:48
Avatar de Sh4ka
Sh4ka
 
Fecha de Ingreso: marzo-2005
Mensajes: 205
Antigüedad: 19 años, 2 meses
Puntos: 0
Bash script para monitorizar SQL, sugerencias

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.