diff --git a/netdata-installer.sh b/netdata-installer.sh index 8f057add03..bcbb182a2d 100755 --- a/netdata-installer.sh +++ b/netdata-installer.sh @@ -371,6 +371,10 @@ while [ -n "${1}" ]; do NETDATA_PREFIX="${2}/netdata" shift 1 ;; + "--install-no-prefix") + NETDATA_PREFIX="${2}" + shift 1 + ;; "--help" | "-h") usage exit 1 diff --git a/packaging/installer/kickstart-ng.sh b/packaging/installer/kickstart-ng.sh index 2a929ce958..8fcc6d5d3f 100644 --- a/packaging/installer/kickstart-ng.sh +++ b/packaging/installer/kickstart-ng.sh @@ -5,14 +5,19 @@ # ====================================================================== # Constants +KICKSTART_OPTIONS="${*}" PACKAGES_SCRIPT="https://raw.githubusercontent.com/netdata/netdata/master/packaging/installer/install-required-packages.sh" +PATH="${PATH}:/usr/local/bin:/usr/local/sbin" REPOCONFIG_URL_PREFIX="https://packagecloud.io/netdata/netdata-repoconfig/packages" REPOCONFIG_VERSION="1-1" -PATH="${PATH}:/usr/local/bin:/usr/local/sbin" +TELEMETRY_URL="https://posthog.netdata.cloud/capture/" +START_TIME="$(date +%s)" # ====================================================================== # Defaults for environment variables +SELECTED_INSTALL_METHOD="none" +INSTALL_TYPE="unknown" INSTALL_PREFIX="" NETDATA_AUTO_UPDATES="1" NETDATA_CLAIM_ONLY=0 @@ -27,6 +32,7 @@ RELEASE_CHANNEL="nightly" NETDATA_DISABLE_TELEMETRY="${DO_NOT_TRACK:-0}" NETDATA_TARBALL_BASEURL="${NETDATA_TARBALL_BASEURL:-https://storage.googleapis.com/netdata-nightlies}" NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS:-""}" +TELEMETRY_API_KEY="${NETDATA_POSTHOG_API_KEY:-mqkwGT0JNFqO-zX2t0mW6Tec9yooaVu7xCBlXtHnt5Y}" if [ ! -t 1 ]; then INTERACTIVE=0 @@ -79,6 +85,119 @@ Additionally, this script may use the following environment variables: HEREDOC } +# ====================================================================== +# Telemetry functions + +telemetry_event() { + if [ "${NETDATA_DISABLE_TELEMETRY}" -eq 1 ]; then + return 0 + fi + + now="$(date +%s)" + total_duration="$((now - START_TIME))" + + if [ -e "/etc/os-release" ]; then + eval "$(grep -E "^(NAME|ID|ID_LIKE|VERSION|VERSION_ID)=" < /etc/os-release | sed 's/^/HOST_/')" + fi + + if [ -z "${HOST_NAME}" ] || [ -z "${HOST_VERSION}" ] || [ -z "${HOST_ID}" ]; then + if [ -f "/etc/lsb-release" ]; then + DISTRIB_ID="unknown" + DISTRIB_RELEASE="unknown" + DISTRIB_CODENAME="unknown" + eval "$(grep -E "^(DISTRIB_ID|DISTRIB_RELEASE|DISTRIB_CODENAME)=" < /etc/lsb-release)" + if [ -z "${HOST_NAME}" ]; then HOST_NAME="${DISTRIB_ID}"; fi + if [ -z "${HOST_VERSION}" ]; then HOST_VERSION="${DISTRIB_RELEASE}"; fi + if [ -z "${HOST_ID}" ]; then HOST_ID="${DISTRIB_CODENAME}"; fi + fi + fi + + KERNEL_NAME="$(uname -s)" + + if [ "${KERNEL_NAME}" = FreeBSD ]; then + TOTAL_RAM="$(sysctl -n hw.physmem)" + elif [ "${KERNEL_NAME}" = Darwin ]; then + TOTAL_RAM="$(sysctl -n hw.memsize)" + elif [ -r /proc/meminfo ]; then + TOTAL_RAM="$(grep -F MemTotal /proc/meminfo | cut -f 2 -d ':' | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | cut -f 1 -d ' ')" + TOTAL_RAM="$((TOTAL_RAM * 1024))" + fi + + if [ -f /etc/machine-id ]; then + DISTINCT_ID="$(cat /etc/machine-id)" + elif command -v uuidgen > /dev/null 2>&1; then + DISTINCT_ID="$(uuidgen)" + else + DISTINCT_ID="null" + fi + + REQ_BODY="$(cat << EOF +{ + "api_key": "${TELEMETRY_API_KEY}", + "event": "${1}", + "properties": { + "distinct_id": "${DISTINCT_ID}", + "event_source": "agent installer", + "\$current_url": "agent installer", + "\$pathname": "netdata-installer", + "\$host": "installer.netdata.io", + "\$ip": "127.0.0.1", + "script_variant": "kickstart-ng", + "error_code": "${3}", + "error_message": "${2}", + "install_options": "${KICKSTART_OPTIONS}", + "total_runtime": "${total_duration}", + "selected_install_method": "${SELECTED_INSTALL_METHOD}", + "netdata_release_channel": "${RELEASE_CHANNEL:-null}", + "netdata_install_type": "${INSTALL_TYPE}", + "host_os_name": "${HOST_NAME:-unknown}", + "host_os_id": "${HOST_ID:-unknown}", + "host_os_id_like": "${HOST_ID_LIKE:-unknown}", + "host_os_version": "${HOST_VERSION:-unknown}", + "host_os_version_id": "${HOST_VERSION_ID:-unknown}", + "system_kernel_name": "${KERNEL_NAME}", + "system_kernel_version": "$(uname -r)", + "system_architecture": "$(uname -m)", + "system_total_ram": "${TOTAL_RAM:-unknown}" + } +} +EOF +)" + + if [ -n "$(command -v curl 2> /dev/null)" ]; then + curl --silent -o /dev/null -X POST --max-time 2 --header "Content-Type: application/json" -d "${REQ_BODY}" "${TELEMETRY_URL}" > /dev/null + else + wget -q -O - --no-check-certificate \ + --method POST \ + --timeout=1 \ + --header 'Content-Type: application/json' \ + --body-data "${REQ_BODY}" \ + "${TELEMETRY_URL}" > /dev/null + fi +} + +trap_handler() { + code="${1}" + lineno="${2}" + + printf >&2 "%s\n\n" "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} ERROR ${TPUT_RESET} Installer exited unexpectedly (${code}-${lineno})" + + telemetry_event INSTALL_CRASH "Installer exited unexpectedly (${code}-${lineno})" "E${code}-${lineno}" + + trap - EXIT + + cleanup + + exit 1 +} + +trap 'trap_handler 0 ${LINENO}' EXIT +trap 'trap_handler 1 0' HUP +trap 'trap_handler 2 0' INT +trap 'trap_handler 3 0' QUIT +trap 'trap_handler 13 0' PIPE +trap 'trap_handler 15 0' TERM + # ====================================================================== # Utility functions @@ -118,7 +237,9 @@ cleanup() { fatal() { printf >&2 "%s\n\n" "${TPUT_BGRED}${TPUT_WHITE}${TPUT_BOLD} ABORTED ${TPUT_RESET} ${*}" + telemetry_event "INSTALL_FAILED" "${1}" "${2}" cleanup + trap - EXIT exit 1 } @@ -215,7 +336,7 @@ create_tmp_directory() { if [ -z "${TMPDIR}" ] || _cannot_use_tmpdir "${TMPDIR}"; then if _cannot_use_tmpdir /tmp; then if _cannot_use_tmpdir "${PWD}"; then - fatal "Unable to find a usable temporary directory. Please set \$TMPDIR to a path that is both writable and allows execution of files and try again." + fatal "Unable to find a usable temporary directory. Please set \$TMPDIR to a path that is both writable and allows execution of files and try again." F0400 else TMPDIR="${PWD}" fi @@ -235,7 +356,7 @@ download() { elif command -v wget > /dev/null 2>&1; then run wget -T 15 -O "${dest}" "${url}" || return 1 else - fatal "I need curl or wget to proceed, but neither of them are available on this system." + fatal "I need curl or wget to proceed, but neither of them are available on this system." F0003 fi } @@ -247,7 +368,7 @@ get_redirect() { elif command -v wget > /dev/null 2>&1; then run sh -c "wget --max-redirect=0 ${url} 2>&1 | grep Location | cut -d ' ' -f2 | grep -o '[^/]*$'" || return 1 else - fatal "I need curl or wget to proceed, but neither of them are available on this system." + fatal "I need curl or wget to proceed, but neither of them are available on this system." F0003 fi } @@ -259,7 +380,7 @@ safe_sha256sum() { elif command -v shasum > /dev/null 2>&1; then shasum -a 256 "$@" else - fatal "I could not find a suitable checksum binary to use" + fatal "I could not find a suitable checksum binary to use" F0004 fi } @@ -274,7 +395,7 @@ get_system_info() { elif [ -s "/usr/lib/os-release" ] && [ -r "/usr/lib/os-release" ]; then os_release_file="/usr/lib/os-release" else - fatal "Cannot find an os-release file ..." + fatal "Cannot find an os-release file ..." F0401 fi # shellcheck disable=SC1090 @@ -314,7 +435,7 @@ get_system_info() { SYSARCH="$(uname -m)" ;; *) - fatal "Unsupported system type detected. Netdata cannot be installed on this system using this script." + fatal "Unsupported system type detected. Netdata cannot be installed on this system using this script." F0200 ;; esac } @@ -339,7 +460,7 @@ confirm_root_support() { fi if [ -z "${ROOTCMD}" ]; then - fatal "We need root privileges to continue, but cannot find a way to gain them. Either re-run this script as root, or set \$ROOTCMD to a command that can be used to gain root privileges" + fatal "We need root privileges to continue, but cannot find a way to gain them. Either re-run this script as root, or set \$ROOTCMD to a command that can be used to gain root privileges" F0201 fi fi } @@ -370,7 +491,7 @@ update() { progress "Updated existing install at ${ndprefix}" return 0 else - fatal "Failed to update existing Netdata install at ${ndprefix}" + fatal "Failed to update existing Netdata install at ${ndprefix}" F0100 fi else return 1 @@ -381,7 +502,15 @@ handle_existing_install() { if pkg_installed netdata; then ndprefix="/" else - ndpath="$(command -v netdata 2>/dev/null)" + if [ -n "${INSTALL_PREFIX}" ]; then + searchpath="${INSTALL_PREFIX}/bin:${INSTALL_PREFIX}/sbin:${INSTALL_PREFIX}/usr/bin:${INSTALL_PREFIX}/usr/sbin:${PATH}" + searchpath="${INSTALL_PREFIX}/netdata/bin:${INSTALL_PREFIX}/netdata/sbin:${INSTALL_PREFIX}/netdata/usr/bin:${INSTALL_PREFIX}/netdata/usr/sbin:${searchpath}" + else + searchpath="${PATH}" + fi + + ndpath="$(PATH="${searchpath}" command -v netdata 2>/dev/null)" + if [ -z "$ndpath" ] && [ -x /opt/netdata/bin/netdata ]; then ndpath="/opt/netdata/bin/netdata" fi @@ -390,8 +519,8 @@ handle_existing_install() { ndprefix="$(dirname "$(dirname "${ndpath}")")" fi - if [ "${ndprefix}" = /usr ]; then - ndprefix="/" + if echo "${ndprefix}" | grep -Eq '/usr$'; then + ndprefix="$(dirname "${ndprefix}")" fi fi @@ -430,12 +559,12 @@ handle_existing_install() { if [ -n "${NETDATA_UNSAFE_REINSTALL}" ]; then warning "Reinstalling over top of a ${INSTALL_TYPE} installation may be unsafe, but the user has requested we proceed." elif [ "${INTERACTIVE}" -eq 0 ]; then - fatal "User requested reinstall, but we cannot safely reinstall over top of a ${INSTALL_TYPE} installation, exiting." + fatal "User requested reinstall, but we cannot safely reinstall over top of a ${INSTALL_TYPE} installation, exiting." F0104 else if confirm "Reinstalling over top of a ${INSTALL_TYPE} installation may be unsafe, do you want to continue?"; then progress "OK, continuing." else - fatal "Cancelling reinstallation at user request." + fatal "Cancelling reinstallation at user request." F0105 fi fi ;; @@ -460,32 +589,33 @@ handle_existing_install() { claim ret=$? elif [ "${NETDATA_CLAIM_ONLY}" -eq 1 ]; then - fatal "User asked to claim, but did not proide a claiming token." + fatal "User asked to claim, but did not proide a claiming token." F0202 else progress "Not attempting to claim existing install at ${ndprefix} (no claiming token provided)." fi cleanup + trap - EXIT exit $ret ;; oci) - fatal "This is an OCI container, use the regular image lifecycle management commands in your container instead of this script for managing it." + fatal "This is an OCI container, use the regular image lifecycle management commands in your container instead of this script for managing it." F0203 ;; *) if [ -n "${NETDATA_REINSTALL}" ] || [ -n "${NETDATA_UNSAFE_REINSTALL}" ]; then if [ -n "${NETDATA_UNSAFE_REINSTALL}" ]; then warning "Reinstalling over top of a ${INSTALL_TYPE} installation may be unsafe, but the user has requested we proceed." elif [ "${INTERACTIVE}" -eq 0 ]; then - fatal "User requested reinstall, but we cannot safely reinstall over top of a ${INSTALL_TYPE} installation, exiting." + fatal "User requested reinstall, but we cannot safely reinstall over top of a ${INSTALL_TYPE} installation, exiting." F0104 else if confirm "Reinstalling over top of a ${INSTALL_TYPE} installation may be unsafe, do you want to continue?"; then progress "OK, continuing." else - fatal "Cancelling reinstallation at user request." + fatal "Cancelling reinstallation at user request." F0105 fi fi else - fatal "Found an existing netdata install at ${ndprefix}, but the install type is '${INSTALL_TYPE}', which is not supported, refusing to proceed." + fatal "Found an existing netdata install at ${ndprefix}, but the install type is '${INSTALL_TYPE}', which is not supported, refusing to proceed." F0103 fi ;; esac @@ -526,16 +656,22 @@ EOF confirm_install_prefix() { if [ -n "${INSTALL_PREFIX}" ] && [ "${NETDATA_ONLY_BUILD}" -ne 1 ]; then - fatal "The \`--install\` option is only supported together with the \`--only-build\` option." + fatal "The \`--install\` option is only supported together with the \`--only-build\` option." F0204 fi - case "${SYSTYPE}" in - Darwin) INSTALL_PREFIX="${INSTALL_PREFIX:-/usr/local/netdata}" ;; - FreeBSD) INSTALL_PREFIX="${INSTALL_PREFIX:-/usr/local}" ;; - esac - if [ -n "${INSTALL_PREFIX}" ]; then NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS} --install ${INSTALL_PREFIX}" + else + case "${SYSTYPE}" in + Darwin) + INSTALL_PREFIX="/usr/local/netdata" + NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS} --install-no-prefix ${INSTALL_PREFIX}" + ;; + FreeBSD) + INSTALL_PREFIX="/usr/local" + NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS} --install-no-prefix ${INSTALL_PREFIX}" + ;; + esac fi } @@ -545,11 +681,11 @@ confirm_install_prefix() { check_claim_opts() { # shellcheck disable=SC2235,SC2030 if [ -z "${NETDATA_CLAIM_TOKEN}" ] && [ -n "${NETDATA_CLAIM_ROOMS}" ]; then - fatal "Invalid claiming options, claim rooms may only be specified when a token and URL are specified." + fatal "Invalid claiming options, claim rooms may only be specified when a token and URL are specified." F0204 elif [ -z "${NETDATA_CLAIM_TOKEN}" ] && [ -n "${NETDATA_CLAIM_EXTRA}" ]; then - fatal "Invalid claiming options, a claiming token must be specified." + fatal "Invalid claiming options, a claiming token must be specified." F0204 elif [ "${NETDATA_DISABLE_CLOUD}" -eq 1 ] && [ -n "${NETDATA_CLAIM_TOKEN}" ]; then - fatal "Cloud explicitly disabled, but automatic claiming requested. Either enable Netdata Cloud, or remove the --claim-* options." + fatal "Cloud explicitly disabled, but automatic claiming requested. Either enable Netdata Cloud, or remove the --claim-* options." F0204 fi } @@ -574,6 +710,7 @@ claim() { warning "Unable to claim node, you must do so manually." if [ -z "${NETDATA_NEW_INSTALL}" ]; then cleanup + trap - EXIT exit 1 fi fi @@ -681,6 +818,7 @@ try_package_install() { pkg_install_opts="${interactive_opts}" repo_update_opts="${interactive_opts}" uninstall_subcmd="uninstall" + INSTALL_TYPE="binpkg-deb" ;; ubuntu) needs_early_refresh=1 @@ -693,6 +831,7 @@ try_package_install() { pkg_install_opts="${interactive_opts}" repo_update_opts="${interactive_opts}" uninstall_subcmd="uninstall" + INSTALL_TYPE="binpkg-deb" ;; centos) if command -v dnf > /dev/null; then @@ -708,6 +847,7 @@ try_package_install() { pkg_install_opts="${interactive_opts}" repo_update_opts="${interactive_opts}" uninstall_subcmd="remove" + INSTALL_TYPE="binpkg-rpm" ;; fedora) if command -v dnf > /dev/null; then @@ -723,6 +863,7 @@ try_package_install() { pkg_install_opts="${interactive_opts}" repo_update_opts="${interactive_opts}" uninstall_subcmd="remove" + INSTALL_TYPE="binpkg-rpm" ;; opensuse) pm_cmd="zypper" @@ -734,6 +875,7 @@ try_package_install() { pkg_install_opts="${interactive_opts} --allow-unsigned-rpm" repo_update_opts="" uninstall_subcmd="remove" + INSTALL_TYPE="binpkg-rpm" ;; *) warning "We do not provide native packages for ${DISTRO}." @@ -772,7 +914,7 @@ try_package_install() { progress "Updating repository metadata." # shellcheck disable=SC2086 if ! run ${ROOTCMD} env ${env} ${pm_cmd} ${repo_subcmd} ${repo_update_opts}; then - fatal "Failed to update repository metadata." + fatal "Failed to update repository metadata." F0205 fi fi else @@ -842,11 +984,11 @@ try_static_install() { fi if ! download "${NETDATA_STATIC_ARCHIVE_CHECKSUM_URL}" "${tmpdir}/sha256sum.txt"; then - fatal "Unable to fetch checksums to verify static build archive." + fatal "Unable to fetch checksums to verify static build archive." F0206 fi if ! grep "netdata-${SYSARCH}-latest.gz.run" "${tmpdir}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then - fatal "Static binary checksum validation failed. Usually this is a result of an older copy of the file being cached somewhere upstream and can be resolved by retrying in an hour." + fatal "Static binary checksum validation failed. Usually this is a result of an older copy of the file being cached somewhere upstream and can be resolved by retrying in an hour." F0207 fi if [ "${INTERACTIVE}" -eq 0 ]; then @@ -856,7 +998,9 @@ try_static_install() { progress "Installing netdata" # shellcheck disable=SC2086 if ! run ${ROOTCMD} sh "${tmpdir}/netdata-${SYSARCH}-latest.gz.run" ${opts} -- ${NETDATA_AUTO_UPDATES:+--auto-update} ${NETDATA_INSTALLER_OPTIONS}; then - fatal "Failed to install static build of Netdata on ${SYSARCH}." + warning "Failed to install static build of Netdata on ${SYSARCH}." + run rm -rf /opt/netdata + return 2 fi install_type_file="/opt/netdata/etc/netdata/.install-type" @@ -947,7 +1091,16 @@ build_and_install() { fi # shellcheck disable=SC2086 - run ${ROOTCMD} ./netdata-installer.sh ${opts} || fatal "netdata-installer.sh exited with error" + run ${ROOTCMD} ./netdata-installer.sh ${opts} + + case $? in + 1) + fatal "netdata-installer.sh exited with error" F0007 + ;; + 2) + fatal "Insufficient RAM to install netdata" F0008 + ;; + esac } try_build_install() { @@ -961,12 +1114,12 @@ try_build_install() { download "${NETDATA_SOURCE_ARCHIVE_URL}" "${tmpdir}/netdata-latest.tar.gz" if ! grep netdata-latest.tar.gz "${tmpdir}/sha256sum.txt" | safe_sha256sum -c - > /dev/null 2>&1; then - fatal "Tarball checksum validation failed. Usually this is a result of an older copy of the file being cached somewhere upstream and can be resolved by retrying in an hour." + fatal "Tarball checksum validation failed. Usually this is a result of an older copy of the file being cached somewhere upstream and can be resolved by retrying in an hour." F0005 fi run tar -xf "${tmpdir}/netdata-latest.tar.gz" -C "${tmpdir}" rm -rf "${tmpdir}/netdata-latest.tar.gz" > /dev/null 2>&1 - cd "$(find "${tmpdir}" -mindepth 1 -maxdepth 1 -type d -name netdata-)" || fatal "Cannot cd to netdata source tree" + cd "$(find "${tmpdir}" -mindepth 1 -maxdepth 1 -type d -name netdata-)" || fatal "Cannot cd to netdata source tree" F0006 if [ -x netdata-installer.sh ]; then build_and_install || return 1 @@ -975,7 +1128,7 @@ try_build_install() { if [ "$(find . -mindepth 1 -maxdepth 1 -type d | wc -l)" -eq 1 ] && [ -x "$(find . -mindepth 1 -maxdepth 1 -type d)/netdata-installer.sh" ]; then cd "$(find . -mindepth 1 -maxdepth 1 -type d)" && build_and_install || return 1 else - fatal "Cannot install netdata from source (the source directory does not include netdata-installer.sh). Leaving all files in ${tmpdir}" + fatal "Cannot install netdata from source (the source directory does not include netdata-installer.sh). Leaving all files in ${tmpdir}" F0009 fi fi } @@ -985,6 +1138,7 @@ try_build_install() { install_on_linux() { if [ "${NETDATA_ONLY_STATIC}" -ne 1 ] && [ "${NETDATA_ONLY_BUILD}" -ne 1 ]; then + SELECTED_INSTALL_METHOD="native" try_package_install case "$?" in @@ -992,11 +1146,11 @@ install_on_linux() { NETDATA_INSTALL_SUCCESSFUL=1 ;; 1) - fatal "Unable to install on this system." + fatal "Unable to install on this system." F0300 ;; 2) if [ "${NETDATA_ONLY_NATIVE}" -eq 1 ]; then - fatal "Could not install native binary packages." + fatal "Could not install native binary packages." F0301 else warning "Could not install native binary packages, falling back to alternative installation method." fi @@ -1005,6 +1159,8 @@ install_on_linux() { fi if [ "${NETDATA_ONLY_NATIVE}" -ne 1 ] && [ "${NETDATA_ONLY_BUILD}" -ne 1 ] && [ -z "${NETDATA_INSTALL_SUCCESSFUL}" ]; then + SELECTED_INSTALL_METHOD="static" + INSTALL_TYPE="kickstart-static" try_static_install case "$?" in @@ -1013,11 +1169,11 @@ install_on_linux() { INSTALL_PREFIX="/opt/netdata" ;; 1) - fatal "Unable to install on this system." + fatal "Unable to install on this system." F0302 ;; 2) if [ "${NETDATA_ONLY_STATIC}" -eq 1 ]; then - fatal "Could not install static build." + fatal "Could not install static build." F0303 else warning "Could not install static build, falling back to alternative installation method." fi @@ -1026,6 +1182,8 @@ install_on_linux() { fi if [ "${NETDATA_ONLY_NATIVE}" -ne 1 ] && [ "${NETDATA_ONLY_STATIC}" -ne 1 ] && [ -z "${NETDATA_INSTALL_SUCCESSFUL}" ]; then + SELECTED_INSTALL_METHOD="build" + INSTALL_TYPE="kickstart-build" try_build_install case "$?" in @@ -1033,7 +1191,7 @@ install_on_linux() { NETDATA_INSTALL_SUCCESSFUL=1 ;; *) - fatal "Unable to install on this system." + fatal "Unable to install on this system." F0304 ;; esac fi @@ -1041,10 +1199,12 @@ install_on_linux() { install_on_macos() { if [ "${NETDATA_ONLY_NATIVE}" -eq 1 ]; then - fatal "User requested native package, but native packages are not available for macOS. Try installing without \`--only-native\` option." + fatal "User requested native package, but native packages are not available for macOS. Try installing without \`--only-native\` option." F0305 elif [ "${NETDATA_ONLY_STATIC}" -eq 1 ]; then - fatal "User requested static build, but static builds are not available for macOS. Try installing without \`--only-static\` option." + fatal "User requested static build, but static builds are not available for macOS. Try installing without \`--only-static\` option." F0306 else + SELECTED_INSTALL_METHOD="build" + INSTALL_TYPE="kickstart-build" try_build_install case "$?" in @@ -1052,7 +1212,7 @@ install_on_macos() { NETDATA_INSTALL_SUCCESSFUL=1 ;; *) - fatal "Unable to install on this system." + fatal "Unable to install on this system." F0307 ;; esac fi @@ -1060,10 +1220,12 @@ install_on_macos() { install_on_freebsd() { if [ "${NETDATA_ONLY_NATIVE}" -eq 1 ]; then - fatal "User requested native package, but native packages are not available for FreeBSD. Try installing without \`--only-native\` option." + fatal "User requested native package, but native packages are not available for FreeBSD. Try installing without \`--only-native\` option." F0308 elif [ "${NETDATA_ONLY_STATIC}" -eq 1 ]; then - fatal "User requested static build, but static builds are not available for FreeBSD. Try installing without \`--only-static\` option." + fatal "User requested static build, but static builds are not available for FreeBSD. Try installing without \`--only-static\` option." F0309 else + SELECTED_INSTALL_METHOD="build" + INSTALL_TYPE="kickstart-build" try_build_install case "$?" in @@ -1071,7 +1233,7 @@ install_on_freebsd() { NETDATA_INSTALL_SUCCESSFUL=1 ;; *) - fatal "Unable to install on this system." + fatal "Unable to install on this system." F030A ;; esac fi @@ -1087,6 +1249,7 @@ while [ -n "${1}" ]; do "--help") usage cleanup + trap - EXIT exit 0 ;; "--no-cleanup") NO_CLEANUP=1 ;; @@ -1111,7 +1274,7 @@ while [ -n "${1}" ]; do NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS} --dont-start-it" ;; "--disable-telemetry") - NETDATA_DISABLE_TELEMETRY="0" + NETDATA_DISABLE_TELEMETRY="1" NETDATA_INSTALLER_OPTIONS="${NETDATA_INSTALLER_OPTIONS} --disable-telemetry" ;; "--install") @@ -1122,18 +1285,20 @@ while [ -n "${1}" ]; do NETDATA_ONLY_NATIVE=1 NETDATA_ONLY_STATIC=0 NETDATA_ONLY_BUILD=0 + SELECTED_INSTALL_METHOD="native" ;; "--static-only") NETDATA_ONLY_STATIC=1 NETDATA_ONLY_NATIVE=0 NETDATA_ONLY_BUILD=0 + SELECTED_INSTALL_METHOD="static" ;; "--build-only") NETDATA_ONLY_BUILD=1 NETDATA_ONLY_NATIVE=0 NETDATA_ONLY_STATIC=0 + SELECTED_INSTALL_METHOD="build" ;; - "--claim-token") NETDATA_CLAIM_TOKEN="${2}" shift 1 @@ -1192,4 +1357,6 @@ elif [ "${NETDATA_DISABLE_CLOUD}" -eq 1 ]; then soft_disable_cloud fi +telemetry_event INSTALL_SUCCESS "" "" cleanup +trap - EXIT