はじめに
昨日の 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
自身を監視ツール等でポーリングすることで死活監視ツールとしての側面もある