2015年2月26日木曜日

MySQL HandlerSocketを監視するNagiosプラグイン

Quinn Dombrowski Sci-fi https://www.flickr.com/photos/quinnanya/7496308140

https://github.com/takeshiyako2/check-mysql-all/blob/master/check_handlersocket
HandlerSocket Plugin for MySQLへの接続を監視するNagiosプラグインです。
HandlerSocketへの読み込みコネクションチェック、書き込みコネクションチェック、検索チェックをサポートしています。

作者は、PerconaのRyan Loweさんです。
Ryan Lowe, Author at MySQL Performance Blog http://www.percona.com/blog/author/ryanalowe/




以下、セットアップ方法です。
環境は、Amazon Linux AMI 2014.09.2 (HVM) - ami-18869819です。

Perlのperl-Net-HandlerSocketモジュールをセットアップ。
# yum -y install cmake libtool libtool-ltdl libtool-ltdl-devel libedit-devel perl perl-devel git gcc-c++ perl-Time-HiRes perl-Test-Simple nagios-plugins-all
# git clone git://github.com/DeNA/HandlerSocket-Plugin-for-MySQL.git
# cd HandlerSocket-Plugin-for-MySQL
# ./autogen.sh
# ./configure --disable-handlersocket-server
# make
# make install
# cd perl-Net-HandlerSocket
# perl Makefile.PL
# make & make test
# make install

check_handlersocketプラグインをダウンロード。
# curl -O  https://raw.githubusercontent.com/garrinmf/check-mysql-all/master/check_handlersocket
$ perl check_handlersocket -h

ヘルプを見ると、タイムアウトは ”デフォルトで10秒” と書いてありますが、これは間違いで0.01秒です。
コードを見ると ualarm($OPTIONS{'timeout'}); となっているので、タイムアウトのオプションには、マイクロ秒を指定してあげます。
つまり、1秒 = 1000000、10秒 = 10000000 です。

以下、プラグインの使い方です。

読み込みコネクションと書き込みコネクションをチェック。
$ perl check_handlersocket -K read_connect -H localhost --timeout=1000000
OK: HandlerSocket is accepting read connections 

$ perl check_handlersocket -K write_connect -H localhost --timeout=1000000
OK: HandlerSocket is accepting write connections 

検索チェック。
テスト用テーブルを作成。
$ mysql -u root
mysql> USE test;
mysql> CREATE TABLE sample (id INT PRIMARY KEY, val INT);
mysql> INSERT INTO sample (id, val) VALUES (10, 100);
mysql> SELECT * FROM sample;

sampleテーブルから id = 10 を検索。
$ perl check_handlersocket -K read_exec -H localhost --database=test --table=sample --index='PRIMARY' --columns=val --index-value=10 --timeout=1000000
OK: Read

あとは、プラグインをNagiosなどに組み込めばOKです。
Enjoy!