From fd74ac1a10ef876d92d4a3b266d8ed5d5167dbcb Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Fri, 31 Dec 2021 01:53:43 +0100 Subject: prometheus/node: add textfile collector sensors (WIP cont'd) --- .../textfile-collector-scripts/sensors.j2 | 45 +++++++++++++++++++--- .../textfile-collector-scripts/sensors.service.j2 | 1 - 2 files changed, 40 insertions(+), 6 deletions(-) (limited to 'roles/monitoring/prometheus/exporter/node/templates') 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 -- cgit v1.2.3