prometheus-node-exporter-lua: extend bmx7 plugin 5916/head
authorPaul Spooren <spooren@informatik.uni-leipzig.de>
Sat, 14 Apr 2018 06:58:02 +0000 (15:58 +0900)
committerPaul Spooren <spooren@informatik.uni-leipzig.de>
Sat, 14 Apr 2018 06:58:52 +0000 (15:58 +0900)
Now monitors as well the tunIn parameters, aka the annoucend routes to
the network. This is handy to check if a node annouces itself as a
gateway.

Also list all activated plugins.

Example output:

    # TYPE bmx7_tunIn gauge
    bmx7_tunIn{name="myIP4",network="10.198.52.86/32"} 1
    bmx7_tunIn{name="myIP6",network="2012:0:0:56::/128"} 1
    bmx7_tunIn{name="inet4",network="0.0.0.0/0"} 1
    # TYPE bmx7_plugin gauge
    bmx7_plugin{name="bmx7_config.so"} 1
    bmx7_plugin{name="bmx7_json.so"} 1
    bmx7_plugin{name="bmx7_sms.so"} 1
    bmx7_plugin{name="bmx7_tun.so"} 1

Signed-off-by: Paul Spooren <spooren@informatik.uni-leipzig.de>
utils/prometheus-node-exporter-lua/Makefile
utils/prometheus-node-exporter-lua/files/usr/lib/lua/prometheus-collectors/bmx7.lua

index 2d8c6814be7eed71077be83b2df3c6e0a5621111..83b5e47fe6ad1cba231e0d78b7d9fa1d5c641ae3 100644 (file)
@@ -5,7 +5,7 @@ include $(TOPDIR)/rules.mk
 
 PKG_NAME:=prometheus-node-exporter-lua
 PKG_VERSION:=2017.12.08
-PKG_RELEASE:=1
+PKG_RELEASE:=2
 
 PKG_MAINTAINER:=Christian Simon <simon@swine.de>
 PKG_LICENSE:=Apache-2.0
index a6d6e9f3fc83b7caeb81161fd7ddf23cdadac009..d384d71a77b85fc39a5be0bc0418db852b787723 100644 (file)
@@ -39,7 +39,28 @@ local function scrape()
     }
     metric_bmx7_rxRate(labels, interpret_suffix(link.rxRate))
     metric_bmx7_txRate(labels, interpret_suffix(link.txRate))
+  end
+
+  local metric_bmx7_tunIn = metric("bmx7_tunIn", "gauge")
+  local parameters = json.decode(get_contents("/var/run/bmx7/json/parameters")).OPTIONS
+  for _, option in pairs(parameters) do
+    if option.name == "tunIn" then
+      for _, instance in pairs(option.INSTANCES) do
+        for _, child_instance in pairs(instance.CHILD_INSTANCES) do
+          local labels = {
+            name = instance.value,
+            network = child_instance.value
+          }
+          metric_bmx7_tunIn(labels, 1)
+        end
+      end
+    elseif option.name == "plugin" then
+      local metric_bmx7_plugin = metric("bmx7_plugin", "gauge")
+      for _, instance in pairs(option.INSTANCES) do
+        metric_bmx7_plugin({ name = instance.value }, 1)
+      end
     end
+  end
 end
 
 return { scrape = scrape }