prometheus-node-exporter-lua: add mwan3 exporter

This commit is contained in:
Jérôme LOYET 2024-03-22 07:03:39 +01:00
parent 8bbc9c7d79
commit cbd87017b7
2 changed files with 57 additions and 0 deletions

View File

@ -246,6 +246,17 @@ define Package/prometheus-node-exporter-lua-realtek-poe/install
$(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/realtek-poe.lua $(1)/usr/lib/lua/prometheus-collectors/
endef
define Package/prometheus-node-exporter-lua-mwan3
$(call Package/prometheus-node-exporter-lua/Default)
TITLE+= (mwan3 collector)
DEPENDS:=prometheus-node-exporter-lua +libubus-lua
endef
define Package/prometheus-node-exporter-lua-mwan3/install
$(INSTALL_DIR) $(1)/usr/lib/lua/prometheus-collectors
$(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/mwan3.lua $(1)/usr/lib/lua/prometheus-collectors/
endef
$(eval $(call BuildPackage,prometheus-node-exporter-lua))
$(eval $(call BuildPackage,prometheus-node-exporter-lua-bmx7))
$(eval $(call BuildPackage,prometheus-node-exporter-lua-dawn))
@ -264,3 +275,4 @@ $(eval $(call BuildPackage,prometheus-node-exporter-lua-wifi))
$(eval $(call BuildPackage,prometheus-node-exporter-lua-wifi_stations))
$(eval $(call BuildPackage,prometheus-node-exporter-lua-snmp6))
$(eval $(call BuildPackage,prometheus-node-exporter-lua-realtek-poe))
$(eval $(call BuildPackage,prometheus-node-exporter-lua-mwan3))

View File

@ -0,0 +1,45 @@
local ubus = require "ubus"
local function scrape()
local u = ubus.connect()
local s = u:call("mwan3", "status", {})
for interface, status in pairs(s["interfaces"]) do
local labels = {
interface = interface,
}
metric("node_mwan3_interface_up", "gauge", labels, status["up"] and 1 or 0)
metric("node_mwan3_interface_last_ping_age_seconds", "gauge", labels, status["age"])
metric("node_mwan3_interface_online_seconds", "gauge", labels, status["online"])
metric("node_mwan3_interface_offline_seconds", "gauge", labels, status["offline"])
metric("node_mwan3_interface_uptime_seconds", "gauge", labels, status["uptime"])
metric("node_mwan3_interface_score", "gauge", labels, status["score"])
metric("node_mwan3_interface_lost", "gauge", labels, status["lost"])
metric("node_mwan3_interface_turn", "gauge", labels, status["turn"])
metric("node_mwan3_interface_enabled", "gauge", labels, status["enabled"] and 1 or 0)
metric("node_mwan3_interface_running", "gauge", labels, status["running"] and 1 or 0)
labels["status"] = status["status"]
local status_int = -3
if status["status"] == "disabled" then status_int = -2
elseif status["status"] == "notracking" then status_int = -1
elseif status["status"] == "offline" then status_int = 0
elseif status["status"] == "disconnecting" then status_int = 1
elseif status["status"] == "connecting" then status_int = 2
elseif status["status"] == "online" then status_int = 3
end
metric("node_mwan3_interface_status", "gauge", labels, status_int)
for i, track_ip in pairs(status["track_ip"]) do
local labels = {
interface = interface,
ip = track_ip["ip"],
}
metric("node_mwan3_interface_tracking_status", "gauge", labels, track_ip["status"] == "up" and 1 or 0)
metric("node_mwan3_interface_tracking_latency_seconds", "gauge", labels, track_ip["latency"] / 1000)
metric("node_mwan3_interface_tracking_packetloss", "gauge", labels, track_ip["packetloss"])
end
end
end
return { scrape = scrape }