systemadmin.es > DBA > Check de Nagios para el log de MySQL

Check de Nagios para el log de MySQL

En el log del MySQL podemos encontrar errores, como tablas corruptas, que de otra forma deberíamos de detectar en la capa de aplicación

Tomando de ejemplo una tabla corrupta, tendríamos en el log entradas similares a la siguiente por cada query que use dicha tabla:

130107 20:00:19 [ERROR] /usr/local/mysql/bin/mysqld: Table './db/tbl' is marked as crashed and should be repaired

Otros errores comunes, como por ejemplo el Sort aborted (una query con sort que no se ha podido completar o la hemos matado) podemos ignorar el error para que no nos vaya saltando la alerta de Nagios:

120913 10:58:03 [ERROR] /usr/local/mysql51/libexec/mysqld: Sort aborted

En el caso que tengamos un sistema de ficheros dedicado para el datadir del MySQL, se nos quejará que el directorio lost+found no pertenece a ninguna base de datos. Este error también lo podemos ignorar:

131116  6:00:01 [ERROR] Invalid (old?) table or database name 'lost+found'

El resto de errores los mostraremos tal cual en el check, por ejemplo:

131005 20:59:01 [ERROR] /usr/local/mysql/bin/mysqld: Incorrect key file for table '/tmp/#sql_4269_19.MYI'; try to repair it
131005 20:59:01 [ERROR] Got an error from unknown thread, /usr/local/src/mysql-5.5.28/storage/myisam/mi_write.c:223

Estos errores al no estar contemplados los mostrará como WARNING:

*'ERROR'*)
echo "WARNING - ERROR found: $LASTLINE"
exit 1
;;

Podemos descargar el check mediante:

svn export http://nagios-systemadmin.googlecode.com/svn/trunk/check_mysql_log

El password del MySQL lo buscará en el fichero /var/mysql/.mysql.root.pass, sino mediante la opción -p se lo podemos pasar:

./check_mysql_log -p passw0rdmysql

2 comments to “Check de Nagios para el log de MySQL”

  1. Hola Jordi,

    Como comentábamos ayer por twitter el fallo es simple, tu tienes una línea así

    LASTLINE=$(grep -E "^[0-9]{6}" $(echo "show variables like 'log_error';" | $MYSQLBIN -p$(cat /var/mysql/.mysql.root.pass) -N | head -n1 | awk '{ print $NF }') | tail -n1)
    

    y yo he tenido que cambiarla así

    LASTLINE=$(grep -E "^[0-9]{6}" $(echo "show variables like 'log_error';" | $MYSQLBIN --user=${USERNAME} --password=${MYSQLPASSWORD} -N | head -n1 | awk '{ print $NF }') | tail -n1)
    

    Para pasar estas variables he hecho otras modificaciones menores.

    Pero tal como decías, si no pasas la contraseña por parámetro es normal que se te pasara esta situación.

    Un saludo

  2. Hola,
    Ya lo he actualizado para incluir usuario y contraseña y arreglar el cat que hacía de todas formas

    Lo puedes ver en el repositorio:

    https://code.google.com/p/nagios-systemadmin/source/browse/trunk/check_mysql_log

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>