prometheus-node-exporter-lua: Add wifi_station_count
authorAlex Tomlins <alex@tomlins.org.uk>
Sun, 7 Apr 2019 13:01:12 +0000 (14:01 +0100)
committerEtienne Champetier <echampetier@anevia.com>
Fri, 16 Aug 2019 06:11:48 +0000 (23:11 -0700)
To return the number of connected clients.

At present this can be partially inferred by using a count() over one of
the existing metrics, however this doesn't handle the case when there
are no connected clients. When that happens, the count() will return no
data instead of 0.

Signed-off-by: Alex Tomlins <alex@tomlins.org.uk>
(cherry picked from commit 1237e196b47dbbd7cac7cf7cabe4b8c86e09e0da)

utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/wifi_stations.lua

index d9095a96995cb20855d4da74aaae3a448f242332..25c144f023cf00ff6055945c02ea21784118036f 100644 (file)
@@ -2,6 +2,7 @@ local ubus = require "ubus"
 local iwinfo = require "iwinfo"
 
 local function scrape()
+  local metric_wifi_stations = metric("wifi_stations", "gauge")
   local metric_wifi_station_signal = metric("wifi_station_signal_dbm","gauge")
   local metric_wifi_station_tx_packets = metric("wifi_station_tx_packets_total","counter")
   local metric_wifi_station_rx_packets = metric("wifi_station_rx_packets_total","counter")
@@ -13,6 +14,7 @@ local function scrape()
     for _, intf in ipairs(dev_table['interfaces']) do
       local ifname = intf['ifname']
       local iw = iwinfo[iwinfo.type(ifname)]
+      local count = 0
 
       local assoclist = iw.assoclist(ifname)
       for mac, station in pairs(assoclist) do
@@ -23,7 +25,9 @@ local function scrape()
         metric_wifi_station_signal(labels, station.signal)
         metric_wifi_station_tx_packets(labels, station.tx_packets)
         metric_wifi_station_rx_packets(labels, station.rx_packets)
+        count = count + 1
       end
+      metric_wifi_stations({ifname = ifname}, count)
     end
   end
 end