Mackerelにホストメトリックを投稿するにはAgentのプラグインを作成する以外にも、API経由で投稿することも可能です。
MackerelのAPIドキュメントはこちらです。
サンプルコード
サンプルコードは以下のような感じです。
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のカスタムメトリックのグラフにはこのような形で表示されます。
Mackerelが生成するホストIDは /var/lib/mackerel-agent/id
から取得できます。(FAQ)
リクエストヘッダの X-Api-Key
にAPIキーを付与する必要があります。リクエストヘッダについてはmackerel-client-rubyが参考になります。
メトリクスの名前(name)ですが、試した時点では custom.
から始めないとServicesのメトリクスに表示されなかったので注意が必要です。(Hostsのカスタムメトリックには表示された)