mackerel-plugin-fluentd-monitor を作った
mackerel-plugin-fluentd-monitorを作りました。
背景
Fluentdのoutputプラグインはバッファを持っており、inputから受け取ったデータを保持しています。このデータは設定された間隔や量に達することなどで送信されます。
設定がよくなかったり、あるいはoutput先への送信が失敗したりすると、このバッファはどんどん溜まることになります。
そこで、バッファの状態をモニタリングできると便利です。
使い方
Build
GitHubからソースを取得し、go build
してください。
現時点ではリポジトリにはリリース用のバイナリは用意していません。
Fluentd
monitor_agentを有効にします。
<source>
type monitor_agent
bind 0.0.0.0
port 24220
</source>
outputのプラグインにidを設定します。
<match *>
id your_plugin_id
type forward
...
</match>
mackerel-plugin-fluentd-monitor は「outputプラグインである」かつ「idが設定されている」という両方の条件を満たすプラグインのメトリックをMackerelに送信するようになっています。
よって、監視したいプラグインにはidを設定する必要があります。
Mackerel
mackerel-agent.conf への記述例:
[plugin.metrics.fluentd-monitor]
command = "/usr/local/bin/mackerel-plugin-fluentd-monitor"
mkrを使ってサービスメトリックに登録する例:
/usr/local/bin/mackerel-plugin-fluentd-monitor | /usr/local/bin/mkr throw -service=yourservice
これをシェルスクリプトにしてcronに設定するなど。
解説
monitor_agent
Fluentdはmonitor_agentというプラグインを内蔵しています。
以下の例のように、バッファに関連する buffer_queue_length, buffer_total_queued_size, retry_count といった値を取得することが出来ます。
{
"plugins":[
{
"plugin_id":"your_plugin_id",
"type":"forward",
"output_plugin":true,
"buffer_queue_length":27746,
"buffer_total_queued_size":1,
"retry_count":0,
"config":{ ... }
},
...
]
設定の詳細はfluentdのドキュメントを読んでください。
本プラグインは上記のJSONを取得したあと、Mackerelに送信できる以下の形式を出力します。
fluentd.buffer.retry.your_plugin_id 0 1436424545
fluentd.buffer.queue.your_plugin_id 1 1436424545
fluentd.buffer.size.your_plugin_id 27746 1436424545
この記事はQiitaの記事をエクスポートしたものです
Discussion