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

47 lines
1.0 KiB
Lua

-- thermal collector
local function scrape()
local i = 0
local temp_metric = metric("node_thermal_zone_temp", "gauge")
while true do
local zonePath = "/sys/class/thermal/thermal_zone" .. i
-- required attributes
local typ = string.match(get_contents(zonePath .. "/type"), "^%s*(.-)%s*$")
if not typ then
break
end
local policy = string.match(get_contents(zonePath .. "/policy"), "^%s*(.-)%s*$")
if not policy then
break
end
local temp = string.match(get_contents(zonePath .. "/temp"), "(%d+)")
if not temp then
break
end
local labels = {zone = i, type = typ, policy = policy}
-- optional attributes
local mode = string.match(get_contents(zonePath .. "/mode"), "^%s*(.-)%s*$")
if mode then
labels.mode = mode
end
local passive = string.match(get_contents(zonePath .. "/passive"), "(%d+)")
if passive then
labels.passive = passive
end
temp_metric(labels, temp / 1000)
i = i + 1
end
end
return { scrape = scrape }