Prometheus-node-exporter-lua-wifi - issues with virtual access points

Are there any known issues with prometheus and multipule access points on the same radio? For one of my interfaces the ssid is missing.

I wish I was better with lua! Is there a way to run that lua command on the command line verbosely (ie: bash -x ./scriptname.sh)

# apk info | grep promethe
prometheus-node-exporter-lua
prometheus-node-exporter-lua-nat_traffic
prometheus-node-exporter-lua-netstat
prometheus-node-exporter-lua-openwrt
prometheus-node-exporter-lua-textfile
prometheus-node-exporter-lua-wifi
# wget -q -O - http://192.168.1.1:9100/metrics | grep "wifi_network_quality"
# TYPE wifi_network_quality gauge
wifi_network_quality{mode="Master",ifname="phy0.2-ap0",ssid="removed",channel="1",device="radio2",bssid="bc:fc:e7:27:xx",country="US",frequency="5955"} 52
wifi_network_quality{mode="Master",ifname="phy0.0-ap0",ssid="removed",channel="6",device="radio0",bssid="bc:fc:e7:27:88:xx",country="US",frequency="2437"} 0
wifi_network_quality{mode="Master",ifname="phy0.0-ap1",channel="6",device="radio0",bssid="be:fc:e7:27:88:xx",country="US",frequency="2437"} 85
wifi_network_quality{mode="Master",ifname="phy0.0-ap2",channel="6",device="radio0",bssid="ba:fc:e7:27:88:xx",country="US",frequency="2437"} 84
wifi_network_quality{mode="Master",ifname="phy0.0-ap3",channel="6",device="radio0",bssid="b6:fc:e7:27:88:xx",country="US",frequency="2437"} 0
wifi_network_quality{mode="Master",ifname="phy0.1-ap0",ssid="removed",channel="36",device="radio1",bssid="bc:fc:e7:27:88:xx",country="US",frequency="5180"} 74
#
# cat /usr/lib/lua/prometheus-collectors/wifi.lua
local ubus = require "ubus"
local iwinfo = require "iwinfo"

local function scrape()
  local metric_wifi_network_quality = metric("wifi_network_quality","gauge")
  local metric_wifi_network_bitrate = metric("wifi_network_bitrate","gauge")
  local metric_wifi_network_noise = metric("wifi_network_noise_dbm","gauge")
  local metric_wifi_network_signal = metric("wifi_network_signal_dbm","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']
      if ifname ~= nil then
        local iw = iwinfo[iwinfo.type(ifname)]
        local labels = {
          channel = iw.channel(ifname),
          ssid = iw.ssid(ifname),
          bssid = string.lower(iw.bssid(ifname)),
          mode = iw.mode(ifname),
          ifname = ifname,
          country = iw.country(ifname),
          frequency = iw.frequency(ifname),
          device = dev,
        }

        local qc = iw.quality(ifname) or 0
        local qm = iw.quality_max(ifname) or 0
        local quality = 0
        if qc > 0 and qm > 0 then
          quality = math.floor((100 / qm) * qc)
        end

        metric_wifi_network_quality(labels, quality)
        metric_wifi_network_noise(labels, iw.noise(ifname) or 0)
        metric_wifi_network_bitrate(labels, iw.bitrate(ifname) or 0)
        metric_wifi_network_signal(labels, iw.signal(ifname) or -255)
      end
    end
  end
end

return { scrape = scrape }
#

lua does not execute step by step, use print() betwen lines or use some IDE that inserts breakpoints between lines.

check iwinfo - maybe script overreacts to no clients on particular AP etc.