]> git.ipfire.org Git - collecty.git/commitdiff
sources: sensors: Collect current metrics
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 23 Oct 2025 18:12:03 +0000 (18:12 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 23 Oct 2025 18:12:03 +0000 (18:12 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/daemon/sources.c
src/daemon/sources/sensors.c
src/daemon/sources/sensors.h

index 76199b2426ddc5af41a874990f8ffb956d73262f..994d1e5226638afd697c58ef52b021530d1f00b0 100644 (file)
@@ -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
index 956c65207ab532d51faef54ccddd5535ec63a0bd..0b093b62dfa6341b32e4a01231954e5f3be34508 100644 (file)
@@ -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,
+};
index 7fea277c34b881d236478aae648fc2d44ab5a893..1223c8d1a5a4d416a79f8cc2381f3ce5f5921ee0 100644 (file)
@@ -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 */