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