OpenWrtデバイスへのPrometheus Exporter導入とGrafanaダッシュボード

公開

ルータやWiFiアクセスポイントとして運用している様々な OpenWrt デバイスへ Prometheus Exporter をインストールして、 Grafana のダッシュボード上で集中監視できるようにしました。

 パッケージ群のインストール

LuCI上でPrometheus関連パッケージを検索すると、大量にヒットしてしまうのですが、
(下図は、H3C NX30 Proに入れたOpenWrt 23.05.2の例)

図1.Prometheus関連パッケージ

図1.Prometheus関連パッケージ

必要なパッケージは以下の6つ。

  • prometheus-node-exporter-lua
  • prometheus-node-exporter-lua-nat_traffic
  • prometheus-node-exporter-lua-netstat
  • prometheus-node-exporter-lua-openwrt
  • prometheus-node-exporter-lua-wifi
  • prometheus-node-exporter-lua-wifi_stations

OpenWrtのパッケージマネージャ opkg は、複数パッケージを空白区切りで連結しての一括インストールができず、一つ一つ地道にインストールするのが地味に面倒。

そんな中、改行区切りにして複数行を一括実行する小技が、Grafana Blogにありました(Great Works!!)。

インストール後、Prometheus Exporter Luaサービスが開始されるのですが、その仕組みの違いからNetdataのエージェントと比べ、プロセスのリソース消費が圧倒的に少ないことには驚かされました。

この事象に関し、こちらの比較レビュー記事を目にしたことがきっかけとなり、NetdataからPrometheusへの乗り換えを踏み切った次第です(鳴謝!!)。

 

設定ファイルの編集

インストール直後、サービスは開始されているものの、デフォルトではローカルホストの待ち受けに限定されているので、リモートホストからの利用には設定変更が必要。

Prometheus Exporter LuaにはGUIによる設定が無いので、設定ファイル /etc/config/prometheus-node-exporter-lua を直接編集します。

但し、古いOpenWrtのパッケージでは待ち受けの記述方法が以下の通り、異なっていました。

サービスを再起動して設定を反映させた後、ブラウザからメトリクスが開けることを確認します。

図2.OpenWrt Exporter Metrics

図2.OpenWrt Exporter Metrics

Prometheus側の設定

続いてPrometheusサーバへ移り、設定ファイルへOpenWrt用のjobを以下のように記述しました。

Prometheusサービスの再起動後、PrometheusのWebUI上で、ターゲットに追加されているのを確認。

図3.Prometheusターゲット一覧

図3.Prometheusターゲット一覧

Grafanaダッシュボード

Grafanaのダッシュボードには、汎用のNode Exporter Fullをベースにしたと謳われている、こちらのOpenWrt向けのダッシュボードをインポートしてみました。

Import dashboard にて、ダッシュボードIDを入力してロード。

図4.ダッシュボードIDからロード

図4.ダッシュボードIDからロード

データソースにPrometheusを選択してインポート実行。

図5.データソースにPrometheusを選択

図5.データソースにPrometheusを選択

ダッシュボードレイアウトは、確かにほぼNode Exporter Fullでした。なお、Root FSが N/A になるのは、ディスク関連メトリクスが得られていないため(各デバイス共通)。

図6.OpenWrtダッシュボード

図6.OpenWrtダッシュボード

複数の同じようなデバイスをどう見せるか考えた結果、取り敢えずデバイスの数だけ同じダッシュボードを複製し、設定を含めて保存することで対処。それらをプレイリストに登録して、紙芝居のように順繰りに表示させる形にしました。

図7.ダッシュボードのプレイリスト

図7.ダッシュボードのプレイリスト

ディスク関連メトリクスの追加

ディスク関連メトリクスが N/A となってしまう問題は、OpenWrtパッケージのGitHubでも指摘されているのですが、その中でメトリクス収集に必要な disk.lua ファイルを組みあげている猛者がいらっしゃいました(Great Works!!)。

Prometheus Node Exporter Luaが計測に使うコレクタプローブは、 /usr/lib/lua/prometheus-collectors/ に収められています。そこへ、次のファイルを新規作成、実行権限を付与の上、サービスを再起動。

Grafanaダッシュボードに、Root FSの情報が正しく表示されました。

図8.ダッシュボードのRoot FS情報

図8.ダッシュボードのRoot FS情報

以上で情報を収集するPrometheus側の設定は完了し、今後の課題はGrafanaでどう見せるかに。Netdataのノード一覧のような感じにしたいので、ダッシュボードデザインを調べてみるつもりです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA