Ruby
Mackerel

MackerelにAPI経由でホストメトリックを投稿する

More than 1 year has passed since last update.

Mackerelにホストメトリックを投稿するにはAgentのプラグインを作成する以外にも、API経由で投稿することも可能です。

MackerelのAPIドキュメントはこちらです。

https://mackerel.io/ja/api-docs/entry/host-metrics


サンプルコード

サンプルコードは以下のような感じです。

require 'net/https'

require 'json'

HOST_ID = File.read('/var/lib/mackerel-agent/id')
MACKEREL_API_KEY = '*****'

uri = URI.parse('https://mackerel.io/api/v0/tsdb')
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

req = Net::HTTP::Post.new(uri.path)
req["X-Api-Key"] = MACKEREL_API_KEY
req["Content-Type"] = "application/json"
req.body = [
{ hostId: HOST_ID, name: "custom.test.a", time: Time.now.to_i, value: Random.rand(100.0) },
{ hostId: HOST_ID, name: "custom.test.b", time: Time.now.to_i, value: Random.rand(100.0) },
{ hostId: HOST_ID, name: "custom.test.c", time: Time.now.to_i, value: Random.rand(100.0) },
].to_json
res = http.request(req)

Hostsのカスタムメトリックのグラフにはこのような形で表示されます。

スクリーンショット 2016-12-09 20.16.07.png

Mackerelが生成するホストIDは /var/lib/mackerel-agent/id から取得できます。(FAQ)

リクエストヘッダの X-Api-Key にAPIキーを付与する必要があります。リクエストヘッダについてはmackerel-client-rubyが参考になります。

メトリクスの名前(name)ですが、試した時点では custom. から始めないとServicesのメトリクスに表示されなかったので注意が必要です。(Hostsのカスタムメトリックには表示された)