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 committed
Jan 13, 2022 at 12:22 UTC
d229783de4f8476d540d1109953868db823e3a0a
4 files changed
+51
-31
daemon/analytics.c
+25
-10
@@ -6,7 +6,7 @@ struct analytics_data analytics_data;
6
extern void analytics_exporting_connectors (BUFFER *b);
7
extern void analytics_exporting_connectors_ssl (BUFFER *b);
8
extern void analytics_build_info (BUFFER *b);
9
-extern int aclk_connected;
9
+extern int aclk_connected, aclk_use_new_cloud_arch;
10
11
struct collector {
12
char *plugin;
@@ -52,6 +52,7 @@ void analytics_log_data(void)
52
debug(D_ANALYTICS, "NETDATA_CONFIG_HOSTS_AVAILABLE : [%s]", analytics_data.netdata_config_hosts_available);
53
debug(D_ANALYTICS, "NETDATA_HOST_CLOUD_AVAILABLE : [%s]", analytics_data.netdata_host_cloud_available);
54
debug(D_ANALYTICS, "NETDATA_HOST_ACLK_AVAILABLE : [%s]", analytics_data.netdata_host_aclk_available);
55
+ debug(D_ANALYTICS, "NETDATA_HOST_ACLK_PROTOCOL : [%s]", analytics_data.netdata_host_aclk_protocol);
56
debug(D_ANALYTICS, "NETDATA_HOST_ACLK_IMPLEMENTATION : [%s]", analytics_data.netdata_host_aclk_implementation);
57
debug(D_ANALYTICS, "NETDATA_HOST_AGENT_CLAIMED : [%s]", analytics_data.netdata_host_agent_claimed);
58
debug(D_ANALYTICS, "NETDATA_HOST_CLOUD_ENABLED : [%s]", analytics_data.netdata_host_cloud_enabled);
@@ -97,6 +98,7 @@ void analytics_free_data(void)
98
freez(analytics_data.netdata_config_hosts_available);
99
freez(analytics_data.netdata_host_cloud_available);
100
freez(analytics_data.netdata_host_aclk_available);
101
+ freez(analytics_data.netdata_host_aclk_protocol);
102
freez(analytics_data.netdata_host_aclk_implementation);
103
freez(analytics_data.netdata_host_agent_claimed);
104
freez(analytics_data.netdata_host_cloud_enabled);
@@ -488,7 +490,7 @@ void analytics_alarms(void)
490
}
491
492
/*
491
- * Misc attributes to get (run from meta)
493
+ * Misc attributes to get (run from start)
494
*/
495
void analytics_misc(void)
496
{
@@ -500,13 +502,6 @@ void analytics_misc(void)
502
analytics_set_data_str(&analytics_data.netdata_host_aclk_implementation, "");
503
#endif
504
503
-#ifdef ENABLE_ACLK
504
- if (aclk_connected)
505
- analytics_set_data(&analytics_data.netdata_host_aclk_available, "true");
506
- else
507
-#endif
508
- analytics_set_data(&analytics_data.netdata_host_aclk_available, "false");
509
-
505
analytics_set_data(&analytics_data.netdata_config_exporting_enabled, appconfig_get_boolean(&exporting_config, CONFIG_SECTION_EXPORTING, "enabled", CONFIG_BOOLEAN_NO) ? "true" : "false");
506
507
analytics_set_data(&analytics_data.netdata_config_is_private_registry, "false");
@@ -523,6 +518,23 @@ void analytics_misc(void)
518
analytics_set_data(&analytics_data.netdata_config_is_private_registry, "true");
519
}
520
521
+void analytics_aclk(void)
522
+{
523
+#ifdef ENABLE_ACLK
524
+ if (aclk_connected) {
525
+ analytics_set_data(&analytics_data.netdata_host_aclk_available, "true");
526
+#ifdef ENABLE_NEW_CLOUD_PROTOCOL
527
+ if (aclk_use_new_cloud_arch)
528
+ analytics_set_data_str(&analytics_data.netdata_host_aclk_protocol, "New");
529
+ else
530
+#endif
531
+ analytics_set_data_str(&analytics_data.netdata_host_aclk_protocol, "Legacy");
532
+ }
533
+ else
534
+#endif
535
+ analytics_set_data(&analytics_data.netdata_host_aclk_available, "false");
536
+}
537
+
538
/*
539
* Get the meta data, called from the thread once after the original delay
540
* These are values that won't change during agent runtime, and therefore
@@ -548,6 +560,7 @@ void analytics_gather_mutable_meta_data(void)
560
analytics_alarms();
561
analytics_charts();
562
analytics_metrics();
563
+ analytics_aclk();
564
565
rrdhost_unlock(localhost);
566
@@ -889,6 +902,7 @@ void set_global_environment()
902
analytics_set_data(&analytics_data.netdata_host_cloud_available, "null");
903
analytics_set_data(&analytics_data.netdata_host_aclk_implementation, "null");
904
analytics_set_data(&analytics_data.netdata_host_aclk_available, "null");
905
+ analytics_set_data(&analytics_data.netdata_host_aclk_protocol, "null");
906
analytics_set_data(&analytics_data.netdata_host_agent_claimed, "null");
907
analytics_set_data(&analytics_data.netdata_host_cloud_enabled, "null");
908
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 *
990
991
sprintf(
992
command_to_run,
979
- "%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' ",
993
+ "%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' ",
994
as_script,
995
action,
996
action_result,
@@ -1010,6 +1024,7 @@ void send_statistics(const char *action, const char *action_result, const char *
1024
analytics_data.netdata_config_hosts_available,
1025
analytics_data.netdata_host_cloud_available,
1026
analytics_data.netdata_host_aclk_available,
1027
+ analytics_data.netdata_host_aclk_protocol,
1028
analytics_data.netdata_host_aclk_implementation,
1029
analytics_data.netdata_host_agent_claimed,
1030
analytics_data.netdata_host_cloud_enabled,
daemon/analytics.h
+2
-1
@@ -29,7 +29,7 @@
29
},
30
31
/* Needed to calculate the space needed for parameters */
32
-#define ANALYTICS_NO_OF_ITEMS 38
32
+#define ANALYTICS_NO_OF_ITEMS 39
33
34
struct analytics_data {
35
char *netdata_config_stream_enabled;
@@ -61,6 +61,7 @@ struct analytics_data {
61
char *netdata_config_hosts_available;
62
char *netdata_host_cloud_available;
63
char *netdata_host_aclk_available;
64
+ char *netdata_host_aclk_protocol;
65
char *netdata_host_aclk_implementation;
66
char *netdata_host_agent_claimed;
67
char *netdata_host_cloud_enabled;
daemon/anonymous-statistics.sh.in
+11
-9
@@ -54,15 +54,16 @@ NETDATA_CONFIG_IS_PARENT="${29}"
54
NETDATA_CONFIG_HOSTS_AVAILABLE="${30}"
55
NETDATA_HOST_CLOUD_AVAILABLE="${31}"
56
NETDATA_HOST_ACLK_AVAILABLE="${32}"
57
-NETDATA_HOST_ACLK_IMPLEMENTATION="${33}"
58
-NETDATA_HOST_AGENT_CLAIMED="${34}"
59
-NETDATA_HOST_CLOUD_ENABLED="${35}"
60
-NETDATA_CONFIG_HTTPS_AVAILABLE="${36}"
61
-NETDATA_INSTALL_TYPE="${37}"
62
-NETDATA_IS_PRIVATE_REGISTRY="${38}"
63
-NETDATA_USE_PRIVATE_REGISTRY="${39}"
64
-NETDATA_CONFIG_OOM_SCORE="${40}"
65
-NETDATA_PREBUILT_DISTRO="${41}"
57
+NETDATA_HOST_ACLK_PROTOCOL="${33}"
58
+NETDATA_HOST_ACLK_IMPLEMENTATION="${34}"
59
+NETDATA_HOST_AGENT_CLAIMED="${35}"
60
+NETDATA_HOST_CLOUD_ENABLED="${36}"
61
+NETDATA_CONFIG_HTTPS_AVAILABLE="${37}"
62
+NETDATA_INSTALL_TYPE="${38}"
63
+NETDATA_IS_PRIVATE_REGISTRY="${39}"
64
+NETDATA_USE_PRIVATE_REGISTRY="${40}"
65
+NETDATA_CONFIG_OOM_SCORE="${41}"
66
+NETDATA_PREBUILT_DISTRO="${42}"
67
68
69
# define body of request to be sent
@@ -147,6 +148,7 @@ REQ_BODY="$(cat << EOF
148
"host_cloud_enabled": ${NETDATA_HOST_CLOUD_ENABLED},
149
"host_agent_claimed": ${NETDATA_HOST_AGENT_CLAIMED},
150
"host_aclk_available": ${NETDATA_HOST_ACLK_AVAILABLE},
151
+ "host_aclk_protocol": ${NETDATA_HOST_ACLK_PROTOCOL},
152
"host_aclk_implementation": ${NETDATA_HOST_ACLK_IMPLEMENTATION},
153
"mirrored_host_count": ${NETDATA_MIRRORED_HOST_COUNT},
154
"mirrored_hosts_reachable": ${NETDATA_MIRRORED_HOSTS_REACHABLE},
web/api/web_api_v1.c
+13
-11
@@ -3,6 +3,7 @@
3
#include "web_api_v1.h"
4
5
char *api_secret;
6
+extern int aclk_use_new_cloud_arch;
7
8
static struct {
9
const char *name;
@@ -984,24 +985,18 @@ inline int web_client_api_request_v1_info_fill_buffer(RRDHOST *host, BUFFER *wb)
985
986
#ifdef ENABLE_ACLK
987
buffer_strcat(wb, "\t\"cloud-available\": true,\n");
987
-#ifdef ACLK_NG
988
buffer_strcat(wb, "\t\"aclk-ng-available\": true,\n");
989
-#else
990
- buffer_strcat(wb, "\t\"aclk-ng-available\": false,\n");
991
-#endif
992
-#if defined(ACLK_NG) && defined(ENABLE_NEW_CLOUD_PROTOCOL)
989
+#ifdef ENABLE_NEW_CLOUD_PROTOCOL
990
buffer_strcat(wb, "\t\"aclk-ng-new-cloud-protocol\": true,\n");
991
#else
992
buffer_strcat(wb, "\t\"aclk-ng-new-cloud-protocol\": false,\n");
993
#endif
997
-#ifdef ACLK_LEGACY
998
- buffer_strcat(wb, "\t\"aclk-legacy-available\": true,\n");
999
-#else
994
buffer_strcat(wb, "\t\"aclk-legacy-available\": false,\n");
1001
-#endif
995
buffer_strcat(wb, "\t\"aclk-implementation\": \"Next Generation\",\n");
996
#else
997
buffer_strcat(wb, "\t\"cloud-available\": false,\n");
998
+ buffer_strcat(wb, "\t\"aclk-ng-available\": false,\n");
999
+ buffer_strcat(wb, "\t\"aclk-legacy-available\": false,\n");
1000
#endif
1001
char *agent_id = is_agent_claimed();
1002
if (agent_id == NULL)
@@ -1011,11 +1006,18 @@ inline int web_client_api_request_v1_info_fill_buffer(RRDHOST *host, BUFFER *wb)
1006
freez(agent_id);
1007
}
1008
#ifdef ENABLE_ACLK
1014
- if (aclk_connected)
1009
+ if (aclk_connected) {
1010
buffer_strcat(wb, "\t\"aclk-available\": true,\n");
1011
+#ifdef ENABLE_NEW_CLOUD_PROTOCOL
1012
+ if (aclk_use_new_cloud_arch)
1013
+ buffer_strcat(wb, "\t\"aclk-available-protocol\": \"New\",\n");
1014
+ else
1015
+#endif
1016
+ buffer_strcat(wb, "\t\"aclk-available-protocol\": \"Legacy\",\n");
1017
+ }
1018
else
1019
#endif
1018
- buffer_strcat(wb, "\t\"aclk-available\": false,\n"); // Intentionally valid with/without #ifdef above
1020
+ buffer_strcat(wb, "\t\"aclk-available\": false,\n\t\"aclk-available-protocol\": null,\n"); // Intentionally valid with/without #ifdef above
1021
1022
buffer_strcat(wb, "\t\"memory-mode\": ");
1023
analytics_get_data(analytics_data.netdata_config_memory_mode, wb);