MySQLサーバへの”コネクション数”と”接続出来るまでの時間”を監視する

MySQLの監視

Nagiosを使ってMySQLサーバを監視していたのですが、
単にログイン出来るかどうかだけを監視していました。

この監視だけでは不十分だということが分かりました。

実際にコネクション数が上がって ”Too many Connection” の状態になると、
ログインが出来ないので アラートが上がるのですが。

この状態に至るまでに Connection数は 通常よりも多くなっていたはずです。
実際、max connections の設定値を超えるconnectionが張られたままになっていました。

ということで、監視を強化しました。

Nagiosプラグインで ”check_mysql_health” というのがあるので、
こちらを使うことにしました。

インストール手順

インストール手順は メモしていなかったので間違っている所があるかも知れません。

まずダウンロードサイトから
check_mysql_health-2.1.7.tar.gz (2012年2月8日時点)
を適当なディレクトリにwgetしておきます。

解凍して、
configureして
makeして
make installします。

configure時にはPerlのモジュールなどが必要みたいです。
私の環境では一つPerlモジュールがなくてすんなりいきませんでした。
Perlモジュールをインストールしてからは、
特に問題なくインストールが出来ました。

プラグインは/usr/local/nagios/libexec/ディレクトリにインストールされます。

NRPEを使ってプラグインに引数を渡してコマンドを実行するように設定します。

NRPEはインストール済みだったので割愛します。

/usr/local/nagios/etc/nrpe.cfg を編集します。

参考記事を元にコマンドを設定します。

■接続までの時間を監視
command[mysql_connection_time]=/usr/local/nagios/libexec/check_mysql_health --hostname localhost --user root --mode connection-time --warning 0.5 --critical 1.0
■接続数を監視
command[mysql_connections]=/usr/local/nagios/libexec/check_mysql_health --hostname localhost --user root --mode threads-connected --warning 10 --critical 20

プラグインMySQLへログインするユーザ名などの引数を渡して実行するように設定すると、
実行結果が返ってくるのですが。
これをNRPEを経由して実行することで、
nagios監視サーバ側で結果を得ているようです。(仕組みがよく分かってない)

このコマンドで設定した閾値を超えるとそれぞれ、
warning Critical とメッセージも変化するようになっています。

コマンドの設定が正しいかどうか確認するためには、
それぞれのコマンドを実行してみる事です。

正しければそれぞれMySQLの状態が表示されます。

usr/local/nagios/libexec/check_mysql_health --hostname localhost --user root --mode connection-time --warning 0.5 --critical 1.0
/usr/local/nagios/libexec/check_mysql_health --hostname localhost --user root --mode threads-connected --warning 10 --critical 20

ダウンロードサイト
check_mysql_health - ConSol Labs

参考記事
カジュアルに MySQL を監視する方法 | Carpe Diem

コンフィグで設定したコマンドを叩くように、
Nagiosサーバ側に 監視項目として設定すれば完了です。