1
0
mirror of https://git.openwrt.org/feed/packages.git synced 2024-06-20 07:38:40 +02:00

prometheus-node-exporter-lua: fix corner case in hostapd_stations

There was a corner case, when a vif had no stations, that
evaluate_metrics for a station that was nil and had no collected metrics
would have been called.

Comment the code, to make it easier to understand and follow, and
simplify some variable names along the way.

Signed-off-by: Martin Weinelt <hexa@darmstadt.ccc.de>
This commit is contained in:
Martin Weinelt 2021-06-26 02:15:17 +02:00 committed by Etienne Champetier
parent a98596168a
commit a1b145abb0

View File

@ -139,26 +139,33 @@ local function scrape()
local all_sta = handle:read("*a") local all_sta = handle:read("*a")
handle:close() handle:close()
local current_station = nil local station = nil
local current_station_values = {} local metrics = {}
for line in all_sta:gmatch("[^\r\n]+") do for line in all_sta:gmatch("[^\r\n]+") do
if string.match(line, "^%x[0123456789aAbBcCdDeE]:%x%x:%x%x:%x%x:%x%x:%x%x$") then if string.match(line, "^%x[0123456789aAbBcCdDeE]:%x%x:%x%x:%x%x:%x%x:%x%x$") then
if current_station ~= nil then -- the first time we see a mac we have no previous station to eval, so don't
labels.station = current_station if station ~= nil then
evaluate_metrics(labels, current_station_values) labels.station = station
evaluate_metrics(labels, metrics)
end end
current_station = line
current_station_values = {} -- remember current station bssid and truncate metrics
station = line
metrics = {}
else else
local name, value = string.match(line, "(.+)=(.+)") local key, value = string.match(line, "(.+)=(.+)")
if name ~= nil then if key ~= nil then
current_station_values[name] = value metrics[key] = value
end end
end end
end end
labels.station = current_station
evaluate_metrics(labels, current_station_values) -- the final station, check if there ever was one, will need a metrics eval as well
if station ~= nil then
labels.station = station
evaluate_metrics(labels, metrics)
end
end end
end end