diff options
author | Federico Ceratto <federico.ceratto@gmail.com> | 2017-04-30 16:09:37 +0000 |
---|---|---|
committer | Federico Ceratto <federico.ceratto@gmail.com> | 2017-04-30 16:09:37 +0000 |
commit | 51f689a8e17ff3929acd2dbf39e936d2cd3ac723 (patch) | |
tree | 92e54f543171b69dcbc639be09d11221cf96ba28 /netdata-installer.sh | |
parent | New upstream version 1.5.0+dfsg (diff) | |
download | netdata-51f689a8e17ff3929acd2dbf39e936d2cd3ac723.tar.xz netdata-51f689a8e17ff3929acd2dbf39e936d2cd3ac723.zip |
New upstream version 1.6.0+dfsgupstream/1.6.0+dfsg
Diffstat (limited to 'netdata-installer.sh')
-rwxr-xr-x | netdata-installer.sh | 933 |
1 files changed, 439 insertions, 494 deletions
diff --git a/netdata-installer.sh b/netdata-installer.sh index fa69de196..6b672a242 100755 --- a/netdata-installer.sh +++ b/netdata-installer.sh @@ -1,11 +1,42 @@ #!/usr/bin/env bash +export PATH="${PATH}:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin" + +netdata_source_dir="$(pwd)" +installer_dir="$(dirname "${0}")" + +if [ "${netdata_source_dir}" != "${installer_dir}" -a "${installer_dir}" != "." ] + then + echo >&2 "Warninng: you are currently in '${netdata_source_dir}' but the installer is in '${installer_dir}'." +fi + + +# ----------------------------------------------------------------------------- # reload the user profile + [ -f /etc/profile ] && . /etc/profile -export PATH="${PATH}:/sbin:/usr/sbin:/usr/local/bin:/usr/local/sbin" +# make sure /etc/profile does not change our current directory +cd "${netdata_source_dir}" || exit 1 + + +# ----------------------------------------------------------------------------- +# load the required functions + +if [ -f "${installer_dir}/installer/functions.sh" ] + then + source "${installer_dir}/installer/functions.sh" || exit 1 +else + source "${netdata_source_dir}/installer/functions.sh" || exit 1 +fi + +# make sure we save all commands we run +run_logfile="netdata-installer.log" + +# ----------------------------------------------------------------------------- # fix PKG_CHECK_MODULES error + if [ -d /usr/share/aclocal ] then ACLOCAL_PATH=${ACLOCAL_PATH-/usr/share/aclocal} @@ -18,7 +49,7 @@ umask 002 # Be nice on production environments renice 19 $$ >/dev/null 2>/dev/null -processors=$(cat /proc/cpuinfo | grep ^processor | wc -l) +processors=$(cat /proc/cpuinfo 2>/dev/null | grep ^processor | wc -l) [ $(( processors )) -lt 1 ] && processors=1 # you can set CFLAGS before running installer @@ -35,54 +66,17 @@ printf "\n" >>netdata-installer.log REINSTALL_PWD="${PWD}" REINSTALL_COMMAND="$(printf "%q " "$0" "${@}"; printf "\n")" -banner() { - local l1=" ^" \ - l2=" |.-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-. .-" \ - l3=" | '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' '-' " \ - l4=" +----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+--->" \ - sp=" " \ - netdata="netdata" start end msg="${*}" - - [ ${#msg} -lt ${#netdata} ] && msg="${msg}${sp:0:$(( ${#netdata} - ${#msg}))}" - [ ${#msg} -gt $(( ${#l2} - 20 )) ] && msg="${msg:0:$(( ${#l2} - 23 ))}..." - - start="$(( ${#l2} / 2 - 4 ))" - [ $(( start + ${#msg} + 4 )) -gt ${#l2} ] && start=$((${#l2} - ${#msg} - 4)) - end=$(( ${start} + ${#msg} + 4 )) - - echo >&2 - echo >&2 "${l1}" - echo >&2 "${l2:0:start}${sp:0:2}${netdata}${sp:0:$((end - start - 2 - ${#netdata}))}${l2:end:$((${#l2} - end))}" - echo >&2 "${l3:0:start}${sp:0:2}${msg}${sp:0:2}${l3:end:$((${#l2} - end))}" - echo >&2 "${l4}" - echo >&2 -} - -service="$(which service 2>/dev/null || command -v service 2>/dev/null)" -systemctl="$(which systemctl 2>/dev/null || command -v systemctl 2>/dev/null)" -service() { - local cmd="${1}" action="${2}" - - if [ ! -z "${service}" ] - then - run "${service}" "${cmd}" "${action}" - return $? - elif [ ! -z "${systemctl}" ] - then - run "${systemctl}" "${action}" "${cmd}" - return $? - fi - return 1 -} +setcap="$(which setcap 2>/dev/null || command -v setcap 2>/dev/null)" ME="$0" DONOTSTART=0 DONOTWAIT=0 NETDATA_PREFIX= LIBS_ARE_HERE=0 +NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS-}" usage() { - banner "installer command line options" + netdata_banner "installer command line options" cat <<USAGE ${ME} <installer options> @@ -91,7 +85,7 @@ Valid <installer options> are: --install /PATH/TO/INSTALL - If your give: --install /opt + If you give: --install /opt netdata will be installed in /opt/netdata --dont-start-it @@ -104,6 +98,24 @@ Valid <installer options> are: Do not wait for the user to press ENTER. Start immediately building it. + --enable-plugin-freeipmi + --disable-plugin-freeipmi + + Enable/disable the FreeIPMI plugin. + Default: enable it when libipmimonitoring is available. + + --enable-plugin-nfacct + --disable-plugin-nfacct + + Enable/disable the nfacct plugin. + Default: enable it when libmnl and libnetfilter_acct are available. + + --enable-lto + --disable-lto + + Enable/disable Link-Time-Optimization + Default: enabled + --zlib-is-really-here --libs-are-really-here @@ -131,7 +143,7 @@ For the plugins, you will at least need: USAGE } -md5sum="$(which md5sum 2>/dev/null || command -v md5sum 2>/dev/null)" +md5sum="$(which md5sum 2>/dev/null || command -v md5sum 2>/dev/null || command -v md5 2>/dev/null)" get_git_config_signatures() { local x s file md5 @@ -147,7 +159,7 @@ get_git_config_signatures() { for c in $(git log --follow "conf.d/${x}" | grep ^commit | cut -d ' ' -f 2) do git checkout ${c} "conf.d/${x}" || continue - s="$(cat "conf.d/${x}" | md5sum | cut -d ' ' -f 1)" + s="$(cat "conf.d/${x}" | ${md5sum} | cut -d ' ' -f 1)" echo >>configs.signatures.tmp "${s}:${x}" echo " ${s}" done @@ -191,6 +203,30 @@ do then DONOTWAIT=1 shift 1 + elif [ "$1" = "--enable-plugin-freeipmi" ] + then + NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS} --enable-plugin-freeipmi" + shift 1 + elif [ "$1" = "--disable-plugin-freeipmi" ] + then + NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS} --disable-plugin-freeipmi" + shift 1 + elif [ "$1" = "--enable-plugin-nfacct" ] + then + NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS} --enable-plugin-nfacct" + shift 1 + elif [ "$1" = "--disable-plugin-nfacct" ] + then + NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS} --disable-plugin-nfacct" + shift 1 + elif [ "$1" = "--enable-lto" ] + then + NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS} --enable-lto" + shift 1 + elif [ "$1" = "--disable-lto" ] + then + NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS} --disable-lto" + shift 1 elif [ "$1" = "--help" -o "$1" = "-h" ] then usage @@ -208,66 +244,74 @@ do fi done -banner "real-time performance monitoring, done right!" -cat <<BANNER +netdata_banner "real-time performance monitoring, done right!" +cat <<BANNER1 You are about to build and install netdata to your system. It will be installed at these locations: - - the daemon at ${NETDATA_PREFIX}/usr/sbin/netdata - - config files at ${NETDATA_PREFIX}/etc/netdata - - web files at ${NETDATA_PREFIX}/usr/share/netdata - - plugins at ${NETDATA_PREFIX}/usr/libexec/netdata - - cache files at ${NETDATA_PREFIX}/var/cache/netdata - - db files at ${NETDATA_PREFIX}/var/lib/netdata - - log files at ${NETDATA_PREFIX}/var/log/netdata - - pid file at ${NETDATA_PREFIX}/var/run + - the daemon at ${TPUT_CYAN}${NETDATA_PREFIX}/usr/sbin/netdata${TPUT_RESET} + - config files in ${TPUT_CYAN}${NETDATA_PREFIX}/etc/netdata${TPUT_RESET} + - web files in ${TPUT_CYAN}${NETDATA_PREFIX}/usr/share/netdata${TPUT_RESET} + - plugins in ${TPUT_CYAN}${NETDATA_PREFIX}/usr/libexec/netdata${TPUT_RESET} + - cache files in ${TPUT_CYAN}${NETDATA_PREFIX}/var/cache/netdata${TPUT_RESET} + - db files in ${TPUT_CYAN}${NETDATA_PREFIX}/var/lib/netdata${TPUT_RESET} + - log files in ${TPUT_CYAN}${NETDATA_PREFIX}/var/log/netdata${TPUT_RESET} +BANNER1 + +[ "${UID}" -eq 0 ] && cat <<BANNER2 + - pid file at ${TPUT_CYAN}${NETDATA_PREFIX}/var/run/netdata.pid${TPUT_RESET} + - logrotate file at ${TPUT_CYAN}/etc/logrotate.d/netdata${TPUT_RESET} +BANNER2 + +cat <<BANNER3 This installer allows you to change the installation path. Press Control-C and run the same command with --help for help. -BANNER +BANNER3 if [ "${UID}" -ne 0 ] then if [ -z "${NETDATA_PREFIX}" ] then - banner "wrong command line options!" + netdata_banner "wrong command line options!" cat <<NONROOTNOPREFIX - -Sorry! This will fail! - -You are attempting to install netdata as non-root, but you plan to install it -in system paths. - -Please set an installation prefix, like this: - - $0 ${@} --install /tmp - -or, run the installer as root: - - sudo $0 ${@} - -We suggest to install it as root, or certain data collectors will not be able -to work. Netdata drops root privileges when running. So, if you plan to keep -it, install it as root to get the full functionality. - + + ${TPUT_RED}${TPUT_BOLD}Sorry! This will fail!${TPUT_RESET} + + You are attempting to install netdata as non-root, but you plan + to install it in system paths. + + Please set an installation prefix, like this: + + $0 ${@} --install /tmp + + or, run the installer as root: + + sudo $0 ${@} + + We suggest to install it as root, or certain data collectors will + not be able to work. Netdata drops root privileges when running. + So, if you plan to keep it, install it as root to get the full + functionality. + NONROOTNOPREFIX exit 1 else cat <<NONROOT - -IMPORTANT: -You are about to install netdata as a non-root user. -Netdata will work, but a few data collection modules that -require root access will fail. - -If you installing permanently on your system, run the -installer like this: - - sudo $0 ${@} + + ${TPUT_RED}${TPUT_BOLD}IMPORTANT${TPUT_RESET}: + You are about to install netdata as a non-root user. + Netdata will work, but a few data collection modules that + require root access will fail. + + If you installing netdata permanently on your system, run + the installer like this: + + ${TPUT_YELLOW}${TPUT_BOLD}sudo $0 ${@}${TPUT_RESET} NONROOT fi @@ -306,7 +350,7 @@ then then echo "Will skip autoreconf step" else - banner "autotools v2.60 required" + netdata_banner "autotools v2.60 required" cat <<"EOF" ------------------------------------------------------------------------------- @@ -333,14 +377,14 @@ if [ ${DONOTWAIT} -eq 0 ] then if [ ! -z "${NETDATA_PREFIX}" ] then - read -p "Press ENTER to build and install netdata to '${NETDATA_PREFIX}' > " + eval "read >&2 -ep \$'\001${TPUT_BOLD}${TPUT_GREEN}\002Press ENTER to build and install netdata to \'\001${TPUT_CYAN}\002${NETDATA_PREFIX}\001${TPUT_YELLOW}\002\'\001${TPUT_RESET}\002 > ' -e -r REPLY" else - read -p "Press ENTER to build and install netdata to your system > " + eval "read >&2 -ep \$'\001${TPUT_BOLD}${TPUT_GREEN}\002Press ENTER to build and install netdata to your system\001${TPUT_RESET}\002 > ' -e -r REPLY" fi fi build_error() { - banner "sorry, it failed to build..." + netdata_banner "sorry, it failed to build..." cat <<EOF ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -375,31 +419,6 @@ EOF exit 1 } -run() { - printf >>netdata-installer.log "# " - printf >>netdata-installer.log "%q " "${@}" - printf >>netdata-installer.log " ... " - - printf >&2 "\n" - printf >&2 ":-----------------------------------------------------------------------------\n" - printf >&2 "Running command:\n" - printf >&2 "\n" - printf >&2 "%q " "${@}" - printf >&2 "\n" - - "${@}" - - local ret=$? - if [ ${ret} -ne 0 ] - then - printf >>netdata-installer.log "FAILED!\n" - else - printf >>netdata-installer.log "OK\n" - fi - - return ${ret} -} - if [ ${LIBS_ARE_HERE} -eq 1 ] then shift @@ -412,6 +431,11 @@ fi trap build_error EXIT + +# ----------------------------------------------------------------------------- +echo >&2 +progress "Run autotools to configure the build environment" + if [ "$have_autotools" ] then run ./autogen.sh || exit 1 @@ -421,29 +445,28 @@ run ./configure \ --prefix="${NETDATA_PREFIX}/usr" \ --sysconfdir="${NETDATA_PREFIX}/etc" \ --localstatedir="${NETDATA_PREFIX}/var" \ - --with-zlib --with-math --with-user=netdata \ + --with-zlib \ + --with-math \ + --with-user=netdata \ + ${NETDATA_CONFIGURE_OPTIONS} \ CFLAGS="${CFLAGS}" || exit 1 # remove the build_error hook trap - EXIT -if [ -f src/netdata ] - then - echo >&2 "Cleaning a possibly old compilation ..." - run make clean -fi +# ----------------------------------------------------------------------------- +progress "Cleanup compilation directory" + +[ -f src/netdata ] && run make clean + +# ----------------------------------------------------------------------------- +progress "Compile netdata" -echo >&2 "Compiling netdata ..." run make -j${processors} || exit 1 -if [ "${BASH_VERSINFO[0]}" -ge "4" ] -then - declare -A configs_signatures=() - if [ -f "configs.signatures" ] - then - source "configs.signatures" || echo >&2 "ERROR: Failed to load configs.signatures !" - fi -fi + +# ----------------------------------------------------------------------------- +progress "Migrate configuration files for node.d.plugin and charts.d.plugin" # migrate existing configuration files # for node.d and charts.d @@ -486,6 +509,36 @@ if [ -d "${NETDATA_PREFIX}/etc/netdata" ] done fi +# ----------------------------------------------------------------------------- +progress "Backup existing netdata configuration before installing it" + +if [ "${BASH_VERSINFO[0]}" -ge "4" ] +then + declare -A configs_signatures=() + if [ -f "configs.signatures" ] + then + source "configs.signatures" || echo >&2 "ERROR: Failed to load configs.signatures !" + fi +fi + +config_signature_matches() { + local md5="${1}" file="${2}" + + if [ "${BASH_VERSINFO[0]}" -ge "4" ] + then + [ "${configs_signatures[${md5}]}" = "${file}" ] && return 0 + return 1 + fi + + if [ -f "configs.signatures" ] + then + grep "\['${md5}'\]='${file}'" "configs.signatures" >/dev/null + return $? + fi + + return 1 +} + # backup user configurations installer_backup_suffix="${PID}.${RANDOM}" for x in $(find "${NETDATA_PREFIX}/etc/netdata/" -name '*.conf' -type f) @@ -498,7 +551,8 @@ do if [ -z "${md5sum}" -o ! -x "${md5sum}" ] then # we don't have md5sum - keep it - cp -p "${x}" "${x}.installer_backup.${installer_backup_suffix}" + echo >&2 "File '${TPUT_CYAN}${x}${TPUT_RESET}' ${TPUT_RET}is not known to distribution${TPUT_RESET}. Keeping it." + run cp -p "${x}" "${x}.installer_backup.${installer_backup_suffix}" else # find it relative filename f="${x/*\/etc\/netdata\//}" @@ -512,20 +566,14 @@ do cp "conf.d/${f}" "${x}.orig" fi - if [ "${BASH_VERSINFO[0]}" -ge "4" ] - then - if [ "${configs_signatures[${md5}]}" = "${f}" ] + if config_signature_matches "${md5}" "${f}" then - # it is a stock version - don't keep it - echo >&2 "File '${x}' is stock version." - else - # edited by user - keep it - echo >&2 "File '${x}' has been edited by user." - cp -p "${x}" "${x}.installer_backup.${installer_backup_suffix}" - fi + # it is a stock version - don't keep it + echo >&2 "File '${TPUT_CYAN}${x}${TPUT_RESET}' is stock version." else - echo >&2 "File '${x}' cannot be check for custom edits." - cp -p "${x}" "${x}.installer_backup.${installer_backup_suffix}" + # edited by user - keep it + echo >&2 "File '${TPUT_CYAN}${x}${TPUT_RESET}' ${TPUT_RED} has been edited by user${TPUT_RESET}. Keeping it." + run cp -p "${x}" "${x}.installer_backup.${installer_backup_suffix}" fi fi @@ -535,194 +583,79 @@ do fi done -echo >&2 "Installing netdata ..." + +# ----------------------------------------------------------------------------- +progress "Install netdata" + run make install || exit 1 -# restore user configurations + +# ----------------------------------------------------------------------------- +progress "Restore user edited netdata configuration files" + for x in $(find "${NETDATA_PREFIX}/etc/netdata/" -name '*.conf' -type f) do if [ -f "${x}.installer_backup.${installer_backup_suffix}" ] then - cp -p "${x}.installer_backup.${installer_backup_suffix}" "${x}" - rm -f "${x}.installer_backup.${installer_backup_suffix}" + run cp -p "${x}.installer_backup.${installer_backup_suffix}" "${x}" && \ + run rm -f "${x}.installer_backup.${installer_backup_suffix}" fi done -echo >&2 "Fixing permissions ..." - -check_cmd() { - which "${1}" >/dev/null 2>&1 && return 0 - command -v "${1}" >/dev/null 2>&1 && return 0 - return 1 -} - -portable_add_user() { - local username="${1}" - - getent passwd "${username}" > /dev/null 2>&1 - [ $? -eq 0 ] && return 0 - - echo >&2 "Adding ${username} user account ..." - - local nologin="$(which nologin 2>/dev/null || command -v nologin 2>/dev/null || echo '/bin/false')" - - # Linux - if check_cmd useradd - then - run useradd -r -g "${username}" -c "${username}" -s "${nologin}" -d / "${username}" && return 0 - fi - - # FreeBSD - if check_cmd pw - then - run pw useradd "${username}" -d / -g "${username}" -s "${nologin}" && return 0 - fi - - # BusyBox - if check_cmd adduser - then - run adduser -D -G "${username}" "${username}" && return 0 - fi - - echo >&2 "Failed to add ${username} user account !" - - return 1 -} - -portable_add_group() { - local groupname="${1}" - - getent group "${groupname}" > /dev/null 2>&1 - [ $? -eq 0 ] && return 0 - - echo >&2 "Adding ${groupname} user group ..." - - # Linux - if check_cmd groupadd - then - run groupadd -r "${groupname}" && return 0 - fi - - # FreeBSD - if check_cmd pw - then - run pw groupadd "${groupname}" && return 0 - fi - - # BusyBox - if check_cmd addgroup - then - run addgroup "${groupname}" && return 0 - fi - - echo >&2 "Failed to add ${groupname} user group !" - return 1 -} - -portable_add_user_to_group() { - local groupname="${1}" username="${2}" - - getent group "${groupname}" > /dev/null 2>&1 - [ $? -ne 0 ] && return 1 - - # find the user is already in the group - local users=$(getent group "${groupname}" | cut -d ':' -f 4) - if [[ ",${users}," =~ ,${username}, ]] - then - # username is already there - return 0 - else - # username is not in group - echo >&2 "Adding ${username} user to the ${groupname} group ..." - - # Linux - if check_cmd usermod - then - run usermod -a -G "${groupname}" "${username}" && return 0 - fi - - # FreeBSD - if check_cmd pw - then - run pw groupmod "${groupname}" -m "${username}" && return 0 - fi - - # BusyBox - if check_cmd addgroup - then - run addgroup "${username}" "${groupname}" && return 0 - fi - echo >&2 "Failed to add user ${username} to group ${groupname} !" - return 1 - fi -} - -iscontainer() { - # man systemd-detect-virt - local cmd=$(which systemd-detect-virt 2>/dev/null || command -v systemd-detect-virt 2>/dev/null) - if [ ! -z "${cmd}" -a -x "${cmd}" ] - then - "${cmd}" --container >/dev/null 2>&1 && return 0 - fi - - # /proc/1/sched exposes the host's pid of our init ! - # http://stackoverflow.com/a/37016302 - local pid=$( cat /proc/1/sched | head -n 1 | { IFS='(),#:' read name pid th threads; echo $pid; } ) - local p=$(( pid + 0 )) - [ ${pid} -ne 1 ] && return 0 - - # lxc sets environment variable 'container' - [ ! -z "${container}" ] && return 0 - - # docker creates /.dockerenv - # http://stackoverflow.com/a/25518345 - [ -f "/.dockerenv" ] && return 0 +# ----------------------------------------------------------------------------- +progress "Fix generated files permissions" - # ubuntu and debian supply /bin/running-in-container - # https://www.apt-browse.org/browse/ubuntu/trusty/main/i386/upstart/1.12.1-0ubuntu4/file/bin/running-in-container - if [ -x "/bin/running-in-container" ] - then - "/bin/running-in-container" >/dev/null 2>&1 && return 0 - fi +run find ./system/ -type f -a \! -name \*.in -a \! -name Makefile\* -a \! -name \*.conf -a \! -name \*.service -a \! -name \*.logrotate -exec chmod 755 {} \; - return 1 -} -run find ./system/ -type f -a \! -name \*.in -a \! -name Makefile\* -a \! -name \*.conf -a \! -name \*.service -a \! -name \*.logrotate -exec chmod 755 {} \; +# ----------------------------------------------------------------------------- +progress "Add user netdata to required user groups" NETDATA_ADDED_TO_DOCKER=0 NETDATA_ADDED_TO_NGINX=0 NETDATA_ADDED_TO_VARNISH=0 NETDATA_ADDED_TO_HAPROXY=0 +NETDATA_ADDED_TO_ADM=0 +NETDATA_ADDED_TO_NSD=0 if [ ${UID} -eq 0 ] then portable_add_group netdata portable_add_user netdata - portable_add_user_to_group docker netdata && NETDATA_ADDED_TO_DOCKER=1 - portable_add_user_to_group nginx netdata && NETDATA_ADDED_TO_NGINX=1 + portable_add_user_to_group docker netdata && NETDATA_ADDED_TO_DOCKER=1 + portable_add_user_to_group nginx netdata && NETDATA_ADDED_TO_NGINX=1 portable_add_user_to_group varnish netdata && NETDATA_ADDED_TO_VARNISH=1 portable_add_user_to_group haproxy netdata && NETDATA_ADDED_TO_HAPROXY=1 + portable_add_user_to_group adm netdata && NETDATA_ADDED_TO_ADM=1 + portable_add_user_to_group nsd netdata && NETDATA_ADDED_TO_NSD=1 + run_ok +else + run_failed "The installer does not run as root." +fi + +# ----------------------------------------------------------------------------- +progress "Install logrotate configuration for netdata" +if [ ${UID} -eq 0 ] + then if [ -d /etc/logrotate.d -a ! -f /etc/logrotate.d/netdata ] then - echo >&2 "Adding netdata logrotate configuration ..." run cp system/netdata.logrotate /etc/logrotate.d/netdata fi if [ -f /etc/logrotate.d/netdata ] then - echo >&2 "Fixing netdata logrotate permissions ..." run chmod 644 /etc/logrotate.d/netdata fi fi # ----------------------------------------------------------------------------- -# load options from the configuration file +progress "Read installation options from netdata.conf" # create an empty config if it does not exist -[ ! -f "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ] && touch "${NETDATA_PREFIX}/etc/netdata/netdata.conf" +[ ! -f "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ] && \ + touch "${NETDATA_PREFIX}/etc/netdata/netdata.conf" # function to extract values from the config file config_option() { @@ -775,17 +708,14 @@ NETDATA_RUN_DIR="${NETDATA_PREFIX}/var/run" # ----------------------------------------------------------------------------- -# prepare the directories +progress "Fix permissions of netdata directories (using user '${NETDATA_USER}')" -# this is needed if NETDATA_PREFIX is not empty if [ ! -d "${NETDATA_RUN_DIR}" ] then - mkdir -p "${NETDATA_RUN_DIR}" || exit 1 + # this is needed if NETDATA_PREFIX is not empty + run mkdir -p "${NETDATA_RUN_DIR}" || exit 1 fi -echo >&2 -echo >&2 "Fixing directories (user: ${NETDATA_USER})..." - # --- conf dir ---- for x in "python.d" "charts.d" "node.d" @@ -832,7 +762,13 @@ run chmod 755 "${NETDATA_LOG_DIR}" if [ ${UID} -eq 0 ] then - run chown "${NETDATA_USER}:root" "${NETDATA_LOG_DIR}" + # find the admin group + admin_group= + test -z "${admin_group}" && getent group root >/dev/null 2>&1 && admin_group="root" + test -z "${admin_group}" && getent group daemon >/dev/null 2>&1 && admin_group="daemon" + test -z "${admin_group}" && admin_group="${NETDATA_USER}" + + run chown "${NETDATA_USER}:${admin_group}" "${NETDATA_LOG_DIR}" run chown -R root "${NETDATA_PREFIX}/usr/libexec/netdata" run find "${NETDATA_PREFIX}/usr/libexec/netdata" -type d -exec chmod 0755 {} \; run find "${NETDATA_PREFIX}/usr/libexec/netdata" -type f -exec chmod 0644 {} \; @@ -842,15 +778,18 @@ if [ ${UID} -eq 0 ] setcap_ret=1 if ! iscontainer then - run setcap cap_dac_read_search,cap_sys_ptrace+ep "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin" - setcap_ret=$? + if [ ! -z "${setcap}" ] + then + run setcap cap_dac_read_search,cap_sys_ptrace+ep "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin" + setcap_ret=$? + fi if [ ${setcap_ret} -eq 0 ] then # if we managed to setcap # but we fail to execute apps.plugin # trigger setuid to root - "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin" -v >/dev/null 2>&1 + "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin" -t >/dev/null 2>&1 setcap_ret=$? fi fi @@ -861,6 +800,13 @@ if [ ${UID} -eq 0 ] run chown root "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin" run chmod 4755 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin" fi + + if [ -f "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/freeipmi.plugin" ] + then + run chown root "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/freeipmi.plugin" + run chmod 4755 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/freeipmi.plugin" + fi + else run chown "${NETDATA_USER}:${NETDATA_USER}" "${NETDATA_LOG_DIR}" run chown -R "${NETDATA_USER}:${NETDATA_USER}" "${NETDATA_PREFIX}/usr/libexec/netdata" @@ -870,33 +816,82 @@ fi # --- fix #1292 bug --- -[ -d "${NETDATA_PREFIX}/usr/libexec" ] && run chmod a+rX "${NETDATA_PREFIX}/usr/libexec" +[ -d "${NETDATA_PREFIX}/usr/libexec" ] && run chmod a+rX "${NETDATA_PREFIX}/usr/libexec" [ -d "${NETDATA_PREFIX}/usr/share/netdata" ] && run chmod a+rX "${NETDATA_PREFIX}/usr/share/netdata" + # ----------------------------------------------------------------------------- -# check if we can re-start netdata +progress "Install netdata at system init" -if [ ${DONOTSTART} -eq 1 ] - then - if [ ! -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ] +installed_init_d=0 +install_non_systemd_init() { + [ "${UID}" != 0 ] && return 1 + + local key="unknown" + if [ -f /etc/os-release ] then - echo >&2 "Generating empty config file in: ${NETDATA_PREFIX}/etc/netdata/netdata.conf" - echo "# Get config from http://127.0.0.1:${NETDATA_PORT}/netdata.conf" >"${NETDATA_PREFIX}/etc/netdata/netdata.conf" + source /etc/os-release || return 1 + key="${ID}-${VERSION_ID}" - if [ "${UID}" -eq 0 ] + elif [ -f /etc/centos-release ] + then + key=$(</etc/centos-release) + fi + + if [ -d /etc/init.d -a ! -f /etc/init.d/netdata ] + then + if [ "${key}" = "gentoo" ] then - chown "${NETDATA_USER}" "${NETDATA_PREFIX}/etc/netdata/netdata.conf" + run cp system/netdata-openrc /etc/init.d/netdata && \ + run chmod 755 /etc/init.d/netdata && \ + run rc-update add netdata default && \ + installed_init_d=1 + + elif [ "${key}" = "ubuntu-12.04" -o "${key}" = "ubuntu-14.04" -o "${key}" = "debian-7" ] + then + run cp system/netdata-lsb /etc/init.d/netdata && \ + run chmod 755 /etc/init.d/netdata && \ + run update-rc.d netdata defaults && \ + run update-rc.d netdata enable && \ + installed_init_d=1 + + elif [ "${key}" = "CentOS release 6.8 (Final)" -o "${key}" = "amzn-2016.09" ] + then + run cp system/netdata-init-d /etc/init.d/netdata && \ + run chmod 755 /etc/init.d/netdata && \ + run chkconfig netdata on && \ + installed_init_d=1 fi - chmod 0644 "${NETDATA_PREFIX}/etc/netdata/netdata.conf" fi - banner "is installed now!" - echo >&2 " enjoy real-time performance and health monitoring..." - exit 0 + + return 0 +} + +if [ "${UID}" -eq 0 ] + then + + if issystemd + then + # systemd is running on this system + + if [ ! -f /etc/systemd/system/netdata.service ] + then + echo >&2 "Installing systemd service..." + run cp system/netdata.service /etc/systemd/system/netdata.service && \ + run systemctl daemon-reload && \ + run systemctl enable netdata + fi + else + install_non_systemd_init + fi fi + # ----------------------------------------------------------------------------- -# stop a running netdata +# check if we can re-start netdata + +started=0 isnetdata() { if [ -d /proc/self ] @@ -946,7 +941,7 @@ stop_all_netdata() { myns="$(readlink /proc/self/ns/pid 2>/dev/null)" - echo >&2 "Stopping a (possibly) running netdata..." + # echo >&2 "Stopping a (possibly) running netdata (namespace '${myns}')..." for p in $(cat "${NETDATA_RUN_DIR}/netdata.pid" 2>/dev/null) \ $(cat /var/run/netdata.pid 2>/dev/null) \ @@ -962,111 +957,25 @@ stop_all_netdata() { done } -# ----------------------------------------------------------------------------- -# check for systemd - -issystemd() { - local pids p myns ns systemctl - - # if the directory /etc/systemd/system does not exit, it is not systemd - [ ! -d /etc/systemd/system ] && return 1 - - # if there is no systemctl command, it is not systemd - systemctl=$(which systemctl 2>/dev/null || command -v systemctl 2>/dev/null) - [ -z "${systemctl}" -o ! -x "${systemctl}" ] && return 1 - - # if pid 1 is systemd, it is systemd - [ "$(basename $(readlink /proc/1/exe) 2>/dev/null)" = "systemd" ] && return 0 - - # if systemd is not running, it is not systemd - pids=$(pidof systemd 2>/dev/null) - [ -z "${pids}" ] && return 1 - - # check if the running systemd processes are not in our namespace - myns="$(readlink /proc/self/ns/pid 2>/dev/null)" - for p in ${pids} - do - ns="$(readlink /proc/${p}/ns/pid 2>/dev/null)" - - # if pid of systemd is in our namespace, it is systemd - [ ! -z "${myns}" && "${myns}" = "${ns}" ] && return 0 - done - - # else, it is not systemd - return 1 -} - -installed_init_d=0 -install_non_systemd_init() { - [ "${UID}" != 0 ] && return 1 - - local key="unknown" - if [ -f /etc/os-release ] - then - source /etc/os-release || return 1 - key="${ID}-${VERSION_ID}" - - elif [ -f /etc/centos-release ] - then - key=$(</etc/centos-release) - fi - - if [ -d /etc/init.d -a ! -f /etc/init.d/netdata ] +if [ ${DONOTSTART} -eq 1 ] + then + if [ ! -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ] then - if [ "${key}" = "gentoo" ] - then - run cp system/netdata-openrc /etc/init.d/netdata && \ - run chmod 755 /etc/init.d/netdata && \ - run rc-update add netdata default && \ - installed_init_d=1 - - elif [ "${key}" = "ubuntu-12.04" -o "${key}" = "ubuntu-14.04" -o "${key}" = "debian-7" ] - then - run cp system/netdata-lsb /etc/init.d/netdata && \ - run chmod 755 /etc/init.d/netdata && \ - run update-rc.d netdata defaults && \ - run update-rc.d netdata enable && \ - installed_init_d=1 + echo "# Get config from http://127.0.0.1:${NETDATA_PORT}/netdata.conf" >"${NETDATA_PREFIX}/etc/netdata/netdata.conf" - elif [ "${key}" = "CentOS release 6.8 (Final)" -o "${key}" = "amzn-2016.09" ] + if [ "${UID}" -eq 0 ] then - run cp system/netdata-init-d /etc/init.d/netdata && \ - run chmod 755 /etc/init.d/netdata && \ - run chkconfig netdata on && \ - installed_init_d=1 + chown "${NETDATA_USER}" "${NETDATA_PREFIX}/etc/netdata/netdata.conf" fi + chmod 0644 "${NETDATA_PREFIX}/etc/netdata/netdata.conf" fi - return 0 -} - -started=0 -if [ "${UID}" -eq 0 ] - then +else - if issystemd - then - # systemd is running on this system + progress "Start netdata" - if [ ! -f /etc/systemd/system/netdata.service ] + if [ "${UID}" -eq 0 ] then - echo >&2 "Installing systemd service..." - run cp system/netdata.service /etc/systemd/system/netdata.service && \ - run systemctl daemon-reload && \ - run systemctl enable netdata - else - service netdata stop - fi - - stop_all_netdata - service netdata restart && started=1 - else - install_non_systemd_init - fi - - if [ ${started} -eq 0 ] - then - # check if we can use the system service service netdata stop stop_all_netdata service netdata restart && started=1 @@ -1075,89 +984,88 @@ if [ "${UID}" -eq 0 ] service netdata start && started=1 fi fi -fi -if [ ${started} -eq 0 ] -then - # still not started... + if [ ${started} -eq 0 ] + then + # still not started... - stop_all_netdata + stop_all_netdata + + echo >&2 "Starting netdata..." + run ${NETDATA_PREFIX}/usr/sbin/netdata -P ${NETDATA_RUN_DIR}/netdata.pid "${@}" + if [ $? -ne 0 ] + then + echo >&2 + echo >&2 "SORRY! FAILED TO START NETDATA!" + exit 1 + else + echo >&2 "OK. NetData Started!" + fi - echo >&2 "Starting netdata..." - run ${NETDATA_PREFIX}/usr/sbin/netdata -P ${NETDATA_RUN_DIR}/netdata.pid "${@}" - if [ $? -ne 0 ] - then echo >&2 - echo >&2 "SORRY! FAILED TO START NETDATA!" - exit 1 - else - echo >&2 "OK. NetData Started!" fi - echo >&2 -fi - -# ----------------------------------------------------------------------------- -# save a config file, if it is not already there - -if [ ! -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ] - then - echo >&2 - echo >&2 "-------------------------------------------------------------------------------" - echo >&2 - echo >&2 "Downloading default configuration from netdata..." - sleep 5 + # ----------------------------------------------------------------------------- + # save a config file, if it is not already there - # remove a possibly obsolete download - [ -f "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" ] && rm "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" + if [ ! -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ] + then + echo >&2 + echo >&2 "-------------------------------------------------------------------------------" + echo >&2 + echo >&2 "Downloading default configuration from netdata..." + sleep 5 - # disable a proxy to get data from the local netdata - export http_proxy= - export https_proxy= + # remove a possibly obsolete download + [ -f "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" ] && rm "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" - # try wget - wget 2>/dev/null -O "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" "http://localhost:${NETDATA_PORT}/netdata.conf" - ret=$? + # disable a proxy to get data from the local netdata + export http_proxy= + export https_proxy= - # try curl - if [ ${ret} -ne 0 -o ! -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" ] - then - curl -s -o "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" "http://localhost:${NETDATA_PORT}/netdata.conf" + # try wget + wget 2>/dev/null -O "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" "http://localhost:${NETDATA_PORT}/netdata.conf" ret=$? - fi - if [ ${ret} -eq 0 -a -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" ] - then - mv "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" "${NETDATA_PREFIX}/etc/netdata/netdata.conf" - echo >&2 "New configuration saved for you to edit at ${NETDATA_PREFIX}/etc/netdata/netdata.conf" + # try curl + if [ ${ret} -ne 0 -o ! -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" ] + then + curl -s -o "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" "http://localhost:${NETDATA_PORT}/netdata.conf" + ret=$? + fi - if [ "${UID}" -eq 0 ] + if [ ${ret} -eq 0 -a -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" ] then - chown "${NETDATA_USER}" "${NETDATA_PREFIX}/etc/netdata/netdata.conf" + mv "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" "${NETDATA_PREFIX}/etc/netdata/netdata.conf" + echo >&2 "New configuration saved for you to edit at ${NETDATA_PREFIX}/etc/netdata/netdata.conf" + + if [ "${UID}" -eq 0 ] + then + chown "${NETDATA_USER}" "${NETDATA_PREFIX}/etc/netdata/netdata.conf" + fi + chmod 0664 "${NETDATA_PREFIX}/etc/netdata/netdata.conf" + else + echo >&2 "Cannnot download configuration from netdata daemon using url 'http://localhost:${NETDATA_PORT}/netdata.conf'" + [ -f "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" ] && rm "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" fi - chmod 0664 "${NETDATA_PREFIX}/etc/netdata/netdata.conf" - else - echo >&2 "Cannnot download configuration from netdata daemon using url 'http://localhost:${NETDATA_PORT}/netdata.conf'" - [ -f "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" ] && rm "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" fi fi # ----------------------------------------------------------------------------- -# Check for KSM +progress "Check KSM (kernel memory deduper)" ksm_is_available_but_disabled() { cat <<KSM1 -------------------------------------------------------------------------------- -Memory de-duplication instructions +${TPUT_BOLD}Memory de-duplication instructions${TPUT_RESET} You have kernel memory de-duper (called Kernel Same-page Merging, or KSM) available, but it is not currently enabled. To enable it run: -echo 1 >/sys/kernel/mm/ksm/run -echo 1000 >/sys/kernel/mm/ksm/sleep_millisecs + ${TPUT_YELLOW}${TPUT_BOLD}echo 1 >/sys/kernel/mm/ksm/run${TPUT_RESET} + ${TPUT_YELLOW}${TPUT_BOLD}echo 1000 >/sys/kernel/mm/ksm/sleep_millisecs${TPUT_RESET} If you enable it, you will save 40-60% of netdata memory. @@ -1167,8 +1075,7 @@ KSM1 ksm_is_not_available() { cat <<KSM2 -------------------------------------------------------------------------------- -Memory de-duplication not present in your kernel +${TPUT_BOLD}Memory de-duplication not present in your kernel${TPUT_RESET} It seems you do not have kernel memory de-duper (called Kernel Same-page Merging, or KSM) available. @@ -1191,14 +1098,13 @@ else fi # ----------------------------------------------------------------------------- -# Check for version.txt +progress "Check version.txt" if [ ! -s web/version.txt ] then cat <<VERMSG -------------------------------------------------------------------------------- -Version update check warning +${TPUT_BOLD}Version update check warning${TPUT_RESET} The way you downloaded netdata, we cannot find its version. This means the Update check on the dashboard, will not work. @@ -1212,14 +1118,13 @@ VERMSG fi # ----------------------------------------------------------------------------- -# apps.plugin warning +progress "Check apps.plugin" if [ "${UID}" -ne 0 ] then cat <<SETUID_WARNING -------------------------------------------------------------------------------- -apps.plugin needs privileges +${TPUT_BOLD}apps.plugin needs privileges${TPUT_RESET} Since you have installed netdata as a normal user, to have apps.plugin collect all the needed data, you have to give it the access rights it needs, by running @@ -1227,14 +1132,14 @@ either of the following sets of commands: To run apps.plugin with escalated capabilities: - sudo chown root:${NETDATA_USER} "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin" - sudo chmod 0750 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin" - sudo setcap cap_dac_read_search,cap_sys_ptrace+ep "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin" + ${TPUT_YELLOW}${TPUT_BOLD}sudo chown root:${NETDATA_USER} \"${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin\"${TPUT_RESET} + ${TPUT_YELLOW}${TPUT_BOLD}sudo chmod 0750 \"${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin\"${TPUT_RESET} + ${TPUT_YELLOW}${TPUT_BOLD}sudo setcap cap_dac_read_search,cap_sys_ptrace+ep \"${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin\"${TPUT_RESET} or, to run apps.plugin as root: - sudo chown root "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin" - sudo chmod 4755 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin" + ${TPUT_YELLOW}${TPUT_BOLD}sudo chown root \"${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin\"${TPUT_RESET} + ${TPUT_YELLOW}${TPUT_BOLD}sudo chmod 4755 \"${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin\"${TPUT_RESET} apps.plugin is performing a hard-coded function of data collection for all running processes. It cannot be instructed from the netdata daemon to perform @@ -1244,7 +1149,7 @@ SETUID_WARNING fi # ----------------------------------------------------------------------------- -# Keep un-install info +progress "Generate netdata-uninstaller.sh" cat >netdata-uninstaller.sh <<UNINSTALL #!/usr/bin/env bash @@ -1366,37 +1271,49 @@ if [ $? -eq 0 -a "${NETDATA_ADDED_TO_HAPROXY}" = "1" ] echo " gpasswd -d netdata haproxy" fi +getent group adm > /dev/null +if [ $? -eq 0 -a "${NETDATA_ADDED_TO_ADM}" = "1" ] + then + echo + echo "You may also want to remove the netdata user from the adm group" + echo "by running:" + echo " gpasswd -d netdata adm" +fi + +getent group nsd > /dev/null +if [ $? -eq 0 -a "${NETDATA_ADDED_TO_NSD}" = "1" ] + then + echo + echo "You may also want to remove the netdata user from the nsd group" + echo "by running:" + echo " gpasswd -d netdata nsd" +fi + UNINSTALL chmod 750 netdata-uninstaller.sh # ----------------------------------------------------------------------------- +progress "Basic netdata instructions" cat <<END - -------------------------------------------------------------------------------- - -OK. NetData is installed and it is running. - -------------------------------------------------------------------------------- - -By default netdata listens on all IPs on port ${NETDATA_PORT}, +netdata by default listens on all IPs on port ${NETDATA_PORT}, so you can access it with: -http://this.machine.ip:${NETDATA_PORT}/ + ${TPUT_CYAN}${TPUT_BOLD}http://this.machine.ip:${NETDATA_PORT}/${TPUT_RESET} To stop netdata, just kill it, with: - killall netdata + ${TPUT_YELLOW}${TPUT_BOLD}killall netdata${TPUT_RESET} To start it, just run it: - ${NETDATA_PREFIX}/usr/sbin/netdata + ${TPUT_YELLOW}${TPUT_BOLD}${NETDATA_PREFIX}/usr/sbin/netdata${TPUT_RESET} END -echo >&2 "Uninstall script generated: ./netdata-uninstaller.sh" +echo >&2 "Uninstall script generated: ${TPUT_RED}${TPUT_BOLD}./netdata-uninstaller.sh${TPUT_RESET}" if [ -d .git ] then @@ -1408,6 +1325,7 @@ force=0 export PATH="\${PATH}:${PATH}" export CFLAGS="${CFLAGS}" +export NETDATA_CONFIGURE_OPTIONS="${NETDATA_CONFIGURE_OPTIONS}" INSTALL_UID="${UID}" if [ "\${INSTALL_UID}" != "\${UID}" ] @@ -1436,7 +1354,7 @@ if [ -t 2 ] else # we are headless # create a temporary file for the log - tmp=\$(mktemp /tmp/netdata-updater-log-XXXXXX.log) + tmp=\$(mktemp /tmp/netdata-updater.log.XXXXXX) # open fd 3 and send it to tmp exec 3>\${tmp} fi @@ -1512,13 +1430,40 @@ update && exit 0 REINSTALL chmod 755 netdata-updater.sh.new mv -f netdata-updater.sh.new netdata-updater.sh - echo >&2 "Update script generated : ./netdata-updater.sh" + echo >&2 "Update script generated : ${TPUT_GREEN}${TPUT_BOLD}./netdata-updater.sh${TPUT_RESET}" + echo >&2 + echo >&2 "${TPUT_DIM}${TPUT_BOLD}netdata-updater.sh${TPUT_RESET}${TPUT_DIM} can work from cron. It will trigger an email from cron" + echo >&2 "only if it fails (it does not print anything if it can update netdata).${TPUT_RESET}" + if [ "${UID}" -eq "0" ] + then + if [ -d "/etc/cron.daily" -a ! -f "/etc/cron.daily/netdata-updater.sh" ] + then + echo >&2 "${TPUT_DIM}Run this to automatically check and install netdata updates once per day:${TPUT_RESET}" + echo >&2 + echo >&2 "${TPUT_YELLOW}${TPUT_BOLD}ln -s ${PWD}/netdata-updater.sh /etc/cron.daily/netdata-updater.sh${TPUT_RESET}" + elif [ -d "/etc/periodic/daily" -a ! -f "/etc/periodic/daily/netdata-updater" ] + then + echo >&2 "${TPUT_DIM}Run this to automatically check and install netdata updates once per day:${TPUT_RESET}" + echo >&2 + echo >&2 "${TPUT_YELLOW}${TPUT_BOLD}ln -s ${PWD}/netdata-updater.sh /etc/periodic/daily/netdata-updater${TPUT_RESET}" + fi + fi elif [ -f "netdata-updater.sh" ] then rm "netdata-updater.sh" fi -banner "is installed and running now!" +# ----------------------------------------------------------------------------- +echo >&2 +progress "We are done!" + +if [ ${started} -eq 1 ] + then + netdata_banner "is installed and running now!" +else + netdata_banner "is installed now!" +fi + echo >&2 " enjoy real-time performance and health monitoring..." echo >&2 exit 0 |