はじめに
昨日の Fluentd Casual Talks #3 で @kzk_mover さんが紹介されていた監視エージェントについて触ってみた。以下は @kzk_mover さんの資料。
ドキュメント、参考
監視エージェント自体もプラグインなんですな。
設定
td-agent にて試した。td-agent.conf に以下を設定して td-agent を再起動。
<source> type monitor_agent bind 0.0.0.0 port 24220 </source>
以上。
試す
ざくっと見た感じだと各種プラグインのステータスを JSON 又は LTSV フォーマットで出力する。試しに in_tail プラグインで nginx のログを読み込んで fluent-plugin-elasticsearch で elasticsearch に送っている環境で確認した。
JSON 形式
curl http://172.17.0.12:24220/api/plugins.json | jq .
以下のようなレスポンスが得られる。
LTSV 形式
curl http://172.17.0.12:24220/api/plugins
以下のようなレスポンスが得られる。
なるほど、なるほど、キューのサイズ等がリアルタイムに変化する。これを使ってキューの溢れやキューのサイズを監視することが出来る。
少し応用
出力を絞り込んでみる
fluentd の話とは離れるが jq を使うことでレスポンスの出力を絞りこむことが出来るので、type buffer_queue_length buffer_total_queued_size のみを出力してみる場合には以下のようなクエリを投げる。
curl -q http://xxx.xxx.xxx.xxx:24220/api/plugins.json | jq '.plugins[]|select (.output_plugin == 'true' and .type != "copy")|{type,buffer_queue_length,buffer_total_queued_size}'
以下のような出力が得られる。
おお、いいね!
さいごに
- 設定を少し追加するだけで簡単に
fluentdの設定情報をJSON等の形式で取得出来るのが助かる fluentdが稼働しているホストに設定しておいて各ノードの管理ツール等に応用出来そう- もちろん、この
URL自身を監視ツール等でポーリングすることで死活監視ツールとしての側面もある