日向夏特殊応援部隊

俺様向けメモ

Nagios::Plugins::Memcached 0.02 Release

昨日、ちょっと修正して0.02をリリースしました。
Nagiosプラグインmemcachedを監視するコマンドです。*1

監視項目は、

  • 接続できるか
  • レスポンスタイム
  • キャッシュサイズ
  • キャッシュヒット率

の4つです。

接続とレスポンス

指定時間内に接続出来るかどうかは、ソース上では以下のようになってます。

local $SIG{ALRM} = sub {
  $self->add_message( CRITICAL, "Timeout $timeout sec." );
  croak("Timeout $timeout sec");
};

alarm $timeout;

my $cache = Cache::Memcached->new( { servers => $hosts } );

$cache->set_cb_connect_fail(
  sub {
    my $prefip = shift;
    $self->add_message( CRITICAL, "Can't connect to $prefip" );
    croak("Can't connect to $prefip");
  }
);

my $start = time();
my $stats = $cache->stats( [qw/misc/] );
my $end   = time();

$stats->{time} = $end - $start;

Cache::Memcached#stats()メソッドを接続としちゃってるので厳密じゃないですけど、まぁそういう実装です。
ちなみにCache::Memcached#set_cb_connect_fail()で接続失敗した際のコールバックが登録出来るようになってます。

キャッシュサイズ、キャッシュヒット率

ここら辺は全部Cache::Memcached#stats()から取れるデータを全面的に信用して採用してます。

Nagiosプラグイン開発

これはデブサミid:kazeburoさんがプレゼンしてます。

デブサミ2007の発表資料 Nagiosのプラグインの話 : blog.nomadscafe.jp

僕はNagios::Pluginモジュールを継承して作ってます。
シンプルなんですぐ出来るはず。

バッドノウハウの最たる物はコマンド自体にPODを書いてはいけないと言う点。これ凄い重要><

その他の留意点はPerlで書く場合は、Nagios plug-in development guidelines - 4. Perl Pluginsを見て下さい。

*1:そういえばrepcached, flaredとかmemcachedプロトコルで云々って次々出てきましたね。repcachedは噂によるとversion 3000まで予定されてるとかされてないとか。