Brico shellscripts 1 : Informe diario nocturno de querys lentas en tu servidor mysql
Inaguro esta sección de brico shell scripting con un mini shell script que me acabo de hacer para mi servidor particular. El propósito de dicho script es que todas las noches a las 12 se nos envie un email automatico con el log querys lentas que guarda nuestro servidor mysql, estos son los pasos a seguir (uso Debian, pero mas o menos es igual en otros *nix).
1) Editar el archivo de configuración de nuestro mysql para activar el logado de querys lentas.
Ponemos en consola:
nano /etc/mysql/my.cnf
Buscamos las línea que dicen:
#log-slow-queries = /var/log/mysql/mysql-slow.log
#long_query_time = 2
Descomentamos esas líneas borrando la almohadilla (#), el parámetro long_query_time son los segundos transcurridos de una query para ser considerada lenta y logeada. La información detallada oficial sobre slow queries esta aquí.
Y acto seguido reiniciamos el servicio de mysql:
/etc/init.d/mysql force-reload
2) Creamos un pequeño script de shell que se encargará de leer dicho log y enviárnoslo por correo.
nano mysql-slow-mail.sh
Y en dicho archivo nuevo ponemos:
#!/bin/sh
#Script para enviarte por email un informe de querys lentas de tu server mysql
touch mysql-slow.log
cp /var/log/mysql/mysql-slow.log mysql-slow.log && mail -s "querys lentas de mysql" mi.correo@gmail.com < mysql-slow.log
rm mysql-slow.log
3) Vamos a probar una vez el script, no te olvides de dar permisos de ejecucion al archivo (chmod +x mysql-slow-mail.sh). Si todo ha ido bien deberías tener un nuevo email en tu bandeja de entrada como este:
/usr/sbin/mysqld, Version: 5.0.32-Debian_7etch1-log (Debian etch distribution). started with:
Tcp port: 3306 Unix socket: /var/run/mysqld/mysqld.sock
Time Id Command Argument
Si no pone nada mas es buena señal ;-D
Ahora ya sólo falta añadir la ejecución automática de dicho script a las 12 de la noche de cada día añadiéndolo como tarea de cron, edita el crontab:
crontab -e
y añade una línea mas:
0 0 * * * /var/bricoscripts/mysql-slow-mail.sh
La ruta como puedes ver corresponde a la ubicación del script en mi máquina, tendrás que cambiarla para poner la tuya.
Eso es todo amigos.
