Masteries

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

EdgeRouter Xでmackerel-agentを動かす

この記事は, 「Mackerel Advent Calendar 2017」の17日目の記事です.

qiita.com

EdgeRouter Xでmackrel-agentを動かす

EdgeRouter Xは, ネットワーク機器ベンチャーUbiquiti Networksというところが開発しているルータ製品の1つです. 安価な割にいろいろ遊ぶことができて, 秋あたりからいろいろと設定して遊んでいます. ちなみに最近はAmazonでも買えるようになったみたいです.

Ubiquiti Networks Edgerouter ER-X(日本国内)

Ubiquiti Networks Edgerouter ER-X(日本国内)

EdgeRouter Xの上にはMIPSが乗っており, すなわちMIPS向けにビルドすればEdgeRouter Xでもmackerel-agentが動く...! という情報を, 同僚の id:astj さんから伺ったので, 実際にやってみたというのがこの記事の内容です.

astj.hatenablog.com

この記事で紹介した方法を使えば, (Go言語が対応している)任意のアーキテクチャでmackerel-agentを動かすことができそうです.

mackerel-agentをビルドする

mackerel-agentをビルドするには, リポジトリをcloneした後,

$ make build

すればOKです. 今回の場合, EdgeRouter XのためにMIPS(正確にはリトルエンディアンのMIPS)でビルドしたいので,

$ GOOS=linux GOARCH=mipsle make build 

このようにしましょう. すると, buildディレクトリ下にmackerel-agentが生成されますので, scpなどを利用して, EdgeRouter Xに持っていきます.

後は, EdgeRouter X側で,

$ sudo su -
# mv /path/to/mackerel-agent /usr/bin/mackerel-agent

のようにして, /usr/bin/mackerel-agentに配置しましょう.

設定ファイルの設置

mackerel-agentの設定ファイル, mackerel-agent.confも設置しなければなりません.

# mkdir /etc/mackerel-agent/

のように, ディレクトリを用意して,

# vi /etc/mackerel-agent/mackerel-agent.conf

で, APIキーなどを書き込みましょう.

自動起動の設定

これで, /usr/bin/mackerel-agentで, mackerel-agentが起動するようになりました. 次は, EdgeRouter Xを再起動した際, 自動的にmackerel-agentが起動するようにしてみましょう.

いろいろと方法はありますが, 今回は起動時に/etc/rc.localが実行されることを利用して, ここでmackerel-agentを起動する方法を取ります.

# vi /etc/rc.local

でファイルを開き,

/usr/local/bin/mackerel-agent supervise  >> /var/log/mackerel-agent.log 2>&1 &

のように, mackerel-agentがバックグラウンドで実行されるように設定します.

これで, 何らかの事情でEdgeRouter Xがシャットダウンしても, mackrel-agentが自動的に起動するようになりました.

Mackerelから見たEdgeRouter X

f:id:papix:20171112230013p:plain

こういう感じで, 普通に各種パラメータが取得できます. 途中一部データが途切れているのは, EdgeRouter Xを再起動したときにmackerel-agentが再起動することを確認したときの様子です.

EdgeRouter Xでプラグインも動かす

Goで実装されたプラグインであれば, ここまで紹介してきた方法を使い, GOOS=linuxかつGOARCH=mipsleとしてビルドすれば, EdgeRouter Xで動かすことができます.

papix.hatenablog.com

実は, 先日こちらの記事で紹介したMackerelのnasne用プラグインも, Goで実装されていたので, ビルドしてEdgeRouter Xの上で動かしたりしています...!

EdgeRouter Xであれば, 意外とPerlも5.14.2が使えるようになっているので, コアモジュール縛りをすればPerlでプラグインを書いて... ということもできそうです.

まとめ

EdgeRouter Xでmackerel-agentを動かす方法を紹介しました. mackerel-agentはGo言語で実装されているので, こういった時に適切なアーキテクチャでビルドすれば, シュッと動かすことができて便利ですね!

Mackerelは, 無料プランでも5ホストまで監視することが出来るので, EdgeRouter Xを使っている方は是非Mackerelを使った監視にもチャレンジしてみて下さい.