From: Michael Tremer Date: Thu, 23 Oct 2025 18:12:03 +0000 (+0000) Subject: sources: sensors: Collect current metrics X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1ecf8074f135dd816b2a58bbff96ab3f78da6d6e;p=telemetry.git sources: sensors: Collect current metrics Signed-off-by: Michael Tremer --- diff --git a/src/daemon/sources.c b/src/daemon/sources.c index 76199b2..994d1e5 100644 --- a/src/daemon/sources.c +++ b/src/daemon/sources.c @@ -94,6 +94,7 @@ static const td_source_impl* source_impls[] = { &sensors_temp_source, &sensors_power_source, &sensors_energy_source, + &sensors_current_source, #endif /* HAVE_SENSORS */ #if ENABLE_TESTS diff --git a/src/daemon/sources/sensors.c b/src/daemon/sources/sensors.c index 956c652..0b093b6 100644 --- a/src/daemon/sources/sensors.c +++ b/src/daemon/sources/sensors.c @@ -472,3 +472,55 @@ const td_source_impl sensors_energy_source = { // Methods .heartbeat = sensors_energy_heartbeat, }; + +/* + Current +*/ +static int sensors_current_heartbeat(td_ctx* ctx, td_source* source) { + sensors_value values[] = { + { "input", SENSORS_SUBFEATURE_CURR_INPUT }, + { "min", SENSORS_SUBFEATURE_CURR_MIN }, + { "max", SENSORS_SUBFEATURE_CURR_MAX }, + { "lcrit", SENSORS_SUBFEATURE_CURR_LCRIT }, + { "crit", SENSORS_SUBFEATURE_CURR_CRIT }, + { "average", SENSORS_SUBFEATURE_CURR_AVERAGE }, + { "highest", SENSORS_SUBFEATURE_CURR_HIGHEST }, + { "lowest", SENSORS_SUBFEATURE_CURR_LOWEST }, + { "alarm", SENSORS_SUBFEATURE_CURR_ALARM }, + { "alarm_max", SENSORS_SUBFEATURE_CURR_MAX_ALARM }, + { "alarm_min", SENSORS_SUBFEATURE_CURR_MIN_ALARM }, + { "alarm_crit", SENSORS_SUBFEATURE_CURR_CRIT_ALARM }, + { "alarm_lcrit", SENSORS_SUBFEATURE_CURR_LCRIT_ALARM }, + { "beep", SENSORS_SUBFEATURE_CURR_BEEP }, + { NULL }, + }; + + return read_sensors(ctx, source, SENSORS_FEATURE_CURR, values); +} + +const td_source_impl sensors_current_source = { + .name = "sensors-current", + + // RRD Data Sources + .rrd_dss = { + { "input", "GAUGE", 0, -1, }, + { "min", "GAUGE", 0, -1, }, + { "max", "GAUGE", 0, -1, }, + { "lcrit", "GAUGE", 0, -1, }, + { "crit", "GAUGE", 0, -1, }, + { "average", "GAUGE", 0, -1, }, + { "highest", "GAUGE", 0, -1, }, + { "lowest", "GAUGE", 0, -1, }, + { "alarm", "GAUGE", 0, -1, }, + { "alarm_max", "GAUGE", 0, -1, }, + { "alarm_min", "GAUGE", 0, -1, }, + { "alarm_cap", "GAUGE", 0, -1, }, + { "alarm_crit", "GAUGE", 0, -1, }, + { "alarm_lcrit", "GAUGE", 0, -1, }, + { "beep", "GAUGE", 0, -1, }, + { NULL }, + }, + + // Methods + .heartbeat = sensors_current_heartbeat, +}; diff --git a/src/daemon/sources/sensors.h b/src/daemon/sources/sensors.h index 7fea277..1223c8d 100644 --- a/src/daemon/sources/sensors.h +++ b/src/daemon/sources/sensors.h @@ -28,5 +28,6 @@ extern const td_source_impl sensors_fan_source; extern const td_source_impl sensors_temp_source; extern const td_source_impl sensors_power_source; extern const td_source_impl sensors_energy_source; +extern const td_source_impl sensors_current_source; #endif /* TELEMETRY_SOURCE_SENSORS_H */