Masteries

技術的なことや仕事に関することを書いていきます.

EdgeRouter Xでsardineを動かす

Edgerouter Xにmackerel-agentを入れて, 家のNasneやNature Remoを監視しています. 特段不満はないのですが, 唯一挙げるとすれば mackerel-agent.conf にプラグインの設定を書いているので, NasneやNature RemoのメトリックがEdgeRouter Xのカスタムメトリックとして扱われる, というのがあります. 出来ればHomeなどのサービスを用意して, そのサービスメトリックとして投稿したい...

そういう時に使えるのが, fujiwaraさん謹製のsardineです. Mackerelのプラグインによって取得したメトリックを, CloudWatchに蓄積したり, Mackerelのサービスメトリックとして投稿したりすることができます.

github.com

次のような設定ファイルを書いて...

[plugin.metrics.NatureRemo]
command = "/path/to/mackerel-plugin-nature-remo -access-key=..."
destination = "Mackerel"
service = "Home"

次のようなコマンドで, 設定ファイルを読み込みつつ実行すると, serviceで指定したMackerelのサービスにプラグインの実行結果がサービスメトリックとして登録されます.

$ MACKEREL_APIKEY=... sardine -config /path/to/sardine.conf

こういう感じ. いかにも便利ですね.

f:id:papix:20180809120010p:plain

というわけで, sardineをEdgeRouter Xでも動くようにビルドしてみましょう. 結論から言えば, 次のようにビルドしてあげればOKです.

$ GOOS=linux GOARCH=mipsle go build -o sardine ./cmd/sardine/main.go

sardineという名前で, GOOS=linuxかつGOARCH=mipsleなバイナリが生成されるので, あとはscpなどでEdgeRouter Xに転送して実行すれば大丈夫でした.