sardine で mackerel-plugin の出力をサービスメトリックとして投稿する

全国三千万 Mackerel ユーザーの皆様こんにちは。

mackerel-plugin で生成した値を、サービスメトリックとして投稿したいと思ったことはないでしょうか。ありますよね。でも mackerel-agent ではホストメトリックしか投稿できません。

ということで、拙作の sardine に Mackerel のサービスメトリックとして投稿する機能を追加しました。(Thanks for @jet_zousan)

sardine についてはこちらをご覧ください。

sfujiwara.hatenablog.com github.com

mackerel-plugin 互換の出力を CloudWatch のメトリックとして投稿する agent です。 おもにコンテナ環境で、mackerel-agent を全部に立てたくはないけど使い慣れた mackerel-plugin で収集した値を集約して把握することを目的としています。Go で書かれていてバイナリ1つで動作するため、コンテナに同梱して動かすのも簡単です。

以下のような設定ファイルで起動すると

[plugin.metrics.ping]
command = "mackerel-plugin-ping -count 2 -host 8.8.8.8,8.8.4.4"
service = "Home"
destination = "Mackerel"

サービスメトリックを投稿して

$ sudo MACKEREL_APIKEY="XXX" sardine -config test.conf -debug
2018/03/27 13:05:36 [plugin.servicemetrics.ping] starting
2018/03/27 13:05:38 putToMackerel: {"Service":"Home","MetricValues":[{"name":"ping.rtt.8_8_8_8","time":1522123536,"value":3.379283},{"name":"ping.rtt.8_8_4_4","time":1522123536,"value":2.739579}]}
2018/03/27 13:06:38 putToMackerel: {"Service":"Home","MetricValues":[{"name":"ping.rtt.8_8_8_8","time":1522123596,"value":2.716042},{"name":"ping.rtt.8_8_4_4","time":1522123596,"value":3.67368}]}

こんな感じにグラフができます。便利ですね。

f:id:sfujiwara:20180327131535p:plain

また、interval という設定で実行間隔を制御できるため、毎分取るほどでもない値を任意の間隔で投稿することもできます。(mackerel-agent では metric plugin の実行間隔は 1分で固定になっていて、現状変更できません)

どうぞご利用ください。