prometheus-node-exporter-lua: expose node_os_info
authorEvgeni Golov <redacted>
Sun, 26 Apr 2026 13:22:00 +0000 (15:22 +0200)
committerEtienne Champetier <redacted>
Mon, 25 May 2026 02:46:13 +0000 (22:46 -0400)
the original node_exporter exposes a node_os_info metric with a set of
data about the system [1] which is then used by several dashboards.

openwrt.lua already exposes OS info, but using the node_openwrt_info
metric requires changes to existing dashboards, and would require more
complex lookups when there are non-OpenWrt hosts in the overview too.

as we've already called ubus and fetched the data, we can expose it in
two formats easily.

[1] https://github.com/prometheus/node_exporter/blob/d6d0e710bb7daf07a2743fde060f0d5f32c565f3/collector/os_release.go#L190-L192

Signed-off-by: Evgeni Golov <redacted>
utils/prometheus-node-exporter-lua/Makefile
utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/openwrt.lua

index 878f5ce41d197618eeed3b675c4a29c65db0c0e0..2d5fa8d9a71fbdd27fcc8b1ae42772fe4c039969 100644 (file)
@@ -4,7 +4,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=prometheus-node-exporter-lua
-PKG_VERSION:=2026.05.08
+PKG_VERSION:=2026.05.09
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>
index a92b7ddc16f8753181c0a7896ed1772df6961c6e..3493453931d3ec058b4f3504ec3094b64775ab2a 100644 (file)
@@ -12,13 +12,22 @@ local labels = {
     target = b.release.target
 }
 
+local os_info = {
+    id = string.lower(b.release.distribution),
+    name = b.release.distribution,
+    pretty_name = b.release.distribution .. " " .. b.release.version,
+    version = b.release.version,
+    version_id = b.release.version,
+    build_id = b.release.revision,
+}
+
 local b = nil
 local u = nil
 local ubus = nil
 
 local function scrape()
     metric("node_openwrt_info", "gauge", labels, 1)
+    metric("node_os_info", "gauge", os_info, 1)
 end
 
 return { scrape = scrape }
-
git clone https://git.99rst.org/PROJECT