summaryrefslogtreecommitdiffstats
path: root/daemon
diff options
context:
space:
mode:
authorStelios Fragkakis <52996999+stelfrag@users.noreply.github.com>2023-04-20 14:15:08 +0300
committerGitHub <noreply@github.com>2023-04-20 14:15:08 +0300
commit1d23e1471cff9e0f10de8540e0f60f6d076cb18b (patch)
treed9124754a8311645479cfd864f1ed902e1f5d9a1 /daemon
parentba2a5e7857435cdcd217d5b7d4f78bd51ae6a6d1 (diff)
Initialize machine GUID earlier in the agent startup sequence (#14922)
* Read (cache) machine guid earlier, so that a fatal event during init will have the correct machine guid * Setup analytics global environment explicitly if we fail to initialize before localhost is created
Diffstat (limited to 'daemon')
-rw-r--r--daemon/analytics.c14
-rw-r--r--daemon/analytics.h2
-rw-r--r--daemon/main.c8
3 files changed, 13 insertions, 11 deletions
diff --git a/daemon/analytics.c b/daemon/analytics.c
index 6208e8c8af..b3c802b86c 100644
--- a/daemon/analytics.c
+++ b/daemon/analytics.c
@@ -354,16 +354,16 @@ void analytics_alarms_notifications(void)
buffer_free(b);
}
-void analytics_get_install_type(void)
+static void analytics_get_install_type(struct rrdhost_system_info *system_info)
{
- if (localhost->system_info->install_type == NULL) {
+ if (system_info->install_type == NULL) {
analytics_set_data_str(&analytics_data.netdata_install_type, "unknown");
} else {
- analytics_set_data_str(&analytics_data.netdata_install_type, localhost->system_info->install_type);
+ analytics_set_data_str(&analytics_data.netdata_install_type, system_info->install_type);
}
- if (localhost->system_info->prebuilt_dist != NULL) {
- analytics_set_data_str(&analytics_data.netdata_prebuilt_distro, localhost->system_info->prebuilt_dist);
+ if (system_info->prebuilt_dist != NULL) {
+ analytics_set_data_str(&analytics_data.netdata_prebuilt_distro, system_info->prebuilt_dist);
}
}
@@ -632,7 +632,7 @@ static const char *verify_required_directory(const char *dir)
* This is called after the rrdinit
* These values will be sent on the START event
*/
-void set_late_global_environment()
+void set_late_global_environment(struct rrdhost_system_info *system_info)
{
analytics_set_data(&analytics_data.netdata_config_stream_enabled, default_rrdpush_enabled ? "true" : "false");
analytics_set_data_str(&analytics_data.netdata_config_memory_mode, (char *)rrd_memory_mode_name(default_rrd_memory_mode));
@@ -676,7 +676,7 @@ void set_late_global_environment()
buffer_free(bi);
}
- analytics_get_install_type();
+ analytics_get_install_type(system_info);
}
void get_system_timezone(void)
diff --git a/daemon/analytics.h b/daemon/analytics.h
index 14feca0f58..34418316fc 100644
--- a/daemon/analytics.h
+++ b/daemon/analytics.h
@@ -74,7 +74,7 @@ struct analytics_data {
bool exporting_enabled;
};
-void set_late_global_environment(void);
+void set_late_global_environment(struct rrdhost_system_info *system_info);
void analytics_free_data(void);
void set_global_environment(void);
void send_statistics(const char *action, const char *action_result, const char *action_data);
diff --git a/daemon/main.c b/daemon/main.c
index 478b5d002c..0ef8f5735e 100644
--- a/daemon/main.c
+++ b/daemon/main.c
@@ -2024,13 +2024,16 @@ int main(int argc, char **argv) {
struct rrdhost_system_info *system_info = callocz(1, sizeof(struct rrdhost_system_info));
__atomic_sub_fetch(&netdata_buffers_statistics.rrdhost_allocations_size, sizeof(struct rrdhost_system_info), __ATOMIC_RELAXED);
get_system_info(system_info);
+ (void) registry_get_this_machine_guid();
system_info->hops = 0;
get_install_type(&system_info->install_type, &system_info->prebuilt_arch, &system_info->prebuilt_dist);
delta_startup_time("initialize RRD structures");
- if(rrd_init(netdata_configured_hostname, system_info, false))
+ if(rrd_init(netdata_configured_hostname, system_info, false)) {
+ set_late_global_environment(system_info);
fatal("Cannot initialize localhost instance with name '%s'.", netdata_configured_hostname);
+ }
delta_startup_time("check for incomplete shutdown");
@@ -2072,8 +2075,7 @@ int main(int argc, char **argv) {
netdata_zero_metrics_enabled = config_get_boolean_ondemand(CONFIG_SECTION_DB, "enable zero metrics", CONFIG_BOOLEAN_NO);
- set_late_global_environment();
-
+ set_late_global_environment(system_info);
for (i = 0; static_threads[i].name != NULL ; i++) {
struct netdata_static_thread *st = &static_threads[i];