]> git.ipfire.org Git - oddments/collecty.git/commitdiff
sources: sensors: Collect power metrics
authorMichael Tremer <michael.tremer@ipfire.org>
Thu, 23 Oct 2025 17:47:45 +0000 (17:47 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Thu, 23 Oct 2025 17:47:45 +0000 (17:47 +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 a3352b4c7dcc133b6e9da0c8954c18fcad94ddbf..bca20afef377289d00244ef7e8bba8af50c95ea2 100644 (file)
@@ -92,6 +92,7 @@ static const td_source_impl* source_impls[] = {
        &sensors_input_source,
        &sensors_fan_source,
        &sensors_temp_source,
+       &sensors_power_source,
 #endif /* HAVE_SENSORS */
 
 #if ENABLE_TESTS
index b5abe1dd9474821da72960542e3d74e9a4d5302a..7e09342e63dc05cab16ebb69c892e080789e2a97 100644 (file)
@@ -386,3 +386,64 @@ const td_source_impl sensors_temp_source = {
        // Methods
        .heartbeat = sensors_temp_heartbeat,
 };
+
+/*
+       Power
+*/
+static int sensors_power_heartbeat(td_ctx* ctx, td_source* source) {
+       sensors_value values[] = {
+               { "average",          SENSORS_SUBFEATURE_POWER_AVERAGE },
+               { "average_highest",  SENSORS_SUBFEATURE_POWER_AVERAGE_HIGHEST },
+               { "average_lowest",   SENSORS_SUBFEATURE_POWER_AVERAGE_LOWEST },
+               { "average_interval", SENSORS_SUBFEATURE_POWER_AVERAGE_INTERVAL },
+               { "input",            SENSORS_SUBFEATURE_POWER_INPUT },
+               { "input_highest",    SENSORS_SUBFEATURE_POWER_INPUT_HIGHEST, },
+               { "input_lowest",     SENSORS_SUBFEATURE_POWER_INPUT_LOWEST },
+               { "cap",              SENSORS_SUBFEATURE_POWER_CAP },
+               { "cap_hyst",         SENSORS_SUBFEATURE_POWER_CAP_HYST },
+               { "max",              SENSORS_SUBFEATURE_POWER_MAX },
+               { "min",              SENSORS_SUBFEATURE_POWER_MIN },
+               { "crit",             SENSORS_SUBFEATURE_POWER_CRIT },
+               { "lcrit",            SENSORS_SUBFEATURE_POWER_LCRIT },
+               { "alarm",            SENSORS_SUBFEATURE_POWER_ALARM },
+               { "alarm_max",        SENSORS_SUBFEATURE_POWER_MAX_ALARM },
+               { "alarm_min",        SENSORS_SUBFEATURE_POWER_MIN_ALARM },
+               { "alarm_cap",        SENSORS_SUBFEATURE_POWER_CAP_ALARM },
+               { "alarm_crit",       SENSORS_SUBFEATURE_POWER_CRIT_ALARM },
+               { "alarm_lcrit",      SENSORS_SUBFEATURE_POWER_LCRIT_ALARM },
+               { NULL },
+       };
+
+       return read_sensors(ctx, source, SENSORS_FEATURE_POWER, values);
+}
+
+const td_source_impl sensors_power_source = {
+       .name = "sensors-power",
+
+       // RRD Data Sources
+       .rrd_dss = {
+               { "average",          "GAUGE",  0, -1, },
+               { "average_highest",  "GAUGE",  0, -1, },
+               { "average_lowest",   "GAUGE",  0, -1, },
+               { "average_interval", "GAUGE",  0, -1, },
+               { "input",            "GAUGE",  0, -1, },
+               { "input_highest",    "GAUGE",  0, -1, },
+               { "input_lowest",     "GAUGE",  0, -1, },
+               { "cap",              "GAUGE",  0, -1, },
+               { "cap_hyst",         "GAUGE",  0, -1, },
+               { "max",              "GAUGE",  0, -1, },
+               { "min",              "GAUGE",  0, -1, },
+               { "crit",             "GAUGE",  0, -1, },
+               { "lcrit",            "GAUGE",  0, -1, },
+               { "alarm",            "GAUGE",  0, -1, },
+               { "alarm_max",        "GAUGE",  0, -1, },
+               { "alarm_min",        "GAUGE",  0, -1, },
+               { "alarm_cap",        "GAUGE",  0, -1, },
+               { "alarm_emergency",  "GAUGE",  0, -1, },
+               { "alarm_lcrit",      "GAUGE",  0, -1, },
+               { NULL },
+       },
+
+       // Methods
+       .heartbeat = sensors_power_heartbeat,
+};
index 45c309f7484044c2b8147eaaf6df84e58d6f648b..4be195d88f33da0af1ff8ff58c17c89c33e6dc53 100644 (file)
@@ -26,5 +26,6 @@
 extern const td_source_impl sensors_input_source;
 extern const td_source_impl sensors_fan_source;
 extern const td_source_impl sensors_temp_source;
+extern const td_source_impl sensors_power_source;
 
 #endif /* TELEMETRY_SOURCE_SENSORS_H */