fluent-plugin-webhook-mackerelを利用する

fluent-plugin-webhook-mackerelを利用することでMackerelからのイベントをfluentdで受けとることができます。アラートの状況を記録したり、アラートをトリガーとして何らかのアクションをおこないたい場合に便利です。

インストール

% gem install fluent-plugin-webhook-mackerel

fluentd設定ファイルへの反映

以下はfluentdの設定ファイルの一例です。

<source>
  type webhook_mackerel
  tag mackerel

  # optional (values are default)
  bind 0.0.0.0
  port 3838
  mount /
</source>

<match mackerel.alert>
  ...
</match>

<match mackerel.**>
  ...
</match>

データのtagは #{tag}.#{event} の形式で入力されます。上記の設定の場合、アラートイベントが発生した際には、 mackerel.alert タグでデータが入力されます。

Webhookの設定

連携のためにMackerel側でWebhookの設定をおこないます。Webhookの設定よりfluentd連携のためのURLを以下のように指定してください。

連携テストをおこなうと、sampleイベントが発行されてWebhookに通知されます。

fluentdのログに以下のようなログが出ていれば連携成功です。

2015-09-24 17:02:37 +0900 [info]: tag: mackerel.sample, payload:{"message"=>"Sample Notification from Mackerel", :event=>"sample"}
2015-09-24 17:02:37 +0900 mackerel.sample: {"message":"Sample Notification from Mackerel","event":"sample"}
2015-09-24 17:02:37 +0900 fluent.info: {"message":"tag: mackerel.sample, payload:{\"message\"=>\"Sample Notification from Mackerel\", :event=>\"sample\"}"}

fluentdサーバーのポートをインターネット上に露出させるのが現実的ではない場合は、前段にNginxなどのプロキシを配置すると良いでしょう。

Webhookについての詳細は、Webhookにアラートを通知する、をごらんください。