LoginSignup
8
8

More than 5 years have passed since last update.

mackerel-plugin-fluentd-monitor を作った

Posted at

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というプラグインを内蔵しています。
http://docs.fluentd.org/articles/monitoring

以下の例のように、バッファに関連する 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
8
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8