#fluentd やっつけのfluentd監視用Nagiosプラグインを書いた
まあ、そのまんまです。fluentdの死活監視を考えた時に
- ポートチェック
- プロセスチェック
等がありますが、せっかくなので監視ログが一定時間以内に流れてくるかどうか
という監視も入れてみようと考えました。
これはプロセスの正常性と合わせて、fluentd側が問題無いのにtailしているログの
問題で正常に動いていないケースもNagiosで検知する為です。
で、fluentdを稼働させるサーバはWebサーバなので、元々Nagiosが監視用のGETリクエストを
送出しているので、それをログで戻して貰って判定しようというのが大雑把な流れ。
こんな感じ。
- ホスト側fluentdは程よいレベルでNagiosへ監視用ログを飛ばす
- Nagios側fluentdで監視用ログを受信する
- 設定した時間毎にプラグインを実行する
- 最新のログをチェックしていって、該当文字列が閾値時間以内に出現したらOK
- 閾値超えていたらwarningやcriticalと判断
という感じ。
で、中身はNagios側でもfluentdを動かすのでrubyで書いてみた。
https://github.com/oranie/fluentd-tools/blob/master/fluentd-tools/check_fluentd.rb
※rubyで書いたとか言ってますがLinuxコマンドも使っているので、まあ残念な感じです。
一個だけまだ迷っている処理があるんですが、
・最後までログを読んでも該当文字列が無い場合もcritical
という処理にしていますが、ログのスイッチとかが入ると監視ログが流れてくる前に
監視プラグインの実行が走り、誤判定されると思います。
ただ、これはNagios側の死活判定閾値とかラッパーしたシェルの方でリトライ入れるとか
受信するfluentdでログを頻繁にスイッチさせないとかで、まあ良いかなと。
凄まじくRuby力低いので、プークスクスした人は是非直して下さい><