読者です 読者をやめる 読者になる 読者になる

ようへいの日々精進XP

どげんもこげんも無かろうもん

fluentd の監視エージェントを動かしてみた

fluentd Debian monitoring td-agent memo jq

はじめに

昨日の 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-elasticsearchelasticsearch に送っている環境で確認した。

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