Fluentdの死活監視を設定しました。使用したプラグインは下記です。
- fluent-plugin-ping-message
- fluent-plugin-flowcounter
- fluent-plugin-forest
- fluent-plugin-redeliver
- fluent-plugin-zabbix
ログの送信には基本的にfluent-agent-lite
を使用しています。fluent-agent-lite
でping_message
を設定するとfluent-agent-lite
のプロセス数分ping messageが飛ぶので、その数値をfluent-plugin-flowcounter
で計測しzabbixで監視しています。また、どのプロセスが落ちたのかを記録するためにping_message_checker
にも渡してファイルに記録されるようにしています。fluent-plugin-flowcounter
とping_message_checker
にタグを書き換えて渡すために、fluent-plugin-redeliver
を使用します。
送信側のfluent-agent-lite
の設定は下記のようにしています。PING_TAG
のhostnameはzabbixに登録してあるホスト名と同じであると想定しています。違う場合は適当に直書きでいいと思います。
1 2 3 |
|
受信側の設定は下記です。notification_times
やPING_INTERVAL
等、監視間隔を60秒で統一するのがポイントです(´ω`)
あとはzabbixでこんな感じのアイテム作ればfluentdのプロセス鵜が取れてくると思います。
適当にトリガーを設定してプロセス数に変化があったらアラートあげるなり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-lite
はPING_TAG
等をあらかじめ設定したrpmファイルを作成してzabbixはテンプレートを作成することでホスト追加も簡単にできる!!と思います(´ω`) 個人的には満足のできです!