add the number of cpu cores to the status file (#20101)
Costa Tsaousis committed
Apr 9, 2025 at 17:37 UTC
7ce3f106b6a5e49707b2c161c9d197d3f9b140d6
2 files changed
+11
src/daemon/status-file.c
+10
@@ -212,6 +212,8 @@ static void daemon_status_file_to_json(BUFFER *wb, DAEMON_STATUS_FILE *ds) {
212
buffer_json_member_add_string_or_empty(wb, "cloud_instance", ds->cloud_instance_type);
213
buffer_json_member_add_string_or_empty(wb, "cloud_region", ds->cloud_instance_region);
214
}
215
+
216
+ buffer_json_member_add_uint64(wb, "system_cpus", ds->system_cpus);
217
218
buffer_json_member_add_object(wb, "boot");
219
{
@@ -477,6 +479,7 @@ static bool daemon_status_file_from_json(json_object *jobj, void *data, BUFFER *
479
JSONC_PARSE_TXT2CHAR_OR_ERROR_AND_RETURN(jobj, path, "virtualization", ds->virtualization, error, required_v1);
480
JSONC_PARSE_TXT2CHAR_OR_ERROR_AND_RETURN(jobj, path, "container", ds->container, error, required_v1);
481
JSONC_PARSE_UINT64_OR_ERROR_AND_RETURN(jobj, path, "uptime", ds->boottime, error, required_v1);
482
+ JSONC_PARSE_UINT64_OR_ERROR_AND_RETURN(jobj, path, "system_cpus", ds->system_cpus, error, required_v27);
483
484
JSONC_PARSE_SUBOBJECT(jobj, path, "boot", error, required_v1, {
485
JSONC_PARSE_TXT2UUID_OR_ERROR_AND_RETURN(jobj, path, "id", ds->boot_id.uuid, error, required_v1);
@@ -792,6 +795,7 @@ static void daemon_status_file_refresh(DAEMON_STATUS status) {
795
796
session_status.memory = os_system_memory(true);
797
session_status.var_cache = os_disk_space(netdata_configured_cache_dir);
798
+ session_status.system_cpus = os_get_system_cpus();
799
800
// Collect metrics metadata statistics
801
session_status.metrics_metadata = rrdstats_metadata_collect();
@@ -1051,8 +1055,14 @@ void daemon_status_file_init(void) {
1055
mallocz_register_out_of_memory_cb(daemon_status_file_out_of_memory);
1056
1057
status_file_io_load(STATUS_FILENAME, status_file_load_and_parse, &last_session_status);
1058
+
1059
+ // fill missing information on older versions of the status file
1060
+
1061
if(last_session_status.v <= 26)
1062
fill_dmi_info(&last_session_status);
1063
+
1064
+ if(last_session_status.v <= 27)
1065
+ last_session_status.system_cpus = os_get_system_cpus();
1066
1067
daemon_status_file_migrate_once();
1068
}
src/daemon/status-file.h
+1
@@ -99,6 +99,7 @@ typedef struct daemon_status_file {
99
char cloud_instance_type[32];
100
char cloud_instance_region[32];
101
bool read_system_info;
102
+ size_t system_cpus;
103
104
DMI_INFO hw;
105