Nagiosを使っていると、その瞬間の絶対値だけじゃなく、差分や変化量を取得してその数値を監視したくなりますよね。ならないとしたら、今すぐこの記事を読むのをやめて病院に行って下さい。

Nagiosで変化量を測定するには、プラグインの中で前の数値をどこかファイルにでも保存し、比較するという手があります。このcheck_bandwidthはその方法を取っているようです。

ただ、これだと汎用性があまりないので、監視対象サーバ側に定期的に指定したコマンドを実行して、その数値を外部から取得できるサーバを書いてみました。

CPAN: https://metacpan.org/release/App-derived *出てくるまで時間がかかるようです

github: https://github.com/kazeburo/App-derived

使い方

インストールはcpanmで

$ cpanm -n App::derived

コマンドとキーを書いたファイルを用意します

slowlog: mysql -NB -e 'show global status like "Slow_queries"'
select: mysql -NB -e 'show global status like "Com_select"'

複数のコマンドを指定することができます。

derivedを起動します

$ derived -i 10 --port 12306 Cmd

-i がコマンドを実行する間隔、portがmemcachedプロトコルなサーバが使うポート、最後に上で書いたコマンドファイルを指定します

あとは memcached のクライアントでアクセスします。perlだとCache::Memcached::Fastでしょうか。

my $memcached = Cache::Memcached::Fast->new({
    servers => [qw/localhost:12306/],
});

say $memcached-server_versions->{"localhost:12306"};
=> 0.01
say $memcached->get('slowlog'); #秒間の数字だけ
=> 0.2
say $memcached->get('slowlog:full'); #JSON形式
=> {"persec":0.2,"exit_code":0,"last_update":1360224680,"status":"OK","raw":"Slow_queries\t5990"}

10秒間ごとにmysqlコマンドを実行し、Slow_queriesの値の差を10で割った数がでてきます。

あとは check_memcached_num.pl (仮称) というNagiosプラグインつくって監視すれば汎用性も高いし、便利なはず。こっちはのちほど

このブログ記事について

このページは、Masahiro Naganoが2013年2月 7日 17:12に書いたブログ記事です。

ひとつ前のブログ記事は「HRForecast - もうひとつのデータビジュアライズツール」です。

次のブログ記事は「Plack::Middleware::AxsLog supports LTSV format!」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja