openwrt dhcp leases prometheus metric
Note
this lua function works with prometheus and node exporter to allow scraping of openwrt's dhcp leases
Files
local function scrape()
local metric_dhcp_leases = metric("dhcp_leases_total", "gauge")
local metric_dhcp_lease_info = metric("dhcp_lease_info", "gauge")
local leases_file = "/tmp/dhcp.leases"
local leases_count = 0
local file = io.open(leases_file, "r")
if file then
for line in file:lines() do
local expiry, mac, ip, hostname, client_id = line:match("^(%d+)%s+([%x:]+)%s+([%d%.]+)%s+([^%s]*)%s+([^%s]*)$")
if ip and mac then
leases_count = leases_count + 1
local labels = {
ip = ip,
mac = string.upper(mac),
hostname = (hostname == "*" or hostname == "") and "unknown" or hostname,
client_id = (client_id == "*" or client_id == "") and "unknown" or client_id
}
metric_dhcp_lease_info(labels, 1)
end
end
file:close()
end
metric_dhcp_leases({}, leases_count)
end
return { scrape = scrape }