OpenWrtのPrometheus ExporterにWiFi接続中のデバイス名を含めたい

公開

OpenWrtルータやAPの監視用に導入したPrometheus Node Exporterでは、WiFi接続中デバイスの情報のMACアドレスまでは分かるものの、肝心のデバイス名が収録されていません。オリジナルのコレクタプローブluaファイルを改造して、ホスト名を含めた仕様へ拡張、Grafanaで一覧表示させました。


wifi_stations.luaコレクタプローブの仕様

 OpenWrtデバイスにPrometheus Node Exporterを導入し、PrometheusのフロントエンドであるGrafana上にダッシュボードをセットアップするところまでを、以前構築しました。

WiFi接続中のクライアントデバイスは、ダッシュボード上の Wifi Stations 項であり、それは wifi_stations と言うメトリクスを参照していることが分かります。

図1.Grafana OpenWrt ダッシュボード

図1.Grafana OpenWrt ダッシュボード

その生データを直接開いてみると、様々な統計情報と共に、クライアントデバイスのMACアドレスを見つけることはできるものの、ホスト名のようなものはありません。

図2.wifi_stationsメトリクスデータ

図2.wifi_stationsメトリクスデータ

コレクタプローブwifi_stations.luaを確認すると、中でデータのネタ元としているのは、 iwinfo assoclist コマンドであることが判明。

試しにターミナル上で実行してみると、やはりここでもホスト名は分からず。

 

他のコレクタプローブパッケージ

他に何か似通ったコレクタプローブのパッケージが無いか、調べてみると hostapd 関連で以下の2つがヒットするも、そのうちの前者は別途フル仕様でビルドされたhostapd / wpadを必要とするようなのでナンセンス。

  • prometheus-node-exporter-lua-hostapd_stations
  • prometheus-node-exporter-lua-hostapd_ubus_stations
図3.hostapd関連プローブパッケージ

図3.hostapd関連プローブパッケージ

後者は名前からしてOpenWrt ubus経由で取得するようなので、そのまま導入できそう。

パッケージをインストールの後、サービスを再起動して再度メトリクスの生データを確認するも、残念ながらここにもホスト名はありませんでした。

 

ubusでgetHostHintsを呼び出す

実は別記事でethersデータベースの内容をPrometheus Node Exporterで晒す仕組みを製作したのは、デバイスのMACアドレスとホスト名の紐付け情報がそこにあるためでした。

[post.7050]

ただ、受け取り側のPrometheus+Grafanaでの処理の複雑さを考えると、あまり現実的ではないようにも。

そこで視点を替えて、既存のコレクタプローブ wifi-stations.lua の改造を志向するに当たり、白羽の矢を立てたのがLuCI.rpcのgetHostHints()メソットです。

ターミナルから ubus call で実際に呼び出してみるとこれがかなり優秀で、データのネタ元にethersデータベースが含まれていることや、IPアドレスやホスト名が網羅されていました。

 

wifi_stations.luaプローブの改造

コレクタプローブwifi_stations.luaへ加える変更点は、次の3つ。

実際に改変した wifi_stations.lua の全体像は次の通り。行頭に  とあるのが追記部分です。

サービスを再起動して反映後、ブラウザでメトリクスの生データを確認、これでメトリクスにホスト名が網羅されました。

図4.メトリクスデータにホスト名入り

図4.メトリクスデータにホスト名入り

Grafanaダッシュボードで一覧表示

図1のOpenWrtダッシュボードから必要な項目を抜き出し、複数デバイスを1画面で監視できるダッシュボードを作成、その右にWiFi接続中のクライアント数(下図矢印)と、クライアント一覧(下図赤枠内)を信号強度と共に表示させました。

図5.Grafana WiFiクライアント一覧

図5.Grafana WiFiクライアント一覧

WiFiクライアント一覧はGrafanaのTableパネルを使用、不要な項目をフィルタリングで除外した上で、ホスト名の他に信号強度をしきい値で色分け定義しています。

図6.Grafana Table パネル設定

図6.Grafana Table パネル設定

コメントを残す

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

CAPTCHA