Browse Source

Send the cloud protocol used to posthog (#11842)

* send analytics for cloud protocol used

* add aclk-available-protocol to api/v1/info

* fix build with --disable-cloud

* remove aclk_legacy and aclk_ng define checks
Emmanuel Vasilakis 3 years ago
parent
commit
d229783de4
4 changed files with 51 additions and 31 deletions
  1. 25 10
      daemon/analytics.c
  2. 2 1
      daemon/analytics.h
  3. 11 9
      daemon/anonymous-statistics.sh.in
  4. 13 11
      web/api/web_api_v1.c

+ 25 - 10
daemon/analytics.c

@@ -6,7 +6,7 @@ struct analytics_data analytics_data;
 extern void analytics_exporting_connectors (BUFFER *b);
 extern void analytics_exporting_connectors_ssl (BUFFER *b);
 extern void analytics_build_info (BUFFER *b);
-extern int aclk_connected;
+extern int aclk_connected, aclk_use_new_cloud_arch;
 
 struct collector {
     char *plugin;
@@ -52,6 +52,7 @@ void analytics_log_data(void)
     debug(D_ANALYTICS, "NETDATA_CONFIG_HOSTS_AVAILABLE     : [%s]", analytics_data.netdata_config_hosts_available);
     debug(D_ANALYTICS, "NETDATA_HOST_CLOUD_AVAILABLE       : [%s]", analytics_data.netdata_host_cloud_available);
     debug(D_ANALYTICS, "NETDATA_HOST_ACLK_AVAILABLE        : [%s]", analytics_data.netdata_host_aclk_available);
+    debug(D_ANALYTICS, "NETDATA_HOST_ACLK_PROTOCOL         : [%s]", analytics_data.netdata_host_aclk_protocol);
     debug(D_ANALYTICS, "NETDATA_HOST_ACLK_IMPLEMENTATION   : [%s]", analytics_data.netdata_host_aclk_implementation);
     debug(D_ANALYTICS, "NETDATA_HOST_AGENT_CLAIMED         : [%s]", analytics_data.netdata_host_agent_claimed);
     debug(D_ANALYTICS, "NETDATA_HOST_CLOUD_ENABLED         : [%s]", analytics_data.netdata_host_cloud_enabled);
@@ -97,6 +98,7 @@ void analytics_free_data(void)
     freez(analytics_data.netdata_config_hosts_available);
     freez(analytics_data.netdata_host_cloud_available);
     freez(analytics_data.netdata_host_aclk_available);
+    freez(analytics_data.netdata_host_aclk_protocol);
     freez(analytics_data.netdata_host_aclk_implementation);
     freez(analytics_data.netdata_host_agent_claimed);
     freez(analytics_data.netdata_host_cloud_enabled);
@@ -488,7 +490,7 @@ void analytics_alarms(void)
 }
 
 /*
- * Misc attributes to get (run from meta)
+ * Misc attributes to get (run from start)
  */
 void analytics_misc(void)
 {
@@ -500,13 +502,6 @@ void analytics_misc(void)
     analytics_set_data_str(&analytics_data.netdata_host_aclk_implementation, "");
 #endif
 
-#ifdef ENABLE_ACLK
-    if (aclk_connected)
-        analytics_set_data(&analytics_data.netdata_host_aclk_available, "true");
-    else
-#endif
-        analytics_set_data(&analytics_data.netdata_host_aclk_available, "false");
-
     analytics_set_data(&analytics_data.netdata_config_exporting_enabled, appconfig_get_boolean(&exporting_config, CONFIG_SECTION_EXPORTING, "enabled", CONFIG_BOOLEAN_NO) ? "true" : "false");
 
     analytics_set_data(&analytics_data.netdata_config_is_private_registry, "false");
@@ -523,6 +518,23 @@ void analytics_misc(void)
         analytics_set_data(&analytics_data.netdata_config_is_private_registry, "true");
 }
 
+void analytics_aclk(void)
+{
+#ifdef ENABLE_ACLK
+    if (aclk_connected) {
+        analytics_set_data(&analytics_data.netdata_host_aclk_available, "true");
+#ifdef ENABLE_NEW_CLOUD_PROTOCOL
+        if (aclk_use_new_cloud_arch)
+            analytics_set_data_str(&analytics_data.netdata_host_aclk_protocol, "New");
+        else
+#endif
+            analytics_set_data_str(&analytics_data.netdata_host_aclk_protocol, "Legacy");
+    }
+    else
+#endif
+        analytics_set_data(&analytics_data.netdata_host_aclk_available, "false");
+}
+
 /*
  * Get the meta data, called from the thread once after the original delay
  * These are values that won't change during agent runtime, and therefore
@@ -548,6 +560,7 @@ void analytics_gather_mutable_meta_data(void)
     analytics_alarms();
     analytics_charts();
     analytics_metrics();
+    analytics_aclk();
 
     rrdhost_unlock(localhost);
 
@@ -889,6 +902,7 @@ void set_global_environment()
     analytics_set_data(&analytics_data.netdata_host_cloud_available, "null");
     analytics_set_data(&analytics_data.netdata_host_aclk_implementation, "null");
     analytics_set_data(&analytics_data.netdata_host_aclk_available, "null");
+    analytics_set_data(&analytics_data.netdata_host_aclk_protocol, "null");
     analytics_set_data(&analytics_data.netdata_host_agent_claimed, "null");
     analytics_set_data(&analytics_data.netdata_host_cloud_enabled, "null");
     analytics_set_data(&analytics_data.netdata_config_https_available, "null");
@@ -976,7 +990,7 @@ void send_statistics(const char *action, const char *action_result, const char *
 
     sprintf(
         command_to_run,
-        "%s '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' ",
+        "%s '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' '%s' ",
         as_script,
         action,
         action_result,
@@ -1010,6 +1024,7 @@ void send_statistics(const char *action, const char *action_result, const char *
         analytics_data.netdata_config_hosts_available,
         analytics_data.netdata_host_cloud_available,
         analytics_data.netdata_host_aclk_available,
+        analytics_data.netdata_host_aclk_protocol,
         analytics_data.netdata_host_aclk_implementation,
         analytics_data.netdata_host_agent_claimed,
         analytics_data.netdata_host_cloud_enabled,

+ 2 - 1
daemon/analytics.h

@@ -29,7 +29,7 @@
     },
 
 /* Needed to calculate the space needed for parameters */
-#define ANALYTICS_NO_OF_ITEMS 38
+#define ANALYTICS_NO_OF_ITEMS 39
 
 struct analytics_data {
     char *netdata_config_stream_enabled;
@@ -61,6 +61,7 @@ struct analytics_data {
     char *netdata_config_hosts_available;
     char *netdata_host_cloud_available;
     char *netdata_host_aclk_available;
+    char *netdata_host_aclk_protocol;
     char *netdata_host_aclk_implementation;
     char *netdata_host_agent_claimed;
     char *netdata_host_cloud_enabled;

+ 11 - 9
daemon/anonymous-statistics.sh.in

@@ -54,15 +54,16 @@ NETDATA_CONFIG_IS_PARENT="${29}"
 NETDATA_CONFIG_HOSTS_AVAILABLE="${30}"
 NETDATA_HOST_CLOUD_AVAILABLE="${31}"
 NETDATA_HOST_ACLK_AVAILABLE="${32}"
-NETDATA_HOST_ACLK_IMPLEMENTATION="${33}"
-NETDATA_HOST_AGENT_CLAIMED="${34}"
-NETDATA_HOST_CLOUD_ENABLED="${35}"
-NETDATA_CONFIG_HTTPS_AVAILABLE="${36}"
-NETDATA_INSTALL_TYPE="${37}"
-NETDATA_IS_PRIVATE_REGISTRY="${38}"
-NETDATA_USE_PRIVATE_REGISTRY="${39}"
-NETDATA_CONFIG_OOM_SCORE="${40}"
-NETDATA_PREBUILT_DISTRO="${41}"
+NETDATA_HOST_ACLK_PROTOCOL="${33}"
+NETDATA_HOST_ACLK_IMPLEMENTATION="${34}"
+NETDATA_HOST_AGENT_CLAIMED="${35}"
+NETDATA_HOST_CLOUD_ENABLED="${36}"
+NETDATA_CONFIG_HTTPS_AVAILABLE="${37}"
+NETDATA_INSTALL_TYPE="${38}"
+NETDATA_IS_PRIVATE_REGISTRY="${39}"
+NETDATA_USE_PRIVATE_REGISTRY="${40}"
+NETDATA_CONFIG_OOM_SCORE="${41}"
+NETDATA_PREBUILT_DISTRO="${42}"
 
 
 # define body of request to be sent
@@ -147,6 +148,7 @@ REQ_BODY="$(cat << EOF
         "host_cloud_enabled": ${NETDATA_HOST_CLOUD_ENABLED},
         "host_agent_claimed": ${NETDATA_HOST_AGENT_CLAIMED},
         "host_aclk_available": ${NETDATA_HOST_ACLK_AVAILABLE},
+        "host_aclk_protocol": ${NETDATA_HOST_ACLK_PROTOCOL},
         "host_aclk_implementation": ${NETDATA_HOST_ACLK_IMPLEMENTATION},
         "mirrored_host_count": ${NETDATA_MIRRORED_HOST_COUNT},
         "mirrored_hosts_reachable": ${NETDATA_MIRRORED_HOSTS_REACHABLE},

+ 13 - 11
web/api/web_api_v1.c

@@ -3,6 +3,7 @@
 #include "web_api_v1.h"
 
 char *api_secret;
+extern int aclk_use_new_cloud_arch;
 
 static struct {
     const char *name;
@@ -984,24 +985,18 @@ inline int web_client_api_request_v1_info_fill_buffer(RRDHOST *host, BUFFER *wb)
 
 #ifdef ENABLE_ACLK
     buffer_strcat(wb, "\t\"cloud-available\": true,\n");
-#ifdef ACLK_NG
     buffer_strcat(wb, "\t\"aclk-ng-available\": true,\n");
-#else
-    buffer_strcat(wb, "\t\"aclk-ng-available\": false,\n");
-#endif
-#if defined(ACLK_NG) && defined(ENABLE_NEW_CLOUD_PROTOCOL)
+#ifdef ENABLE_NEW_CLOUD_PROTOCOL
     buffer_strcat(wb, "\t\"aclk-ng-new-cloud-protocol\": true,\n");
 #else
     buffer_strcat(wb, "\t\"aclk-ng-new-cloud-protocol\": false,\n");
 #endif
-#ifdef ACLK_LEGACY
-    buffer_strcat(wb, "\t\"aclk-legacy-available\": true,\n");
-#else
     buffer_strcat(wb, "\t\"aclk-legacy-available\": false,\n");
-#endif
     buffer_strcat(wb, "\t\"aclk-implementation\": \"Next Generation\",\n");
 #else
     buffer_strcat(wb, "\t\"cloud-available\": false,\n");
+    buffer_strcat(wb, "\t\"aclk-ng-available\": false,\n");
+    buffer_strcat(wb, "\t\"aclk-legacy-available\": false,\n");
 #endif
     char *agent_id = is_agent_claimed();
     if (agent_id == NULL)
@@ -1011,11 +1006,18 @@ inline int web_client_api_request_v1_info_fill_buffer(RRDHOST *host, BUFFER *wb)
         freez(agent_id);
     }
 #ifdef ENABLE_ACLK
-    if (aclk_connected)
+    if (aclk_connected) {
         buffer_strcat(wb, "\t\"aclk-available\": true,\n");
+#ifdef ENABLE_NEW_CLOUD_PROTOCOL
+        if (aclk_use_new_cloud_arch)
+            buffer_strcat(wb, "\t\"aclk-available-protocol\": \"New\",\n");
+        else
+#endif
+            buffer_strcat(wb, "\t\"aclk-available-protocol\": \"Legacy\",\n");
+    }
     else
 #endif
-        buffer_strcat(wb, "\t\"aclk-available\": false,\n");     // Intentionally valid with/without #ifdef above
+        buffer_strcat(wb, "\t\"aclk-available\": false,\n\t\"aclk-available-protocol\": null,\n");     // Intentionally valid with/without #ifdef above
 
     buffer_strcat(wb, "\t\"memory-mode\": ");
     analytics_get_data(analytics_data.netdata_config_memory_mode, wb);