]> arthur.barton.de Git - netdata.git/blob - netdata-installer.sh
aesthetic changes in installer
[netdata.git] / netdata-installer.sh
1 #!/bin/bash
2
3 # reload the user profile
4 [ -f /etc/profile ] && . /etc/profile
5
6 # fix PKG_CHECK_MODULES error
7 if [ -d /usr/share/aclocal ]
8 then
9         ACLOCAL_PATH=${ACLOCAL_PATH-/usr/share/aclocal}
10         export ACLOCAL_PATH
11 fi
12
13 LC_ALL=C
14 umask 022
15
16 # you can set CFLAGS before running installer
17 CFLAGS="${CFLAGS--O3}"
18
19 # keep a log of this command
20 printf "\n# " >>netdata-installer.log
21 date >>netdata-installer.log
22 printf "CFLAGS=\"%s\" " "${CFLAGS}" >>netdata-installer.log
23 printf "%q " "$0" "${@}" >>netdata-installer.log
24 printf "\n" >>netdata-installer.log
25
26 ME="$0"
27 DONOTSTART=0
28 DONOTWAIT=0
29 NETDATA_PREFIX=
30 ZLIB_IS_HERE=0
31
32 usage() {
33         cat <<-USAGE
34
35         ${ME} <installer options>
36
37         Valid <installer options> are:
38
39            --install /PATH/TO/INSTALL
40
41                         If your give: --install /opt
42                         netdata will be installed in /opt/netdata
43
44            --dont-start-it
45
46                         Do not (re)start netdata.
47                         Just install it.
48
49            --dont-wait
50
51                         Do not wait for the user to press ENTER.
52                         Start immediately building it.
53
54            --zlib-is-really-here
55
56                         If you get errors about missing zlib,
57                         but you know it is available,
58                         you have a broken pkg-config.
59                         Use this option to allow it continue
60                         without checking pkg-config.
61
62         Netdata will by default be compiled with gcc optimization -O3
63         If you need to pass different CFLAGS, use something like this:
64
65           CFLAGS="<gcc options>" ${ME} <installer options>
66
67         For the installer to complete successfully, you will need
68         these packages installed:
69
70            gcc make autoconf automake pkg-config zlib1g-dev (or zlib-devel)
71            uuid-dev (or libuuid-devel)
72
73         For the plugins, you will at least need:
74
75            curl nodejs
76
77 USAGE
78 }
79
80 while [ ! -z "${1}" ]
81 do
82         if [ "$1" = "--install" ]
83                 then
84                 NETDATA_PREFIX="${2}/netdata"
85                 shift 2
86         elif [ "$1" = "--zlib-is-really-here" ]
87                 then
88                 ZLIB_IS_HERE=1
89                 shift 1
90         elif [ "$1" = "--dont-start-it" ]
91                 then
92                 DONOTSTART=1
93                 shift 1
94         elif [ "$1" = "--dont-wait" ]
95                 then
96                 DONOTWAIT=1
97                 shift 1
98         elif [ "$1" = "--help" -o "$1" = "-h" ]
99                 then
100                 usage
101                 exit 1
102         else
103                 echo >&2
104                 echo >&2 "ERROR:"
105                 echo >&2 "I cannot understand option '$1'."
106                 usage
107                 exit 1
108         fi
109 done
110
111 cat <<-BANNER
112
113         Welcome to netdata!
114         Nice to see you are giving it a try!
115
116         You are about to build and install netdata to your system.
117
118         It will be installed at these locations:
119
120           - the daemon    at ${NETDATA_PREFIX}/usr/sbin/netdata
121           - config files  at ${NETDATA_PREFIX}/etc/netdata
122           - web files     at ${NETDATA_PREFIX}/usr/share/netdata
123           - plugins       at ${NETDATA_PREFIX}/usr/libexec/netdata
124           - cache files   at ${NETDATA_PREFIX}/var/cache/netdata
125           - db files      at ${NETDATA_PREFIX}/var/lib/netdata
126           - log files     at ${NETDATA_PREFIX}/var/log/netdata
127           - pid file      at ${NETDATA_PREFIX}/var/run
128
129         This installer allows you to change the installation path.
130         Press Control-C and run the same command with --help for help.
131
132 BANNER
133
134 if [ "${UID}" -ne 0 ]
135         then
136         if [ -z "${NETDATA_PREFIX}" ]
137                 then
138                 cat <<-NONROOTNOPREFIX
139
140                 Sorry! This will fail!
141
142                 You are attempting to install netdata as non-root, but you plan to install it
143                 in system paths.
144
145                 Please set an installation prefix, like this:
146
147                         $0 ${@} --install /tmp
148
149                 or, run the installer as root:
150
151                         sudo $0 ${@}
152
153                 We suggest to install it as root, or certain data collectors will not be able
154                 to work. Netdata drops root privileges when running. So, if you plan to keep
155                 it, install it as root to get the full functionality.
156
157 NONROOTNOPREFIX
158                 exit 1
159
160         else
161                 cat <<-NONROOT
162
163                 IMPORTANT:
164                 You are about to install netdata as a non-root user.
165                 Netdata will work, but a few data collection modules that
166                 require root access will fail.
167
168                 If you installing permanently on your system, run the
169                 installer like this:
170
171                         sudo $0 ${@}
172
173 NONROOT
174         fi
175 fi
176
177 have_autotools=
178 if [ "$(type autoreconf 2> /dev/null)" ]
179 then
180         autoconf_maj_min() {
181                 local maj min IFS=.-
182
183                 maj=$1
184                 min=$2
185
186                 set -- $(autoreconf -V | sed -ne '1s/.* \([^ ]*\)$/\1/p')
187                 eval $maj=\$1 $min=\$2
188         }
189         autoconf_maj_min AMAJ AMIN
190
191         if [ "$AMAJ" -gt 2 ]
192         then
193                 have_autotools=Y
194         elif [ "$AMAJ" -eq 2 -a "$AMIN" -ge 60 ]
195         then
196                 have_autotools=Y
197         else
198                 echo "Found autotools $AMAJ.$AMIN"
199         fi
200 else
201         echo "No autotools found"
202 fi
203
204 if [ ! "$have_autotools" ]
205 then
206         if [ -f configure ]
207         then
208                 echo "Will skip autoreconf step"
209         else
210                 cat <<-"EOF"
211
212                 -------------------------------------------------------------------------------
213                 autotools 2.60 or later is required
214
215                 Sorry, you do not seem to have autotools 2.60 or later, which is
216                 required to build from the git sources of netdata.
217
218                 You can either install a suitable version of autotools and automake
219                 or download a netdata package which does not have these dependencies.
220
221                 Source packages where autotools have already been run are available
222                 here:
223                            https://firehol.org/download/netdata/
224
225                 The unsigned/master folder tracks the head of the git tree and released
226                 packages are also available.
227 EOF
228                 exit 1
229         fi
230 fi
231
232 if [ ${DONOTWAIT} -eq 0 ]
233         then
234         if [ ! -z "${NETDATA_PREFIX}" ]
235                 then
236                 read -p "Press ENTER to build and install netdata to '${NETDATA_PREFIX}' > "
237         else
238                 read -p "Press ENTER to build and install netdata to your system > "
239         fi
240 fi
241
242 build_error() {
243         cat <<-EOF
244
245         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
246
247         Sorry! NetData failed to build...
248
249         You many need to check these:
250
251         1. The package uuid-dev (or libuuid-devel) has to be installed.
252
253         2. The package zlib1g-dev (or zlib-devel) has to be installed.
254
255            If your system cannot find ZLIB, although it is installed
256            run me with the option:  --zlib-is-really-here
257
258         3. You need basic build tools installed, like:
259
260            gcc make autoconf automake pkg-config
261
262            Autoconf version 2.60 or higher is required.
263
264         If you still cannot get it to build, ask for help at github:
265
266            https://github.com/firehol/netdata/issues
267
268
269 EOF
270         trap - EXIT
271         exit 1
272 }
273
274 run() {
275         printf >>netdata-installer.log "# "
276         printf >>netdata-installer.log "%q " "${@}"
277         printf >>netdata-installer.log " ... "
278
279         printf >&2 "\n"
280         printf >&2 ":-----------------------------------------------------------------------------\n"
281         printf >&2 "Running command:\n"
282         printf >&2 "\n"
283         printf >&2 "%q " "${@}"
284         printf >&2 "\n"
285
286         "${@}"
287
288         local ret=$?
289         if [ ${ret} -ne 0 ]
290                 then
291                 printf >>netdata-installer.log "FAILED!\n"
292         else
293                 printf >>netdata-installer.log "OK\n"
294         fi
295
296         return ${ret}
297 }
298
299 if [ ${ZLIB_IS_HERE} -eq 1 ]
300         then
301         shift
302         echo >&2 "ok, assuming zlib is really installed."
303         export ZLIB_CFLAGS=" "
304         export ZLIB_LIBS="-lz"
305 fi
306
307 trap build_error EXIT
308
309 if [ "$have_autotools" ]
310 then
311         run ./autogen.sh || exit 1
312 fi
313
314 run ./configure \
315         --prefix="${NETDATA_PREFIX}/usr" \
316         --sysconfdir="${NETDATA_PREFIX}/etc" \
317         --localstatedir="${NETDATA_PREFIX}/var" \
318         --with-zlib --with-math --with-user=netdata \
319         CFLAGS="${CFLAGS}" || exit 1
320
321 # remove the build_error hook
322 trap - EXIT
323
324 if [ -f src/netdata ]
325         then
326         echo >&2 "Cleaning a possibly old compilation ..."
327         run make clean
328 fi
329
330 echo >&2 "Compiling netdata ..."
331 run make || exit 1
332
333 # backup user configurations
334 for x in apps_groups.conf charts.d.conf
335 do
336         if [ -f "${NETDATA_PREFIX}/etc/netdata/${x}" ]
337                 then
338                 cp -p "${NETDATA_PREFIX}/etc/netdata/${x}" "${NETDATA_PREFIX}/etc/netdata/${x}.installer_backup"
339         fi
340 done
341
342 echo >&2 "Installing netdata ..."
343 run make install || exit 1
344
345 # restore user configurations
346 for x in apps_groups.conf charts.d.conf
347 do
348         if [ -f "${NETDATA_PREFIX}/etc/netdata/${x}.installer_backup" ]
349                 then
350                 cp -p "${NETDATA_PREFIX}/etc/netdata/${x}.installer_backup" "${NETDATA_PREFIX}/etc/netdata/${x}"
351         fi
352 done
353
354 NETDATA_ADDED_TO_DOCKER=0
355 if [ ${UID} -eq 0 ]
356         then
357         getent group netdata > /dev/null
358         if [ $? -ne 0 ]
359                 then
360                 echo >&2 "Adding netdata user group ..."
361                 run groupadd -r netdata
362         fi
363
364         getent passwd netdata > /dev/null
365         if [ $? -ne 0 ]
366                 then
367                 echo >&2 "Adding netdata user account ..."
368                 run useradd -r -g netdata -c netdata -s /sbin/nologin -d / netdata
369         fi
370
371         getent group docker > /dev/null
372         if [ $? -eq 0 ]
373                 then
374                 # find the users in the docker group
375                 docker=$(getent group docker | cut -d ':' -f 4)
376                 if [[ ",${docker}," =~ ,netdata, ]]
377                         then
378                         # netdata is already there
379                         :
380                 else
381                         # netdata is not in docker group
382                         echo >&2 "Adding netdata user to the docker group (needed to get container names) ..."
383                         run usermod -a -G docker netdata
384                 fi
385                 # let the uninstall script know
386                 NETDATA_ADDED_TO_DOCKER=1
387         fi
388 fi
389
390
391 # -----------------------------------------------------------------------------
392 # load options from the configuration file
393
394 # create an empty config if it does not exist
395 [ ! -f "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ] && touch "${NETDATA_PREFIX}/etc/netdata/netdata.conf"
396
397 # function to extract values from the config file
398 config_option() {
399         local key="${1}" value="${2}" line=
400
401         if [ -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ]
402                 then
403                 line="$( grep "^[[:space:]]*${key}[[:space:]]*=[[:space:]]*" "${NETDATA_PREFIX}/etc/netdata/netdata.conf" | head -n 1 )"
404                 [ ! -z "${line}" ] && value="$( echo "${line}" | cut -d '=' -f 2 | sed -e "s/^[[:space:]]\+//g" -e "s/[[:space:]]\+$//g" )"
405         fi
406
407         echo "${value}"
408 }
409
410 # user
411 defuser="netdata"
412 [ ! "${UID}" = "0" ] && defuser="${USER}"
413 NETDATA_USER="$( config_option "run as user" "${defuser}" )"
414
415 NETDATA_WEB_USER="$( config_option "web files owner" "${defuser}" )"
416 NETDATA_WEB_GROUP="$( config_option "web files group" "${NETDATA_WEB_USER}" )"
417
418 # debug flags
419 defdebug=0
420 NETDATA_DEBUG="$( config_option "debug flags" ${defdebug} )"
421
422 # port
423 defport=19999
424 NETDATA_PORT="$( config_option "port" ${defport} )"
425
426 # directories
427 NETDATA_LIB_DIR="$( config_option "lib directory" "${NETDATA_PREFIX}/var/lib/netdata" )"
428 NETDATA_CACHE_DIR="$( config_option "cache directory" "${NETDATA_PREFIX}/var/cache/netdata" )"
429 NETDATA_WEB_DIR="$( config_option "web files directory" "${NETDATA_PREFIX}/usr/share/netdata/web" )"
430 NETDATA_LOG_DIR="$( config_option "log directory" "${NETDATA_PREFIX}/var/log/netdata" )"
431 NETDATA_CONF_DIR="$( config_option "config directory" "${NETDATA_PREFIX}/etc/netdata" )"
432 NETDATA_BIND="$( config_option "bind socket to IP" "*" )"
433 NETDATA_RUN_DIR="${NETDATA_PREFIX}/var/run"
434
435
436 # -----------------------------------------------------------------------------
437 # prepare the directories
438
439 # this is needed if NETDATA_PREFIX is not empty
440 if [ ! -d "${NETDATA_RUN_DIR}" ]
441         then
442         mkdir -p "${NETDATA_RUN_DIR}" || exit 1
443 fi
444
445 echo >&2 "Fixing directories (user: ${NETDATA_USER})..."
446 for x in "${NETDATA_WEB_DIR}" "${NETDATA_CONF_DIR}" "${NETDATA_CACHE_DIR}" "${NETDATA_LOG_DIR}" "${NETDATA_LIB_DIR}"
447 do
448         if [ ! -d "${x}" ]
449                 then
450                 echo >&2 "Creating directory '${x}'"
451                 run mkdir -p "${x}" || exit 1
452         fi
453
454         if [ ${UID} -eq 0 ]
455                 then
456                 if [ "${x}" = "${NETDATA_WEB_DIR}" ]
457                         then
458                         run chown -R "${NETDATA_WEB_USER}:${NETDATA_WEB_GROUP}" "${x}" || echo >&2 "WARNING: Cannot change the ownership of the files in directory ${x} to ${NETDATA_WEB_USER}:${NETDATA_WEB_GROUP}..."
459                 else
460                         run chown -R "${NETDATA_USER}:${NETDATA_USER}" "${x}" || echo >&2 "WARNING: Cannot change the ownership of the files in directory ${x} to ${NETDATA_USER}..."
461                 fi
462         fi
463
464         run chmod 0755 "${x}" || echo >&2 "WARNING: Cannot change the permissions of the directory ${x} to 0755..."
465 done
466
467 if [ ${UID} -eq 0 ]
468         then
469         run chown root "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
470         run chmod 0755 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
471         run setcap cap_dac_read_search,cap_sys_ptrace+ep "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
472         if [ $? -ne 0 ]
473                 then
474                 # fix apps.plugin to be setuid to root
475                 run chown root "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
476                 run chmod 4755 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
477         fi
478 fi
479
480 # -----------------------------------------------------------------------------
481 # check if we can re-start netdata
482
483 if [ ${DONOTSTART} -eq 1 ]
484         then
485         if [ ! -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ]
486                 then
487                 echo >&2 "Generating empty config file in: ${NETDATA_PREFIX}/etc/netdata/netdata.conf"
488                 echo "# Get config from http://127.0.0.1:${NETDATA_PORT}/netdata.conf" >"${NETDATA_PREFIX}/etc/netdata/netdata.conf"
489
490                 if [ "${UID}" -eq 0 ]
491                         then
492                         chown "${NETDATA_USER}" "${NETDATA_PREFIX}/etc/netdata/netdata.conf"
493                 fi
494                 chmod 0664 "${NETDATA_PREFIX}/etc/netdata/netdata.conf"
495         fi
496         echo >&2 "OK. It is now installed and ready."
497         exit 0
498 fi
499
500 # -----------------------------------------------------------------------------
501 # stop a running netdata
502
503 isnetdata() {
504         [ -z "$1" -o ! -f "/proc/$1/stat" ] && return 1
505         [ "$(cat "/proc/$1/stat" | cut -d '(' -f 2 | cut -d ')' -f 1)" = "netdata" ] && return 0
506         return 1
507 }
508
509
510 echo >&2
511 echo >&2 "-------------------------------------------------------------------------------"
512 echo >&2
513 printf >&2 "Stopping a (possibly) running netdata..."
514 ret=0
515 count=0
516 while [ $ret -eq 0 ]
517 do
518         if [ $count -gt 30 ]
519                 then
520                 echo >&2 "Cannot stop the running netdata."
521                 exit 1
522         fi
523
524         count=$((count + 1))
525
526         pid=$(cat "${NETDATA_RUN_DIR}/netdata.pid" 2>/dev/null)
527         # backwards compatibility
528         [ -z "${pid}" ] && pid=$(cat /var/run/netdata.pid 2>/dev/null)
529         [ -z "${pid}" ] && pid=$(cat /var/run/netdata/netdata.pid 2>/dev/null)
530         
531         isnetdata $pid || pid=
532         if [ ! -z "${pid}" ]
533                 then
534                 run kill $pid 2>/dev/null
535                 ret=$?
536         else
537                 run killall netdata 2>/dev/null
538                 ret=$?
539         fi
540
541         test $ret -eq 0 && printf >&2 "." && sleep 2
542 done
543 echo >&2
544 echo >&2
545
546
547 # -----------------------------------------------------------------------------
548 # run netdata
549
550 echo >&2 "Starting netdata..."
551 run ${NETDATA_PREFIX}/usr/sbin/netdata -pidfile ${NETDATA_RUN_DIR}/netdata.pid "${@}"
552
553 if [ $? -ne 0 ]
554         then
555         echo >&2
556         echo >&2 "SORRY! FAILED TO START NETDATA!"
557         exit 1
558 else
559         echo >&2 "OK. NetData Started!"
560 fi
561 echo >&2
562
563
564 # -----------------------------------------------------------------------------
565 # save a config file, if it is not already there
566
567 if [ ! -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ]
568         then
569         echo >&2
570         echo >&2 "-------------------------------------------------------------------------------"
571         echo >&2
572         echo >&2 "Downloading default configuration from netdata..."
573         sleep 5
574
575         # remove a possibly obsolete download
576         [ -f "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" ] && rm "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new"
577
578         # disable a proxy to get data from the local netdata
579         export http_proxy=
580         export https_proxy=
581
582         # try wget
583         wget 2>/dev/null -O "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" "http://localhost:${NETDATA_PORT}/netdata.conf"
584         ret=$?
585
586         # try curl
587         if [ $ret -ne 0 -o ! -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" ]
588                 then
589                 curl -s -o "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" "http://localhost:${NETDATA_PORT}/netdata.conf"
590                 ret=$?
591         fi
592
593         if [ $ret -eq 0 -a -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" ]
594                 then
595                 mv "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" "${NETDATA_PREFIX}/etc/netdata/netdata.conf"
596                 echo >&2 "New configuration saved for you to edit at ${NETDATA_PREFIX}/etc/netdata/netdata.conf"
597
598                 if [ "${UID}" -eq 0 ]
599                         then
600                         chown "${NETDATA_USER}" "${NETDATA_PREFIX}/etc/netdata/netdata.conf"
601                 fi
602                 chmod 0664 "${NETDATA_PREFIX}/etc/netdata/netdata.conf"
603         else
604                 echo >&2 "Cannnot download configuration from netdata daemon using url 'http://localhost:${NETDATA_PORT}/netdata.conf'"
605                 [ -f "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new" ] && rm "${NETDATA_PREFIX}/etc/netdata/netdata.conf.new"
606         fi
607 fi
608
609 # -----------------------------------------------------------------------------
610 # Check for KSM
611
612 ksm_is_available_but_disabled() {
613         cat <<-KSM1
614
615         -------------------------------------------------------------------------------
616         Memory de-duplication instructions
617
618         I see you have kernel memory de-duper (called Kernel Same-page Merging,
619         or KSM) available, but it is not currently enabled.
620
621         To enable it run:
622
623         echo 1 >/sys/kernel/mm/ksm/run
624         echo 1000 >/sys/kernel/mm/ksm/sleep_millisecs
625
626         If you enable it, you will save 40-60% of netdata memory.
627
628 KSM1
629 }
630
631 ksm_is_not_available() {
632         cat <<-KSM2
633
634         -------------------------------------------------------------------------------
635         Memory de-duplication not present in your kernel
636
637         It seems you do not have kernel memory de-duper (called Kernel Same-page
638         Merging, or KSM) available.
639
640         To enable it, you need a kernel built with CONFIG_KSM=y
641
642         If you can have it, you will save 40-60% of netdata memory.
643
644 KSM2
645 }
646
647 if [ -f "/sys/kernel/mm/ksm/run" ]
648         then
649         if [ $(cat "/sys/kernel/mm/ksm/run") != "1" ]
650                 then
651                 ksm_is_available_but_disabled
652         fi
653 else
654         ksm_is_not_available
655 fi
656
657 # -----------------------------------------------------------------------------
658 # Check for version.txt
659
660 if [ ! -s web/version.txt ]
661         then
662         cat <<-VERMSG
663
664         -------------------------------------------------------------------------------
665         Version update check warning
666
667         The way you downloaded netdata, we cannot find its version. This means the
668         Update check on the dashboard, will not work.
669
670         If you want to have version update check, please re-install it
671         following the procedure in:
672
673         https://github.com/firehol/netdata/wiki/Installation
674
675 VERMSG
676 fi
677
678 # -----------------------------------------------------------------------------
679 # apps.plugin warning
680
681 if [ "${UID}" -ne 0 ]
682         then
683         cat <<-SETUID_WARNING
684
685         -------------------------------------------------------------------------------
686         apps.plugin needs privileges
687
688         Since you have installed netdata as a normal user, to have apps.plugin collect
689         all the needed data, you have to give it the access rights it needs, by running
690         either of the following sets of commands:
691
692         To run apps.plugin with escalated capabilities:
693
694                 sudo chown root:${NETDATA_USER} "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
695                 sudo chmod 0750 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
696                 sudo setcap cap_dac_read_search,cap_sys_ptrace+ep "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
697
698         or, to run apps.plugin as root:
699
700                 sudo chown root "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
701                 sudo chmod 4755 "${NETDATA_PREFIX}/usr/libexec/netdata/plugins.d/apps.plugin"
702
703         These commands allow apps.plugin to run as root.
704
705         apps.plugin is performing a hard-coded function of data collection for all
706         running processes. It cannot be instructed from the netdata daemon to perform
707         any task, so it is pretty safe to do this.
708
709 SETUID_WARNING
710 fi
711
712 # -----------------------------------------------------------------------------
713 # Keep un-install info
714
715 cat >netdata-uninstaller.sh <<-UNINSTALL
716         #!/bin/bash
717
718         # this script will uninstall netdata
719
720         if [ "\$1" != "--force" ]
721                 then
722                 echo >&2 "This script will REMOVE netdata from your system."
723                 echo >&2 "Run it again with --force to do it."
724                 exit 1
725         fi
726
727         echo >&2 "Stopping a possibly running netdata..."
728         killall netdata
729         sleep 2
730
731         deletedir() {
732                 if [ ! -z "\$1" -a -d "\$1" ]
733                         then
734                         echo
735                         echo "Deleting directory '\$1' ..."
736                         rm -I -R "\$1"
737                 fi
738         }
739
740         if [ ! -z "${NETDATA_PREFIX}" -a -d "${NETDATA_PREFIX}" ]
741                 then
742                 # installation prefix was given
743
744                 deletedir "${NETDATA_PREFIX}"
745
746         else
747                 # installation prefix was NOT given
748
749                 if [ -f "${NETDATA_PREFIX}/usr/sbin/netdata" ]
750                         then
751                         echo "Deleting ${NETDATA_PREFIX}/usr/sbin/netdata ..."
752                         rm -i "${NETDATA_PREFIX}/usr/sbin/netdata"
753                 fi
754
755                 deletedir "${NETDATA_PREFIX}/etc/netdata"
756                 deletedir "${NETDATA_PREFIX}/usr/share/netdata"
757                 deletedir "${NETDATA_PREFIX}/usr/libexec/netdata"
758                 deletedir "${NETDATA_PREFIX}/var/lib/netdata"
759                 deletedir "${NETDATA_PREFIX}/var/cache/netdata"
760                 deletedir "${NETDATA_PREFIX}/var/log/netdata"
761         fi
762
763         getent passwd netdata > /dev/null
764         if [ $? -eq 0 ]
765                 then
766                 echo
767                 echo "You may also want to remove the user netdata"
768                 echo "by running:"
769                 echo "   userdel netdata"
770         fi
771
772         getent group netdata > /dev/null
773         if [ $? -eq 0 ]
774                 then
775                 echo
776                 echo "You may also want to remove the group netdata"
777                 echo "by running:"
778                 echo "   groupdel netdata"
779         fi
780
781         getent group docker > /dev/null
782         if [ $? -eq 0 -a "${NETDATA_ADDED_TO_DOCKER}" = "1" ]
783                 then
784                 echo
785                 echo "You may also want to remove the netdata user from the docker group"
786                 echo "by running:"
787                 echo "   gpasswd -d netdata docker"
788         fi
789
790 UNINSTALL
791 chmod 750 netdata-uninstaller.sh
792
793 # -----------------------------------------------------------------------------
794
795 if [ "${NETDATA_BIND}" = "*" ]
796         then
797         access="localhost"
798 else
799         access="${NETDATA_BIND}"
800 fi
801
802 cat <<-END
803
804
805         -------------------------------------------------------------------------------
806
807         OK. NetData is installed and it is running (listening to ${NETDATA_BIND}:${NETDATA_PORT}).
808
809         -------------------------------------------------------------------------------
810
811
812         Hit http://${access}:${NETDATA_PORT}/ from your browser.
813
814         To stop netdata, just kill it, with:
815
816           killall netdata
817
818         To start it, just run it:
819
820           ${NETDATA_PREFIX}/usr/sbin/netdata
821
822
823         Enjoy!
824
825 END
826 echo >&2 "Uninstall script generated: ./netdata-uninstaller.sh"