prometheus-node-exporter-lua: Add thermal collector 21005/head
authorJoel Pettersson <me@joelpet.se>
Sat, 13 May 2023 10:26:45 +0000 (12:26 +0200)
committerJoel Pettersson <me@joelpet.se>
Tue, 13 Jun 2023 20:19:16 +0000 (22:19 +0200)
Signed-off-by: Joel Pettersson <me@joelpet.se>
utils/prometheus-node-exporter-lua/Makefile
utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/thermal.lua [new file with mode: 0644]

index 29a313bdbf28c61832cafca0bcf23c91e2a70b25..9a66bddecfdd9b7749404b8ee381944987001bc7 100644 (file)
@@ -4,7 +4,7 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=prometheus-node-exporter-lua
-PKG_VERSION:=2022.08.08
+PKG_VERSION:=2023.05.14
 PKG_RELEASE:=1
 
 PKG_MAINTAINER:=Etienne CHAMPETIER <champetier.etienne@gmail.com>
@@ -169,6 +169,17 @@ define Package/prometheus-node-exporter-lua-textfile/install
        $(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/textfile.lua $(1)/usr/lib/lua/prometheus-collectors/
 endef
 
+define Package/prometheus-node-exporter-lua-thermal
+  $(call Package/prometheus-node-exporter-lua/Default)
+  TITLE+= (thermal collector)
+  DEPENDS:=prometheus-node-exporter-lua
+endef
+
+define Package/prometheus-node-exporter-lua-thermal/install
+       $(INSTALL_DIR) $(1)/usr/lib/lua/prometheus-collectors
+       $(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/thermal.lua $(1)/usr/lib/lua/prometheus-collectors/
+endef
+
 define Package/prometheus-node-exporter-lua-ubnt-manager
   $(call Package/prometheus-node-exporter-lua/Default)
   TITLE+= (ubnt-manager collector)
@@ -246,6 +257,7 @@ $(eval $(call BuildPackage,prometheus-node-exporter-lua-nat_traffic))
 $(eval $(call BuildPackage,prometheus-node-exporter-lua-netstat))
 $(eval $(call BuildPackage,prometheus-node-exporter-lua-openwrt))
 $(eval $(call BuildPackage,prometheus-node-exporter-lua-textfile))
+$(eval $(call BuildPackage,prometheus-node-exporter-lua-thermal))
 $(eval $(call BuildPackage,prometheus-node-exporter-lua-ubnt-manager))
 $(eval $(call BuildPackage,prometheus-node-exporter-lua-uci_dhcp_host))
 $(eval $(call BuildPackage,prometheus-node-exporter-lua-wifi))
diff --git a/utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/thermal.lua b/utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/thermal.lua
new file mode 100644 (file)
index 0000000..3996ea5
--- /dev/null
@@ -0,0 +1,46 @@
+-- thermal collector
+local function scrape()
+  local i = 0
+  local temp_metric = metric("node_thermal_zone_temp", "gauge")
+
+  while true do
+    local zonePath = "/sys/class/thermal/thermal_zone" .. i
+
+    -- required attributes
+
+    local typ = string.match(get_contents(zonePath .. "/type"), "^%s*(.-)%s*$")
+    if not typ then
+      break
+    end
+
+    local policy = string.match(get_contents(zonePath .. "/policy"), "^%s*(.-)%s*$")
+    if not policy then
+      break
+    end
+
+    local temp = string.match(get_contents(zonePath .. "/temp"), "(%d+)")
+    if not temp then
+      break
+    end
+
+    local labels = {zone = i, type = typ, policy = policy}
+
+    -- optional attributes
+
+    local mode = string.match(get_contents(zonePath .. "/mode"), "^%s*(.-)%s*$")
+    if mode then
+      labels.mode = mode
+    end
+
+    local passive = string.match(get_contents(zonePath .. "/passive"), "(%d+)")
+    if passive then
+      labels.passive = passive
+    end
+
+    temp_metric(labels, temp / 1000)
+
+    i = i + 1
+  end
+end
+
+return { scrape = scrape }