Foros del Web » Administración de Sistemas » Unix / Linux »

Bash script para monitorizar SQL, sugerencias

Estas en el tema de Bash script para monitorizar SQL, sugerencias en el foro de Unix / Linux en Foros del Web. 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" ...
  #1 (permalink)  
Antiguo 29/07/2006, 12:48
Avatar de Sh4ka  
Fecha de Ingreso: marzo-2005
Mensajes: 205
Antigüedad: 19 años, 1 mes
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.
  #2 (permalink)  
Antiguo 29/07/2006, 16:37
Avatar de AleSanchez
Colaborador
 
Fecha de Ingreso: septiembre-2004
Ubicación: Buenos Aires, Argentina
Mensajes: 3.692
Antigüedad: 19 años, 7 meses
Puntos: 47
Y a mi me parece mejor poner un script local en cada servidor para que monitoree el estado.
Y quizas que se conecte a la base y haga alguna consulta simple para ver si responde correctamente. Esto se puede hacer sencillamente con el comando "mysql"

SAludos.
__________________
¡Volviendo a la programación!
  #3 (permalink)  
Antiguo 30/07/2006, 20:20
Avatar de ociomax
Colaborador
 
Fecha de Ingreso: mayo-2002
Ubicación: Temuco, Chile
Mensajes: 5.595
Antigüedad: 21 años, 11 meses
Puntos: 35
Concuerdo por AleSanchez. Es mejor crear un script local en el servidor que ejecute algo así como "/sbin/service mysqld status" y capture la salida. Luego puedes colocar eso en un simple archivo HTML que pueda ser accedido remotamente vía web.
__________________
Christian González, "OCIOMax"
http://chgonzalez.blogspot.com
http://twitter.com/chgonzalez
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:39.