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

32 lines
1013 B
Lua

local ubus = require "ubus"
local iwinfo = require "iwinfo"
local function scrape()
local metric_wifi_station_signal = metric("wifi_station_signal","gauge")
local metric_wifi_station_tx_packets = metric("wifi_station_tx_packets","gauge")
local metric_wifi_station_rx_packets = metric("wifi_station_rx_packets","gauge")
local u = ubus.connect()
local status = u:call("network.wireless", "status", {})
for dev, dev_table in pairs(status) do
for _, intf in ipairs(dev_table['interfaces']) do
local ifname = intf['ifname']
local iw = iwinfo[iwinfo.type(ifname)]
local assoclist = iw.assoclist(ifname)
for mac, station in pairs(assoclist) do
local labels = {
ifname = ifname,
mac = mac,
}
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)
end
end
end
end
return { scrape = scrape }