From e2b3fec6bfca8e9843aa5ec297803869061d2a5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ge=CC=81rondal=20Thibault?= Date: Fri, 3 Jul 2020 23:21:12 +0200 Subject: [PATCH] prometheus-node-exporter-lua: uci_dhcp_host module MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Extract data from configuration file /etc/config/dhcp and create labels {name, ip, mac, dns} via uci. Those labels are useful in order to craft complex prometheus queries as replacing the MAC address to a custom name. E.g.: wifi_station_signal_dbm * on (mac) group_left(name) uci_dhcp_host or on (mac) label_replace(wifi_station_signal_dbm, "name", "$1", "mac", "(.+)") Signed-off-by: GeĢrondal Thibault --- utils/prometheus-node-exporter-lua/Makefile | 14 +++++++++++++- .../lua/prometheus-collectors/uci_dhcp_host.lua | 15 +++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/uci_dhcp_host.lua diff --git a/utils/prometheus-node-exporter-lua/Makefile b/utils/prometheus-node-exporter-lua/Makefile index 1a6b9a7b7..b6622d9ca 100644 --- a/utils/prometheus-node-exporter-lua/Makefile +++ b/utils/prometheus-node-exporter-lua/Makefile @@ -4,7 +4,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=prometheus-node-exporter-lua -PKG_VERSION:=2020.06.26 +PKG_VERSION:=2020.07.04 PKG_RELEASE:=1 PKG_MAINTAINER:=Etienne CHAMPETIER @@ -40,6 +40,12 @@ define Package/prometheus-node-exporter-lua-nat_traffic DEPENDS:=prometheus-node-exporter-lua endef +define Package/prometheus-node-exporter-lua-uci_dhcp_host + $(call Package/prometheus-node-exporter-lua/Default) + TITLE+= (uci_dhcp_host collector) + DEPENDS:=prometheus-node-exporter-lua +libuci-lua +endef + define Package/prometheus-node-exporter-lua-netstat $(call Package/prometheus-node-exporter-lua/Default) TITLE+= (netstat collector) @@ -119,6 +125,11 @@ define Package/prometheus-node-exporter-lua-nat_traffic/install $(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/nat_traffic.lua $(1)/usr/lib/lua/prometheus-collectors/ endef +define Package/prometheus-node-exporter-lua-uci_dhcp_host/install + $(INSTALL_DIR) $(1)/usr/lib/lua/prometheus-collectors + $(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/uci_dhcp_host.lua $(1)/usr/lib/lua/prometheus-collectors/ +endef + define Package/prometheus-node-exporter-lua-netstat/install $(INSTALL_DIR) $(1)/usr/lib/lua/prometheus-collectors $(INSTALL_BIN) ./files/usr/lib/lua/prometheus-collectors/netstat.lua $(1)/usr/lib/lua/prometheus-collectors/ @@ -167,6 +178,7 @@ endef $(eval $(call BuildPackage,prometheus-node-exporter-lua)) $(eval $(call BuildPackage,prometheus-node-exporter-lua-nat_traffic)) $(eval $(call BuildPackage,prometheus-node-exporter-lua-netstat)) +$(eval $(call BuildPackage,prometheus-node-exporter-lua-uci_dhcp_host)) $(eval $(call BuildPackage,prometheus-node-exporter-lua-wifi)) $(eval $(call BuildPackage,prometheus-node-exporter-lua-wifi_stations)) $(eval $(call BuildPackage,prometheus-node-exporter-lua-hostapd_stations)) diff --git a/utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/uci_dhcp_host.lua b/utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/uci_dhcp_host.lua new file mode 100644 index 000000000..950962599 --- /dev/null +++ b/utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/uci_dhcp_host.lua @@ -0,0 +1,15 @@ +local uci=require("uci") + +local function scrape() + local curs=uci.cursor() + local metric_uci_host = metric("uci_dhcp_host", "gauge") + + curs:foreach("dhcp", "host", function(s) + if s[".type"] == "host" then + labels = {name=s["name"], mac=string.upper(s["mac"]), dns=s["dns"], ip=s["ip"]} + metric_uci_host(labels, 1) + end + end) +end + +return { scrape = scrape }