/var/log/study

つまり雑記

EdgeRouter X を Prometheus の node_exporter でメトリクス収集をしてみる

世の中にzabbixとMackerelは実際の知見があったけど、Prometheusを利用してEdgeRouterのメトリクス収集の知見は多く無さそうだったし、今後Prometheusを活用できないのは困るので、練習として。

ただし、EdgeRouter(≒VyOS≒Vyatta) にサービスを追加するのをきちんと取り組もうとする (=vyosのインターフェースで色々と設定できるようにしてあげる) と死ぬほど大変そうなので、一旦はnode_exporterが問題無さそうに動くまで。

自分の記事で扱う範囲は、EdgeRouterにnode_exporterを設置するところまでなので、Prometheusサーバーの構築等は他の記事を参考にしてください。

方針

  1. EdgeRouterをMackerelで監視する方法が世の中に知見として転がっているので、それを真似する。
    • Mackerel-agent も node_exporter も golang で書かれていて、知見の転用がし易いから
  2. EdgeRouter上で追加のサービスをきちんと動かすための知見が少ないのでそこもお手軽にやる。 
  3. メトリクスに関しては後日整備する

やったこと

Prometheusの入門を眺める

knowledge.sakura.ad.jp

node_exporterをコンパイルする。

papix.hatenablog.com

上記を参考にしつつ、以下の様なコンパイル方法に落ち着いた

自分はmacの上でコンパイルして、EdgeRouterに持っていった。

go get github.com/prometheus/node_exporter
cd ${path}/${to}/node_exporter
env GOOS=linux env GOARCH=mipsle go build node_exporter.go

EdgeRouterのCPUは普段使うPCとアーキテクチャが違うけど、こういうときにgolangのクロスコンパイルの便利さが効いてくるなぁと思った。

EdgeRouterにコンパイル後のバイナリを置く

後述するinitスクリプトの兼ね合いで /opt/promehteus/node_exporter にした。

node_exporeter用のinit scriptを設置する

EdgeRouterはinit.d でサービスを取り扱っているので、以下のスクリプトをパクらせてもらって /etc/init.d/node_exporter とした。

Init.d script for prometheus node exporter · GitHub

自分でいじったのは、USERを prometheus から root にしたくらい。

実際の起動

sudo /etc/init.d/node_exporter start

Rebootしても大丈夫にする

EdgeRouterのOSの元になっているDebianとかでは chkconfig はなく、 update-rc.d などを使うことになっているが、 EdgeRouter内には無い雰囲気。

ので、今回はお手軽に /etc/rc.local/etc/init.d/node_exporter start を追記しておくことにする。

確実にもっといい方法があるのだけど、EdgeRouterのお作法がよくわからなかったので一旦はこれで。

実際の雰囲気

自分のルーター172.0.0.1 で動いているので以下のようになった。途切れているのはrebootした所で、監視のダウンタイムは大体3分くらい。

f:id:yaaamaaaguuu:20180128215101p:plain