Browse Source

prometheus-node-exporter-lua: an unavaliable wifi interface may have stopped the scraper from functioning

Signed-off-by: Zoltan Haindrich <kirk@rxd.hu>
lilik-openwrt-22.03
Zoltan Haindrich 5 years ago
committed by Etienne Champetier
parent
commit
7bec619f53
2 changed files with 58 additions and 54 deletions
  1. +23
    -21
      utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/wifi.lua
  2. +35
    -33
      utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/wifi_stations.lua

+ 23
- 21
utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/wifi.lua View File

@ -13,29 +13,31 @@ local function scrape()
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 labels = {
channel = iw.channel(ifname),
ssid = iw.ssid(ifname),
bssid = iw.bssid(ifname),
mode = iw.mode(ifname),
ifname = ifname,
country = iw.country(ifname),
frequency = iw.frequency(ifname),
device = dev,
}
if ifname ~= nil then
local iw = iwinfo[iwinfo.type(ifname)]
local labels = {
channel = iw.channel(ifname),
ssid = iw.ssid(ifname),
bssid = 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
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)
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


+ 35
- 33
utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/wifi_stations.lua View File

@ -26,42 +26,44 @@ local function scrape()
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 count = 0
if ifname ~= nil then
local iw = iwinfo[iwinfo.type(ifname)]
local count = 0
local assoclist = iw.assoclist(ifname)
for mac, station in pairs(assoclist) do
local labels = {
ifname = ifname,
mac = mac,
}
if station.signal and station.signal ~= 0 then
metric_wifi_station_signal(labels, station.signal)
end
if station.inactive then
metric_wifi_station_inactive(labels, station.inactive)
end
if station.expected_throughput and station.expected_throughput ~= 0 then
metric_wifi_station_exp_thr(labels, station.expected_throughput)
end
if station.tx_rate and station.tx_rate ~= 0 then
metric_wifi_station_tx_bitrate(labels, station.tx_rate)
end
if station.rx_rate and station.rx_rate ~= 0 then
metric_wifi_station_rx_bitrate(labels, station.rx_rate)
end
metric_wifi_station_tx_packets(labels, station.tx_packets)
metric_wifi_station_rx_packets(labels, station.rx_packets)
if station.tx_bytes then
metric_wifi_station_tx_bytes(labels, station.tx_bytes)
end
if station.rx_bytes then
metric_wifi_station_rx_bytes(labels, station.rx_bytes)
end
local assoclist = iw.assoclist(ifname)
for mac, station in pairs(assoclist) do
local labels = {
ifname = ifname,
mac = mac,
}
if station.signal and station.signal ~= 0 then
metric_wifi_station_signal(labels, station.signal)
end
if station.inactive then
metric_wifi_station_inactive(labels, station.inactive)
end
if station.expected_throughput and station.expected_throughput ~= 0 then
metric_wifi_station_exp_thr(labels, station.expected_throughput)
end
if station.tx_rate and station.tx_rate ~= 0 then
metric_wifi_station_tx_bitrate(labels, station.tx_rate)
end
if station.rx_rate and station.rx_rate ~= 0 then
metric_wifi_station_rx_bitrate(labels, station.rx_rate)
end
metric_wifi_station_tx_packets(labels, station.tx_packets)
metric_wifi_station_rx_packets(labels, station.rx_packets)
if station.tx_bytes then
metric_wifi_station_tx_bytes(labels, station.tx_bytes)
end
if station.rx_bytes then
metric_wifi_station_rx_bytes(labels, station.rx_bytes)
end
count = count + 1
count = count + 1
end
metric_wifi_stations({ifname = ifname}, count)
end
metric_wifi_stations({ifname = ifname}, count)
end
end
end


Loading…
Cancel
Save