96 lines
3.9 KiB
Lua
96 lines
3.9 KiB
Lua
local ubus = require "ubus"
|
|
|
|
local function scrape()
|
|
local dsl_line_attenuation = metric("dsl_line_attenuation_db", "gauge")
|
|
local dsl_signal_attenuation = metric("dsl_signal_attenuation_db", "gauge")
|
|
local dsl_snr = metric("dsl_signal_to_noise_margin_db", "gauge")
|
|
local dsl_aggregated_transmit_power = metric("dsl_aggregated_transmit_power_db", "gauge")
|
|
local dsl_latency = metric("dsl_latency_seconds", "gauge")
|
|
local dsl_datarate = metric("dsl_datarate", "gauge")
|
|
local dsl_max_datarate = metric("dsl_max_datarate", "gauge")
|
|
local dsl_error_seconds_total = metric("dsl_error_seconds_total", "counter")
|
|
local dsl_errors_total = metric("dsl_errors_total", "counter")
|
|
local dsl_erb_total = metric("dsl_erb_total", "counter")
|
|
|
|
local u = ubus.connect()
|
|
local m = u:call("dsl", "metrics", {})
|
|
|
|
-- dsl hardware/firmware information
|
|
metric("dsl_info", "gauge", {
|
|
atuc_vendor = m.atu_c.vendor,
|
|
atuc_system_vendor = m.atu_c.system_vendor,
|
|
chipset = m.chipset,
|
|
firmware_version = m.firmware_version,
|
|
api_version = m.api_version,
|
|
driver_version = m.driver_version,
|
|
}, 1)
|
|
|
|
-- dsl line settings information
|
|
metric("dsl_line_info", "gauge", {
|
|
annex = m.annex,
|
|
standard = m.standard,
|
|
mode = m.mode,
|
|
profile = m.profile,
|
|
}, 1)
|
|
|
|
local dsl_up
|
|
if m.up then
|
|
dsl_up = 1
|
|
else
|
|
dsl_up = 0
|
|
end
|
|
|
|
metric("dsl_up", "gauge", {
|
|
detail = m.state,
|
|
}, dsl_up)
|
|
|
|
-- dsl line status data
|
|
metric("dsl_uptime_seconds", "gauge", {}, m.uptime)
|
|
|
|
-- dsl db measurements
|
|
dsl_line_attenuation({direction="down"}, m.downstream.latn)
|
|
dsl_line_attenuation({direction="up"}, m.upstream.latn)
|
|
dsl_signal_attenuation({direction="down"}, m.downstream.satn)
|
|
dsl_signal_attenuation({direction="up"}, m.upstream.satn)
|
|
dsl_snr({direction="down"}, m.downstream.snr)
|
|
dsl_snr({direction="up"}, m.upstream.snr)
|
|
dsl_aggregated_transmit_power({direction="down"}, m.downstream.actatp)
|
|
dsl_aggregated_transmit_power({direction="up"}, m.upstream.actatp)
|
|
|
|
-- dsl performance data
|
|
if m.downstream.interleave_delay ~= nil then
|
|
dsl_latency({direction="down"}, m.downstream.interleave_delay / 1000000)
|
|
dsl_latency({direction="up"}, m.upstream.interleave_delay / 1000000)
|
|
end
|
|
dsl_datarate({direction="down"}, m.downstream.data_rate)
|
|
dsl_datarate({direction="up"}, m.upstream.data_rate)
|
|
dsl_max_datarate({direction="down"}, m.downstream.attndr)
|
|
dsl_max_datarate({direction="up"}, m.upstream.attndr)
|
|
|
|
-- dsl errors
|
|
dsl_error_seconds_total({err="forward error correction", loc="near"}, m.errors.near.fecs)
|
|
dsl_error_seconds_total({err="forward error correction", loc="far"}, m.errors.far.fecs)
|
|
dsl_error_seconds_total({err="errored", loc="near"}, m.errors.near.es)
|
|
dsl_error_seconds_total({err="errored", loc="far"}, m.errors.far.es)
|
|
dsl_error_seconds_total({err="severely errored", loc="near"}, m.errors.near.ses)
|
|
dsl_error_seconds_total({err="severely errored", loc="far"}, m.errors.far.ses)
|
|
dsl_error_seconds_total({err="loss of signal", loc="near"}, m.errors.near.loss)
|
|
dsl_error_seconds_total({err="loss of signal", loc="far"}, m.errors.far.loss)
|
|
dsl_error_seconds_total({err="unavailable", loc="near"}, m.errors.near.uas)
|
|
dsl_error_seconds_total({err="unavailable", loc="far"}, m.errors.far.uas)
|
|
dsl_errors_total({err="header error code error", loc="near"}, m.errors.near.hec)
|
|
dsl_errors_total({err="header error code error", loc="far"}, m.errors.far.hec)
|
|
dsl_errors_total({err="non pre-emptive crc error", loc="near"}, m.errors.near.crc_p)
|
|
dsl_errors_total({err="non pre-emptive crc error", loc="far"}, m.errors.far.crc_p)
|
|
dsl_errors_total({err="pre-emptive crc error", loc="near"}, m.errors.near.crcp_p)
|
|
dsl_errors_total({err="pre-emptive crc error", loc="far"}, m.errors.far.crcp_p)
|
|
|
|
-- dsl error vectors
|
|
if m.erb ~= nil then
|
|
dsl_erb_total({counter="sent"}, m.erb.sent)
|
|
dsl_erb_total({counter="discarded"}, m.erb.discarded)
|
|
end
|
|
end
|
|
|
|
return { scrape = scrape }
|