Verifique as consultas lentas do mysql

1

É possível monitorar o mysql como:

  • se algumas consultas durarem mais de 300 segundos - será alertado
  • se algumas consultas durarem mais de 500 segundos, será crítico

Eu tentei:

/usr/lib/nagios/plugins/check_mysql_health --hostname localhost --username icinga --password XXX --mode slow-queries --warning 300

Mas isso mostra apenas a taxa slow_queries / por segundo. Como posso monitorar o mysql como eu descrevo?

Obrigado pela sua ajuda.

Br

    
por Rafał Kamiński 29.10.2012 / 22:11

2 respostas

1

Verifique os scripts do mysql por percona. Existem alguns utilitários muito bons: link link

    
por 20.12.2012 / 06:57
0

Usar o Nagios para monitorar a disponibilidade do serviço MySQL é OK, mas certamente não são consultas lentas.

Eu uso um script simples que executa a cada x segundos no crontab e varre a lista de processos para capturar consultas em execução por mais de 180 segundos. Espero que ele se encaixe no seu caso também:

    #!/bin/bash


[email protected] 

count=0

# capture all running queries
echo "<TABLE BORDER=1><TR><TH>Queries running more than 180 seconds</TH></TR></TABLE>" > /tmp/long_running_queries.htm
mysql -uroot -ppassword -s -e "SELECT  now(), ID, USER, HOST, DB, COMMAND, TIME, STATE, INFO FROM  information_schema.PROCESSLIST WHERE HOST not in ('%','localhost') AND COMMAND not in ('Sleep','Binlog Dump') AND TIME > 120;" > /tmp/all_running_queries.txt
echo "<TABLE BORDER=1>" >> /tmp/long_running_queries.htm

# store the output
while IFS= read -r ROW
do
    count=$(($count + 1))
    echo "<TR>" >> /tmp/long_running_queries.htm
    echo "$ROW"  >> /tmp/long_running_queries.htm
    echo "</TR>" >> /tmp/long_running_queries.htm
done < /tmp/all_running_queries.txt 

# if there are more than 2 long running queries then send the output from while loop above into mail
# else pruge the output
if (("$count" > "2"));
then
    echo "</TABLE>" >> /tmp/long_running_queries.htm
    Subject="$count SQL queries running for more than 180 Seconds"
    Body="Some text"
    echo $Body | mutt -a /tmp/long_running_queries.htm -s "$Subject" $Notify
else
    echo "" > /tmp/long_running_queries.htm
fi
    
por 03.04.2014 / 21:34