prometheus-node-exporter-lua: add mwan3 exporter
This commit is contained in:
parent
8bbc9c7d79
commit
cbd87017b7
|
@ -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))
|
||||
|
|
|
@ -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 }
|
Loading…
Reference in New Issue