次のようにmysqlを監視することは可能ですか?
私は試した:
/usr/lib/nagios/plugins/check_mysql_health --hostname localhost --username icinga --password XXX --mode slow-queries --warning 300
ただし、これは1秒あたりの速度slow_queriesのみを示しています。説明したようにmysqlを監視するにはどうすればよいですか?
ご協力ありがとうございました。
Br、
Perconaでmysqlスクリプトを確認してください。いくつかの非常に優れたユーティリティがあります: http://www.percona.com/software/percona-toolkithttp://www.percona.com/software/percona-monitoring-plugins
Nagiosを使用してMySQLサービスの可用性を監視することは問題ありませんが、クエリが遅くなることはありません。
Crontabでx秒ごとに実行される単純なbashスクリプトを使用し、プロセスリストをスキャンして、180秒を超えて実行されているクエリをキャプチャします。それがあなたのケースにも合うことを願っています:
#!/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