koudenpaのブログ

趣味のブログです。職業柄IT関連の記事が多いと思います。

Node-RED から Mackerel にサービスメトリックを投げる

ここは Mackerel Advent Calendar 2017 - Qiita の13日目予定地です。

さて……

Node-RED からMackerelにメトリックを投げる例はググっても見当たらなかった気がするので、試してみた。

こういった「やってみた」は先人がいても、どんなにくだらない内容でも気にしないで発信する強い心が必要である。

とりあえず http request node でどうにかしてみる。

f:id:koudenpa:20171204234212p:plain

http request node は、リクエスト内容をNodeへのInputで指定できるので、手前のNodeでサービスメトリックをPostするように設定してやればよい。

さしあたって function node でごり押しする。

f:id:koudenpa:20171204233734p:plain

let time = (new Date()).getTime() / 1000;
let randomValue = Math.random();

msg.payload = new Array({
    name: "random-value",
    time: time,
    value: randomValue
});

// XXX Secret!
msg.headers = {
  "X-Api-Key": "かっこ悪いけれど別にAPI-Keyを埋め込んだっていいじゃない"  
};

msg.url = "https://api.mackerelio.com/api/v0/services/node-red/tsdb"
msg.method = "POST";

return msg;

どうにかなった。

Node-RED からだってメトリック投げ放題だ!

f:id:koudenpa:20171204234000p:plain

f:id:koudenpa:20171204234110p:plain

こんな感じのFlowでテストした。

f:id:koudenpa:20171204234829p:plain

これで最低限の体裁は整った。

元気と時間と運気があったらMackerel nodeをNode-REDのお勉強がてら作成したいと思う。

この記事がアドベントカレンダーからリンクされていたらお察しください。

mackerel.io

APIを直で叩けば、インターネットに接続されている環境ならメトリック投げ放題。 これはPush型のサービスの非常に大きな利点だと思う。

ただ、どうにもAPIリファレンスにベースURIが見当たらなくてちょっと困ったので、その旨サポートチームに連絡しておきました。

それでは。