From e5f27e51f9f57f50944821fea31a8673154dfb7f Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Wed, 13 May 2026 15:00:08 +0200 Subject: [PATCH] report-basic: export PhysicalMemorybytes + CPUsOnline metrics --- src/report/report-basic.c | 45 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/src/report/report-basic.c b/src/report/report-basic.c index 772a5d9f74..43c9cb9774 100644 --- a/src/report/report-basic.c +++ b/src/report/report-basic.c @@ -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",