Fluent-plugin-ping-messageとzabbixで死活監視

Fluentdの死活監視を設定しました。使用したプラグインは下記です。

  • fluent-plugin-ping-message
  • fluent-plugin-flowcounter
  • fluent-plugin-forest
  • fluent-plugin-redeliver
  • fluent-plugin-zabbix

ログの送信には基本的にfluent-agent-liteを使用しています。fluent-agent-liteping_messageを設定するとfluent-agent-liteのプロセス数分ping messageが飛ぶので、その数値をfluent-plugin-flowcounterで計測しzabbixで監視しています。また、どのプロセスが落ちたのかを記録するためにping_message_checkerにも渡してファイルに記録されるようにしています。fluent-plugin-flowcounterping_message_checkerにタグを書き換えて渡すために、fluent-plugin-redeliverを使用します。

送信側のfluent-agent-liteの設定は下記のようにしています。PING_TAGのhostnameはzabbixに登録してあるホスト名と同じであると想定しています。違う場合は適当に直書きでいいと思います。

1
2
3
PING_TAG=ping.`hostname`
PING_DATA=`hostname`
PING_INTERVAL=60

受信側の設定は下記です。notification_timesPING_INTERVAL等、監視間隔を60秒で統一するのがポイントです(´ω`)

あとはzabbixでこんな感じのアイテム作ればfluentdのプロセス鵜が取れてくると思います。

item

適当にトリガーを設定してプロセス数に変化があったらアラートあげるなりfluent-agent-lite再起動するなりすればいいと思います。

また、これだけだとどのログを読み込んでいたプロセスが落ちたのかわからないですが、ping_message_checkerで落ちたプロセスをファイルに落としているのでそこを見れば一応わかるようになってます。(/var/log/td-agent/ping_error)

「こんなめんどくさいことしなくても、ping_message_checkerのアラートをzabbixのログ監視すればいいんじゃね?(‘・u・`) 」と最初思いましたが、zabbix 1.8系のログ監視はミリ秒単位のログ監視はできず、1秒以内に複数のログがあがった場合正確にアラートをあげることができなかったような気がするな〜ってことでやめました。(zabbix 2.0系では直っていたはずです。)

送信側fluent-agent-liteの設定はホストごとに変える必要がなく、かつzabbixでホストごとに監視できるのでわかりやすいかと思います。(たぶん) fluent-agent-litePING_TAG等をあらかじめ設定したrpmファイルを作成してzabbixはテンプレートを作成することでホスト追加も簡単にできる!!と思います(´ω`) 個人的には満足のできです!

Comments