anonymous-statistics.sh.in 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  1. #!/usr/bin/env sh
  2. # Valid actions:
  3. # - FATAL - netdata exited due to a fatal condition
  4. # ACTION_RESULT -- program name and thread tag
  5. # ACTION_DATA -- fmt, args passed to fatal
  6. # - START - netdata started
  7. # ACTION_DATA -- nan
  8. # - EXIT - installation action
  9. # ACTION_DATA -- ret value of
  10. ACTION="${1}"
  11. ACTION_RESULT="${2}"
  12. ACTION_DATA="${3}"
  13. ACTION_DATA=$(echo "${ACTION_DATA}" | tr '"' "'")
  14. # -------------------------------------------------------------------------------------------------
  15. # check opt-out
  16. if [ -f "@configdir_POST@/.opt-out-from-anonymous-statistics" ] ||
  17. [ ! "${DISABLE_TELEMETRY:-0}" -eq 0 ] ||
  18. [ -n "$DISABLE_TELEMETRY" ] ||
  19. [ ! "${DO_NOT_TRACK:-0}" -eq 0 ] ||
  20. [ -n "$DO_NOT_TRACK" ]; then
  21. exit 0
  22. fi
  23. # -------------------------------------------------------------------------------------------------
  24. # Get the extra variables
  25. NETDATA_CONFIG_STREAM_ENABLED="${4}"
  26. NETDATA_CONFIG_MEMORY_MODE="${5}"
  27. NETDATA_CONFIG_EXPORTING_ENABLED="${6}"
  28. NETDATA_EXPORTING_CONNECTORS="${7}"
  29. NETDATA_ALLMETRICS_PROMETHEUS_USED="${8}"
  30. NETDATA_ALLMETRICS_SHELL_USED="${9}"
  31. NETDATA_ALLMETRICS_JSON_USED="${10}"
  32. NETDATA_DASHBOARD_USED="${11}"
  33. NETDATA_COLLECTORS="${12}"
  34. NETDATA_COLLECTORS_COUNT="${13}"
  35. NETDATA_BUILDINFO="${14}"
  36. NETDATA_CONFIG_PAGE_CACHE_SIZE="${15}"
  37. NETDATA_CONFIG_MULTIDB_DISK_QUOTA="${16}"
  38. NETDATA_CONFIG_HTTPS_ENABLED="${17}"
  39. NETDATA_CONFIG_WEB_ENABLED="${18}"
  40. NETDATA_CONFIG_RELEASE_CHANNEL="${19}"
  41. NETDATA_MIRRORED_HOST_COUNT="${20}"
  42. NETDATA_MIRRORED_HOSTS_REACHABLE="${21}"
  43. NETDATA_MIRRORED_HOSTS_UNREACHABLE="${22}"
  44. NETDATA_NOTIFICATION_METHODS="${23}"
  45. NETDATA_ALARMS_NORMAL="${24}"
  46. NETDATA_ALARMS_WARNING="${25}"
  47. NETDATA_ALARMS_CRITICAL="${26}"
  48. NETDATA_CHARTS_COUNT="${27}"
  49. NETDATA_METRICS_COUNT="${28}"
  50. NETDATA_CONFIG_IS_PARENT="${29}"
  51. NETDATA_CONFIG_HOSTS_AVAILABLE="${30}"
  52. NETDATA_HOST_CLOUD_AVAILABLE="${31}"
  53. NETDATA_HOST_ACLK_AVAILABLE="${32}"
  54. NETDATA_HOST_ACLK_PROTOCOL="${33}"
  55. NETDATA_HOST_ACLK_IMPLEMENTATION="${34}"
  56. NETDATA_HOST_AGENT_CLAIMED="${35}"
  57. NETDATA_HOST_CLOUD_ENABLED="${36}"
  58. NETDATA_CONFIG_HTTPS_AVAILABLE="${37}"
  59. NETDATA_INSTALL_TYPE="${38}"
  60. NETDATA_IS_PRIVATE_REGISTRY="${39}"
  61. NETDATA_USE_PRIVATE_REGISTRY="${40}"
  62. NETDATA_CONFIG_OOM_SCORE="${41}"
  63. NETDATA_PREBUILT_DISTRO="${42}"
  64. [ -z "$NETDATA_REGISTRY_UNIQUE_ID" ] && NETDATA_REGISTRY_UNIQUE_ID="00000000-0000-0000-0000-000000000000"
  65. KERNEL_NAME="$(uname -s)"
  66. MD5_PATH="$(exec <&- 2>&-; which md5sum || command -v md5sum || type md5sum)"
  67. if [ "${KERNEL_NAME}" = Darwin ] && command -v ioreg >/dev/null 2>&1; then
  68. SYSTEM_DISTINCT_ID="macos-$(ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { split($0, line, "\""); printf("%s\n", line[4]); }')"
  69. elif [ -f /etc/machine-id ] && [ -n "$MD5_PATH" ]; then
  70. SYSTEM_DISTINCT_ID="machine-$($MD5_PATH < /etc/machine-id | cut -f1 -d" ")"
  71. elif [ -f /var/db/dbus/machine-id ] && [ -n "$MD5_PATH" ]; then
  72. SYSTEM_DISTINCT_ID="dbus-$($MD5_PATH < /var/db/dbus/machine-id | cut -f1 -d" ")"
  73. elif [ -f /var/lib/dbus/machine-id ] && [ -n "$MD5_PATH" ]; then
  74. SYSTEM_DISTINCT_ID="dbus-$($MD5_PATH < /var/lib/dbus/machine-id | cut -f1 -d" ")"
  75. elif command -v uuidgen > /dev/null 2>&1; then
  76. SYSTEM_DISTINCT_ID="uuid-$(uuidgen | tr '[:upper:]' '[:lower:]')"
  77. else
  78. SYSTEM_DISTINCT_ID="null"
  79. fi
  80. # define body of request to be sent
  81. REQ_BODY="$(cat << EOF
  82. {
  83. "event": "${ACTION} ${ACTION_RESULT}",
  84. "properties": {
  85. "distinct_id": "${NETDATA_REGISTRY_UNIQUE_ID}",
  86. "\$current_url": "agent backend",
  87. "\$pathname": "netdata-backend",
  88. "\$host": "backend.netdata.io",
  89. "\$ip": "127.0.0.1",
  90. "event_source": "agent backend",
  91. "action": "${ACTION}",
  92. "action_result": "${ACTION_RESULT}",
  93. "action_data": "${ACTION_DATA}",
  94. "netdata_machine_guid": "${NETDATA_REGISTRY_UNIQUE_ID}",
  95. "netdata_version": "${NETDATA_VERSION}",
  96. "netdata_buildinfo": ${NETDATA_BUILDINFO},
  97. "netdata_release_channel": ${NETDATA_CONFIG_RELEASE_CHANNEL},
  98. "netdata_install_type": ${NETDATA_INSTALL_TYPE},
  99. "netdata_prebuilt_distro": ${NETDATA_PREBUILT_DISTRO},
  100. "host_os_name": "${NETDATA_HOST_OS_NAME}",
  101. "host_os_id": "${NETDATA_HOST_OS_ID}",
  102. "host_os_id_like": "${NETDATA_HOST_OS_ID_LIKE}",
  103. "host_os_version": "${NETDATA_HOST_OS_VERSION}",
  104. "host_os_version_id": "${NETDATA_HOST_OS_VERSION_ID}",
  105. "host_os_detection": "${NETDATA_HOST_OS_DETECTION}",
  106. "host_is_k8s_node": "${NETDATA_HOST_IS_K8S_NODE}",
  107. "system_kernel_name": "${NETDATA_SYSTEM_KERNEL_NAME}",
  108. "system_kernel_version": "${NETDATA_SYSTEM_KERNEL_VERSION}",
  109. "system_architecture": "${NETDATA_SYSTEM_ARCHITECTURE}",
  110. "system_virtualization": "${NETDATA_SYSTEM_VIRTUALIZATION}",
  111. "system_virt_detection": "${NETDATA_SYSTEM_VIRT_DETECTION}",
  112. "system_container": "${NETDATA_SYSTEM_CONTAINER}",
  113. "system_container_detection": "${NETDATA_SYSTEM_CONTAINER_DETECTION}",
  114. "system_distinct_id": "${SYSTEM_DISTINCT_ID}",
  115. "container_os_name": "${NETDATA_CONTAINER_OS_NAME}",
  116. "container_os_id": "${NETDATA_CONTAINER_OS_ID}",
  117. "container_os_id_like": "${NETDATA_CONTAINER_OS_ID_LIKE}",
  118. "container_os_version": "${NETDATA_CONTAINER_OS_VERSION}",
  119. "container_os_version_id": "${NETDATA_CONTAINER_OS_VERSION_ID}",
  120. "container_os_detection": "${NETDATA_CONTAINER_OS_DETECTION}",
  121. "container_is_official_image": ${NETDATA_CONTAINER_IS_OFFICIAL_IMAGE},
  122. "system_cpu_detection": "${NETDATA_SYSTEM_CPU_DETECTION}",
  123. "system_cpu_freq": "${NETDATA_SYSTEM_CPU_FREQ}",
  124. "system_cpu_logical_cpu_count": "${NETDATA_SYSTEM_CPU_LOGICAL_CPU_COUNT}",
  125. "system_cpu_model": "${NETDATA_SYSTEM_CPU_MODEL}",
  126. "system_cpu_vendor": "${NETDATA_SYSTEM_CPU_VENDOR}",
  127. "system_disk_detection": "${NETDATA_SYSTEM_DISK_DETECTION}",
  128. "system_ram_detection": "${NETDATA_SYSTEM_RAM_DETECTION}",
  129. "system_total_disk_size": "${NETDATA_SYSTEM_TOTAL_DISK_SIZE}",
  130. "system_total_ram": "${NETDATA_SYSTEM_TOTAL_RAM}",
  131. "config_stream_enabled": ${NETDATA_CONFIG_STREAM_ENABLED},
  132. "config_memory_mode": ${NETDATA_CONFIG_MEMORY_MODE},
  133. "config_page_cache_size": ${NETDATA_CONFIG_PAGE_CACHE_SIZE},
  134. "config_multidb_disk_quota": ${NETDATA_CONFIG_MULTIDB_DISK_QUOTA},
  135. "config_https_enabled": ${NETDATA_CONFIG_HTTPS_ENABLED},
  136. "config_https_available": ${NETDATA_CONFIG_HTTPS_AVAILABLE},
  137. "config_web_enabled": ${NETDATA_CONFIG_WEB_ENABLED},
  138. "config_exporting_enabled": ${NETDATA_CONFIG_EXPORTING_ENABLED},
  139. "config_is_parent": ${NETDATA_CONFIG_IS_PARENT},
  140. "config_is_private_registry": ${NETDATA_IS_PRIVATE_REGISTRY},
  141. "config_private_registry_used": ${NETDATA_USE_PRIVATE_REGISTRY},
  142. "config_hosts_available": ${NETDATA_CONFIG_HOSTS_AVAILABLE},
  143. "config_oom_score": ${NETDATA_CONFIG_OOM_SCORE},
  144. "alarms_normal": ${NETDATA_ALARMS_NORMAL},
  145. "alarms_warning": ${NETDATA_ALARMS_WARNING},
  146. "alarms_critical": ${NETDATA_ALARMS_CRITICAL},
  147. "host_charts_count": ${NETDATA_CHARTS_COUNT},
  148. "host_metrics_count": ${NETDATA_METRICS_COUNT},
  149. "host_collectors":[
  150. ${NETDATA_COLLECTORS}
  151. ],
  152. "host_collectors_count": ${NETDATA_COLLECTORS_COUNT},
  153. "host_notification_methods": ${NETDATA_NOTIFICATION_METHODS},
  154. "host_allmetrics_prometheus_used": ${NETDATA_ALLMETRICS_PROMETHEUS_USED},
  155. "host_allmetrics_shell_used": ${NETDATA_ALLMETRICS_SHELL_USED},
  156. "host_allmetrics_json_used": ${NETDATA_ALLMETRICS_JSON_USED},
  157. "host_dashboard_used": ${NETDATA_DASHBOARD_USED},
  158. "host_cloud_available": ${NETDATA_HOST_CLOUD_AVAILABLE},
  159. "host_cloud_enabled": ${NETDATA_HOST_CLOUD_ENABLED},
  160. "host_agent_claimed": ${NETDATA_HOST_AGENT_CLAIMED},
  161. "host_aclk_available": ${NETDATA_HOST_ACLK_AVAILABLE},
  162. "host_aclk_protocol": ${NETDATA_HOST_ACLK_PROTOCOL},
  163. "host_aclk_implementation": ${NETDATA_HOST_ACLK_IMPLEMENTATION},
  164. "mirrored_host_count": ${NETDATA_MIRRORED_HOST_COUNT},
  165. "mirrored_hosts_reachable": ${NETDATA_MIRRORED_HOSTS_REACHABLE},
  166. "mirrored_hosts_unreachable": ${NETDATA_MIRRORED_HOSTS_UNREACHABLE},
  167. "exporting_connectors": ${NETDATA_EXPORTING_CONNECTORS}
  168. }
  169. }
  170. EOF
  171. )"
  172. # send the anonymous statistics to Netdata
  173. if [ -n "$(command -v curl 2> /dev/null)" ]; then
  174. curl --silent -o /dev/null --write-out '%{http_code}' -X POST --max-time 2 --header "Content-Type: application/json" -d "${REQ_BODY}" https://us-east1-netdata-analytics-bi.cloudfunctions.net/ingest_agent_events
  175. else
  176. wget -q -O - --no-check-certificate \
  177. --server-response \
  178. --method POST \
  179. --timeout=1 \
  180. --header 'Content-Type: application/json' \
  181. --body-data "${REQ_BODY}" \
  182. 'https://us-east1-netdata-analytics-bi.cloudfunctions.net/ingest_agent_events' 2>&1 | awk '/^ HTTP/{print $2}'
  183. fi