Nagiosの監視しようとRedisプラグイン探してみたら以下が見つかりました。
check_redis.pl - Nagios Exchange
ただ、PerlやPHPが必要だったので、バイナリファイルを置くだけで動くGoでプラグインを作ってみました。
コマンドのオプション
オプション | 説明 |
---|---|
-h|-host | Redisサーバのホスト名 or IP(default 127.0.0.1) |
-p|-port | Redisのポート番号(default 6379) |
-password | Redisのパスワード(設定している場合のみ) |
-timeout | タイムアウト(ミリ秒) |
-metrics | ※以下詳細 |
※ metric
オプションは少し複雑ですが、以下のような設定をします。
メトリクス名1:[警告閾値]:[異常閾値]:[gt|lt],メトリクス名2:[警告閾値]:...
gt
= 閾値以上の場合に警告または異常
lt
= 閾値以上の場合に警告または異常
例えば以下の4項目を設定をしたい場合
- used_memoryが1GB以上でWARNING
- used_memoryが2GB以上でCRITICAL
- mem_fragmentation_ratioが1.5以上でWARNING
- mem_fragmentation_ratioが1以下でCRITICAL
このように設定します。
used_memory:1073741824:2147483648:gt,mem_fragmentation_ratio:1.5::gt,mem_fragmentation_ratio::1:lt
コマンド実行例
$ go build check_redis.go $ ./check_redis -host localhost -port 6379 -timeout 1000 -metrics used_memory:1073741824:2147483648:gt,mem_fragmentation_ratio:1.5::gt,mem_fragmentation_ratio::1:lt [OK]Connection and Authorization Ok [OK]used_memory:543296.0 gt (warn1073741824.0 crit2147483648.0) [WARN]mem_fragmentation_ratio:4.7 gt (warn1.5) [OK]mem_fragmentation_ratio:4.7 lt (crit1.0) $ echo $? 1 # warning
Nagios定義例
command[check_redis]=/usr/lib64/nagios/plugins/check_redis -host $ARG1$ -port $ARG2$ -timeout $ARG3$ -metrics $ARG4$
define service { use prod-service hostgroups redishosts service_description Redis check_command check_nrpe!check_redis!localhost 6379 1000 used_memory:1073741824:2147483648:gt,mem_fragmentation_ratio:1.5::gt,mem_fragmentation_ratio::1:lt }
コード
参考資料
監視項目考えるのにこちら参考にしました。