指定したコマンドを定期的に実行してmemcachedプロトコルで結果が取得できるサーバ - App::derivedとも組み合わせて使えるように、memcachedのキャッシュのキーを指定して、その値を監視できるNagiosプラグインを書きました。check_snmpと同様に変化・差分量が計算できる機能もついてます。
変化・差分監視はの利用イメージとしては、Webアプリケーションなどで外部APIにアクセスしてそれがエラーになった際にあるmemcachedサーバに対してincrを実行し、それをNagiosで監視、エラーの回数が一定回数を超えたら警告を上げるなどの利用方法が考えられます。
check_memcached_val.pl
https://github.com/kazeburo/check_memcached_val
Perl 5.8.5以降が入っている環境であれば、おそくらコピーすればうごくはずです。
使い方
取得した値が指定した範囲にあるか・ないかの監視
$ ./check_memcached_val.pl -H ホスト -P ポート -k キャッシュのキー -w warningの閾値 -c criticalの閾値
正規表現での監視
$ ./check_memcached_val.pl -H ホスト -P ポート -k キャッシュのキー -r foo
変化・差分量の監視、秒間のrateになります
$ ./check_memcached_val.pl -H ホスト -P ポート -k キャッシュのキー --rate -w warningの閾値 -c criticalの閾値
rateオプションを指定した場合、監視の結果をtempdir以下のファイルに保存します。ファイルが存在していない初回の監視では自動でOKとなります
オプション
- -h, —help
- ヘルプの表示
- -H, —hostname=STRING
- ホスト名・IPアドレス
- -P, —port=INTEGER
- ポート番号・デフォルトは「11211」
- -k, —key=STRING
- 取得するキャッシュのキー
- -s, —string=STRING
- 文字列一致の監視
- -r, —ereg=REGEX
- 正規表現での監視。perlの正規表現が使えます
- -R, —eregi=REGEX
- 正規表現での監視。大文字小文字無視
- —invert-search
- -s,-r,-Rの監視結果を反転します
- -w, —warning=THRESHOLD
- 取得した値が数値の場合の監視閾値
- -c, —critical=THRESHOLD
- 取得した値が数値の場合の監視閾値
- -t, —timeout=INTEGER
- memcachedサーバへ接続する際のタイムアウト。デフォルト「10」
- —rate
- 変化・差分量監視を有効にする
- —rate-multiplier=INTEGER
- —rateで得られた数値に一定の係数を掛ける
THRESHOLDの形式は Nagiosのドキュメントを参照してください。
http://nagiosplug.sourceforge.net/developer-guidelines.html#THRESHOLDFORMAT
特別な値「0E0」
memcachedから「0E0」という文字列が得られた場合は、このプラグインは「OK」となります。監視対象で差分計算をしていてまだデータがそろっていない場合などに、0E0をsetしておくとアラートが上がらなくて済みます。App::derivedはデータの準備ができるまで「0E0」を返すようになっています