]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
report-basic: export PhysicalMemorybytes + CPUsOnline metrics
authorLennart Poettering <lennart@amutable.com>
Wed, 13 May 2026 13:00:08 +0000 (15:00 +0200)
committerLennart Poettering <lennart@amutable.com>
Thu, 14 May 2026 06:12:28 +0000 (08:12 +0200)
src/report/report-basic.c

index 772a5d9f74222dbb976cf1ef1cba32879197e9c1..43c9cb97741490227a7bafcfc789c9a1d7928a24 100644 (file)
@@ -8,7 +8,9 @@
 
 #include "alloc-util.h"
 #include "architecture.h"
+#include "cpu-set-util.h"
 #include "hostname-setup.h"
+#include "limits-util.h"
 #include "log.h"
 #include "metrics.h"
 #include "os-util.h"
@@ -100,6 +102,37 @@ static int machine_id_generate(const MetricFamily *mf, sd_varlink *link, void *u
                         /* fields= */ NULL);
 }
 
+static int physical_memory_generate(const MetricFamily *mf, sd_varlink *link, void *userdata) {
+        assert(mf && mf->name);
+        assert(link);
+
+        return metric_build_send_unsigned(
+                        mf,
+                        link,
+                        /* object= */ NULL,
+                        physical_memory(),
+                        /* fields= */ NULL);
+}
+
+static int cpus_online_generate(const MetricFamily *mf, sd_varlink *link, void *userdata) {
+        int r;
+
+        assert(mf && mf->name);
+        assert(link);
+
+        unsigned n_cpus;
+        r = cpus_online(&n_cpus);
+        if (r < 0)
+                return r;
+
+        return metric_build_send_unsigned(
+                        mf,
+                        link,
+                        /* object= */ NULL,
+                        n_cpus,
+                        /* fields= */ NULL);
+}
+
 enum {
         FIELD_PRETTY_NAME,
         FIELD_NAME,
@@ -203,6 +236,12 @@ static const MetricFamily metric_family_table[] = {
                 METRIC_FAMILY_TYPE_STRING,
                 .generate = boot_id_generate,
         },
+        {
+                METRIC_IO_SYSTEMD_BASIC_PREFIX "CPUsOnline",
+                "Number of CPUs currently online",
+                METRIC_FAMILY_TYPE_GAUGE,
+                .generate = cpus_online_generate,
+        },
         {
                 METRIC_IO_SYSTEMD_BASIC_PREFIX "Hostname",
                 "System hostname",
@@ -239,6 +278,12 @@ static const MetricFamily metric_family_table[] = {
         OS_RELEASE_STANDARD_FIELD("SYSEXT_LEVEL"),
         OS_RELEASE_STANDARD_FIELD("CONFEXT_LEVEL"),
         /* Keep those ↑ in sync with os_release_generate(). */
+        {
+                METRIC_IO_SYSTEMD_BASIC_PREFIX "PhysicalMemoryBytes",
+                "Installed physical memory in bytes",
+                METRIC_FAMILY_TYPE_GAUGE,
+                .generate = physical_memory_generate,
+        },
         {
                 METRIC_IO_SYSTEMD_BASIC_PREFIX "Virtualization",
                 "Virtualization type",