summaryrefslogtreecommitdiff
path: root/roles
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2021-12-31 01:53:43 +0100
committerChristian Pointner <equinox@spreadspace.org>2021-12-31 01:53:43 +0100
commitfd74ac1a10ef876d92d4a3b266d8ed5d5167dbcb (patch)
treed331e9c34516d436ddfde47d635eef0e3d8a4453 /roles
parentprometheus/node: add textfile collector sensors (WIP) (diff)
prometheus/node: add textfile collector sensors (WIP cont'd)
Diffstat (limited to 'roles')
-rw-r--r--roles/monitoring/prometheus/exporter/node/templates/textfile-collector-scripts/sensors.j245
-rw-r--r--roles/monitoring/prometheus/exporter/node/templates/textfile-collector-scripts/sensors.service.j21
2 files changed, 40 insertions, 6 deletions
diff --git a/roles/monitoring/prometheus/exporter/node/templates/textfile-collector-scripts/sensors.j2 b/roles/monitoring/prometheus/exporter/node/templates/textfile-collector-scripts/sensors.j2
index 822aa3b5..1e769389 100644
--- a/roles/monitoring/prometheus/exporter/node/templates/textfile-collector-scripts/sensors.j2
+++ b/roles/monitoring/prometheus/exporter/node/templates/textfile-collector-scripts/sensors.j2
@@ -1,5 +1,8 @@
#!/usr/bin/lua5.1
+local sys_stat = require "posix.sys.stat"
+local state_filename = '/run/prometheus-node-exporter_sensors/state'
+
local sensors = require "sensors"
local units = {
temperature = "celsius",
@@ -37,14 +40,46 @@ local function scrape(config, num_sensors)
end
end
-function main()
- local config, _ = sensors.read_config('/etc/prometheus/exporter/node/sensors.json')
-
- -- TODO: only do this if sensor state file does not exist - else read num_sensors from state file
+local function _setup(config)
local num_sensors, err = sensors.setup(config)
if num_sensors == nil then error(err) end
- -- TODO: write num_sensors to state file
+ io.stderr:write(string.format("setup: %d sensors found.\n", num_sensors))
+
+ local f, err = io.open(state_filename, "w")
+ if not f then error(err) end
+ local ret, err = f:write(string.format("%d\n", num_sensors))
+ f:close()
+ if not ret then error(err) end
+
+ return num_sensors
+end
+
+local function setup(config)
+ local s, _ = sys_stat.stat(state_filename)
+ if s == nil then
+ return _setup(config)
+ end
+
+ local f, err = io.open(state_filename, "r")
+ if not f then error(err) end
+ local data, err = f:read("*l")
+ f:close()
+ if not data then
+ return _setup(config)
+ end
+
+ local num_sensors, err = tonumber(data)
+ if num_sensors == nil then
+ return _setup(config)
+ end
+ return num_sensors
+end
+
+function main()
+ local config, err = sensors.read_config('/etc/prometheus/exporter/node/sensors.json')
+ if config == nil then error(err) end
+ local num_sensors = setup(config)
scrape(config, num_sensors, units)
end
diff --git a/roles/monitoring/prometheus/exporter/node/templates/textfile-collector-scripts/sensors.service.j2 b/roles/monitoring/prometheus/exporter/node/templates/textfile-collector-scripts/sensors.service.j2
index 7a438317..a9f2a8fb 100644
--- a/roles/monitoring/prometheus/exporter/node/templates/textfile-collector-scripts/sensors.service.j2
+++ b/roles/monitoring/prometheus/exporter/node/templates/textfile-collector-scripts/sensors.service.j2
@@ -18,7 +18,6 @@ PrivateTmp=true
ProtectControlGroups=true
ProtectHome=true
ProtectKernelModules=true
-ProtectKernelTunables=true
ProtectSystem=strict
ReadWritePaths=/var/lib/prometheus-node-exporter/textfile-collector
RuntimeDirectory=prometheus-node-exporter_sensors