start netdata on install too
Costa Tsaousis (ktsaou) committed
Apr 1, 2017 at 22:12 UTC
e9a3df888cb516ac22af8555ee96b9652be9660d
4 files changed
+205
-196
installer/functions.sh
+168
-11
@@ -399,24 +399,181 @@ install_non_systemd_init() {
399
}
400
401
install_netdata_service() {
402
- if issystemd
402
+ if [ "${UID}" -eq 0 ]
403
then
404
- # systemd is running on this system
405
- if [ ! -f /etc/systemd/system/netdata.service ]
404
+ if issystemd
405
then
407
- echo >&2 "Installing systemd service..."
408
- run cp system/netdata.service /etc/systemd/system/netdata.service && \
409
- run systemctl daemon-reload && \
410
- run systemctl enable netdata && \
406
+ # systemd is running on this system
407
+ if [ ! -f /etc/systemd/system/netdata.service ]
408
+ then
409
+ echo >&2 "Installing systemd service..."
410
+ run cp system/netdata.service /etc/systemd/system/netdata.service && \
411
+ run systemctl daemon-reload && \
412
+ run systemctl enable netdata && \
413
+ return 0
414
+ else
415
+ echo >&2 "file '/etc/systemd/system/netdata.service' already exists."
416
return 0
417
+ fi
418
else
413
- echo >&2 "file '/etc/systemd/system/netdata.service' already exists."
414
- return 0
419
+ install_non_systemd_init
420
+ return $?
421
fi
416
- else
417
- install_non_systemd_init
422
+ fi
423
+
424
+ return 1
425
+}
426
+
427
+
428
+# -----------------------------------------------------------------------------
429
+# stop netdata
430
+
431
+pidisnetdata() {
432
+ if [ -d /proc/self ]
433
+ then
434
+ [ -z "$1" -o ! -f "/proc/$1/stat" ] && return 1
435
+ [ "$(cat "/proc/$1/stat" | cut -d '(' -f 2 | cut -d ')' -f 1)" = "netdata" ] && return 0
436
+ return 1
437
+ fi
438
+ return 0
439
+}
440
+
441
+stop_netdata_on_pid() {
442
+ local pid="${1}" ret=0 count=0
443
+
444
+ pidisnetdata ${pid} || return 0
445
+
446
+ printf >&2 "Stopping netdata on pid ${pid} ..."
447
+ while [ ! -z "$pid" -a ${ret} -eq 0 ]
448
+ do
449
+ if [ ${count} -gt 45 ]
450
+ then
451
+ echo >&2 "Cannot stop the running netdata on pid ${pid}."
452
+ return 1
453
+ fi
454
+
455
+ count=$(( count + 1 ))
456
+
457
+ run kill ${pid} 2>/dev/null
458
+ ret=$?
459
+
460
+ test ${ret} -eq 0 && printf >&2 "." && sleep 2
461
+ done
462
+
463
+ echo >&2
464
+ if [ ${ret} -eq 0 ]
465
+ then
466
+ echo >&2 "SORRY! CANNOT STOP netdata ON PID ${pid} !"
467
+ return 1
468
+ fi
469
+
470
+ echo >&2 "netdata on pid ${pid} stopped."
471
+ return 0
472
+}
473
+
474
+stop_all_netdata() {
475
+ local p myns ns
476
+
477
+ myns="$(readlink /proc/self/ns/pid 2>/dev/null)"
478
+
479
+ # echo >&2 "Stopping a (possibly) running netdata (namespace '${myns}')..."
480
+
481
+ for p in \
482
+ $(cat /var/run/netdata.pid 2>/dev/null) \
483
+ $(cat /var/run/netdata/netdata.pid 2>/dev/null) \
484
+ $(pidof netdata 2>/dev/null)
485
+ do
486
+ ns="$(readlink /proc/${p}/ns/pid 2>/dev/null)"
487
+
488
+ if [ -z "${myns}" -o -z "${ns}" -o "${myns}" = "${ns}" ]
489
+ then
490
+ stop_netdata_on_pid ${p}
491
+ fi
492
+ done
493
+}
494
+
495
+# -----------------------------------------------------------------------------
496
+# restart netdata
497
+
498
+restart_netdata() {
499
+ local netdata="${1}"
500
+ shift
501
+
502
+ local started=0
503
+
504
+ progress "Start netdata"
505
+
506
+ if [ "${UID}" -eq 0 ]
507
+ then
508
+ service netdata stop
509
+ stop_all_netdata
510
+ service netdata restart && started=1
511
+
512
+ if [ ${started} -eq 0 ]
513
+ then
514
+ service netdata start && started=1
515
+ fi
516
+ fi
517
+
518
+ if [ ${started} -eq 0 ]
519
+ then
520
+ # still not started...
521
+
522
+ stop_all_netdata
523
+ run "${netdata}" "${@}"
524
return $?
525
fi
526
527
+ return 0
528
+}
529
+
530
+# -----------------------------------------------------------------------------
531
+# install netdata logrotate
532
+
533
+install_netdata_logrotate() {
534
+ if [ ${UID} -eq 0 ]
535
+ then
536
+ if [ -d /etc/logrotate.d ]
537
+ then
538
+ if [ ! -f /etc/logrotate.d/netdata ]
539
+ then
540
+ run cp system/netdata.logrotate /etc/logrotate.d/netdata
541
+ fi
542
+
543
+ if [ -f /etc/logrotate.d/netdata ]
544
+ then
545
+ run chmod 644 /etc/logrotate.d/netdata
546
+ fi
547
+
548
+ return 0
549
+ fi
550
+ fi
551
+
552
+ return 1
553
+}
554
+
555
+# -----------------------------------------------------------------------------
556
+# add netdata user and group
557
+
558
+NETDATA_ADDED_TO_DOCKER=0
559
+NETDATA_ADDED_TO_NGINX=0
560
+NETDATA_ADDED_TO_VARNISH=0
561
+NETDATA_ADDED_TO_HAPROXY=0
562
+NETDATA_ADDED_TO_ADM=0
563
+NETDATA_ADDED_TO_NSD=0
564
+add_netdata_user_and_group() {
565
+ if [ ${UID} -eq 0 ]
566
+ then
567
+ portable_add_group netdata || return 1
568
+ portable_add_user netdata || return 1
569
+ portable_add_user_to_group docker netdata && NETDATA_ADDED_TO_DOCKER=1
570
+ portable_add_user_to_group nginx netdata && NETDATA_ADDED_TO_NGINX=1
571
+ portable_add_user_to_group varnish netdata && NETDATA_ADDED_TO_VARNISH=1
572
+ portable_add_user_to_group haproxy netdata && NETDATA_ADDED_TO_HAPROXY=1
573
+ portable_add_user_to_group adm netdata && NETDATA_ADDED_TO_ADM=1
574
+ portable_add_user_to_group nsd netdata && NETDATA_ADDED_TO_NSD=1
575
+ return 0
576
+ fi
577
+
578
return 1
579
}
makeself/install-or-update.sh
+19
-49
@@ -2,6 +2,13 @@
2
3
. $(dirname "${0}")/functions.sh
4
5
+export LC_ALL=C
6
+umask 002
7
+
8
+# Be nice on production environments
9
+renice 19 $$ >/dev/null 2>/dev/null
10
+
11
+
12
# -----------------------------------------------------------------------------
13
progress "Checking new configuration files"
14
@@ -53,63 +60,19 @@ run rm -rf etc/netdata.new
60
# -----------------------------------------------------------------------------
61
progress "Add user netdata to required user groups"
62
56
-NETDATA_USER=root
57
-NETDATA_GROUP=root
58
-NETDATA_ADDED_TO_DOCKER=0
59
-NETDATA_ADDED_TO_NGINX=0
60
-NETDATA_ADDED_TO_VARNISH=0
61
-NETDATA_ADDED_TO_HAPROXY=0
62
-NETDATA_ADDED_TO_ADM=0
63
-NETDATA_ADDED_TO_NSD=0
64
-if [ ${UID} -eq 0 ]
65
- then
66
- portable_add_group netdata && NETDATA_USER=netdata
67
- portable_add_user netdata && NETDATA_GROUP=netdata
68
- portable_add_user_to_group docker netdata && NETDATA_ADDED_TO_DOCKER=1
69
- portable_add_user_to_group nginx netdata && NETDATA_ADDED_TO_NGINX=1
70
- portable_add_user_to_group varnish netdata && NETDATA_ADDED_TO_VARNISH=1
71
- portable_add_user_to_group haproxy netdata && NETDATA_ADDED_TO_HAPROXY=1
72
- portable_add_user_to_group adm netdata && NETDATA_ADDED_TO_ADM=1
73
- portable_add_user_to_group nsd netdata && NETDATA_ADDED_TO_NSD=1
74
- run_ok
75
-else
76
- run_failed "The installer does not run as root."
77
-fi
63
+add_netdata_user_and_group || run_failed "The installer does not run as root."
64
65
66
# -----------------------------------------------------------------------------
67
progress "Install logrotate configuration for netdata"
68
83
-if [ ${UID} -eq 0 ]
84
- then
85
- if [ -d /etc/logrotate.d ]
86
- then
87
- if [ ! -f /etc/logrotate.d/netdata ]
88
- then
89
- run cp system/netdata.logrotate /etc/logrotate.d/netdata
90
- fi
91
-
92
- if [ -f /etc/logrotate.d/netdata ]
93
- then
94
- run chmod 644 /etc/logrotate.d/netdata
95
- fi
96
- else
97
- run_failed "logrotate dir /etc/logrotate.d is not available."
98
- fi
99
-else
100
- run_failed "The installer does not run as root."
101
-fi
69
+install_netdata_logrotate || run_failed "Cannot install logrotate file for netdata."
70
71
72
# -----------------------------------------------------------------------------
73
progress "Install netdata at system init"
74
107
-if [ "${UID}" -eq 0 ]
108
- then
109
- install_netdata_service
110
-else
111
- run_failed "The installer does not run as root."
112
-fi
75
+install_netdata_service || run_failed "Cannot install netdata init service."
76
77
78
# -----------------------------------------------------------------------------
@@ -152,7 +115,6 @@ dir_should_be_link . var/log/netdata netdata-logs
115
progress "fix permissions"
116
117
run chmod g+rx,o+rx /opt
155
-run chmod g+rx,o+rx /opt/netdata
118
run chown -R ${NETDATA_USER}:${NETDATA_GROUP} /opt/netdata
119
120
@@ -172,4 +134,12 @@ done
134
135
136
# -----------------------------------------------------------------------------
175
-netdata_banner "is installed now!"
137
+progress "starting netdata"
138
+
139
+restart_netdata
140
+if [ $? -eq 0 ]
141
+ then
142
+ netdata_banner "is installed and running now!"
143
+else
144
+ netdata_banner "is installed now!"
145
+fi
makeself/jobs/99-makeself.install.sh
+4
-4
@@ -25,13 +25,15 @@ cp \
25
# -----------------------------------------------------------------------------
26
# create a wrapper to start our netdata with a modified path
27
28
+mkdir -p "${NETDATA_INSTALL_PATH}/bin/srv"
29
+
30
mv "${NETDATA_INSTALL_PATH}/bin/netdata" \
29
- "${NETDATA_INSTALL_PATH}/bin/netdata.bin" || exit 1
31
+ "${NETDATA_INSTALL_PATH}/bin/srv/netdata" || exit 1
32
33
cat >"${NETDATA_INSTALL_PATH}/bin/netdata" <<EOF
34
#!${NETDATA_INSTALL_PATH}/bin/bash
35
export PATH="${NETDATA_INSTALL_PATH}/bin:\${PATH}"
34
-exec "${NETDATA_INSTALL_PATH}/bin/netdata.bin" "\${@}"
36
+exec "${NETDATA_INSTALL_PATH}/bin/srv/netdata" "\${@}"
37
EOF
38
chmod 755 "${NETDATA_INSTALL_PATH}/bin/netdata"
39
@@ -69,8 +71,6 @@ rm "${NETDATA_INSTALL_PATH}/sbin" \
71
--notemp \
72
--needroot \
73
--target "${NETDATA_INSTALL_PATH}" \
72
- --tar-extra "--overwrite" \
73
- --keep-umask \
74
--header "${NETDATA_MAKESELF_PATH}/makeself-header.sh" \
75
--lsm "${NETDATA_MAKESELF_PATH}/makeself.lsm" \
76
--license "${NETDATA_MAKESELF_PATH}/makeself-license.txt" \
netdata-installer.sh
+14
-132
@@ -43,7 +43,7 @@ then
43
export ACLOCAL_PATH
44
fi
45
46
-LC_ALL=C
46
+export LC_ALL=C
47
umask 002
48
49
# Be nice on production environments
@@ -612,42 +612,13 @@ run find ./system/ -type f -a \! -name \*.in -a \! -name Makefile\* -a \! -name
612
# -----------------------------------------------------------------------------
613
progress "Add user netdata to required user groups"
614
615
-NETDATA_ADDED_TO_DOCKER=0
616
-NETDATA_ADDED_TO_NGINX=0
617
-NETDATA_ADDED_TO_VARNISH=0
618
-NETDATA_ADDED_TO_HAPROXY=0
619
-NETDATA_ADDED_TO_ADM=0
620
-NETDATA_ADDED_TO_NSD=0
621
-if [ ${UID} -eq 0 ]
622
- then
623
- portable_add_group netdata
624
- portable_add_user netdata
625
- portable_add_user_to_group docker netdata && NETDATA_ADDED_TO_DOCKER=1
626
- portable_add_user_to_group nginx netdata && NETDATA_ADDED_TO_NGINX=1
627
- portable_add_user_to_group varnish netdata && NETDATA_ADDED_TO_VARNISH=1
628
- portable_add_user_to_group haproxy netdata && NETDATA_ADDED_TO_HAPROXY=1
629
- portable_add_user_to_group adm netdata && NETDATA_ADDED_TO_ADM=1
630
- portable_add_user_to_group nsd netdata && NETDATA_ADDED_TO_NSD=1
631
- run_ok
632
-else
633
- run_failed "The installer does not run as root."
634
-fi
615
+add_netdata_user_and_group || run_failed "The installer does not run as root."
616
+
617
618
# -----------------------------------------------------------------------------
619
progress "Install logrotate configuration for netdata"
620
639
-if [ ${UID} -eq 0 ]
640
- then
641
- if [ -d /etc/logrotate.d -a ! -f /etc/logrotate.d/netdata ]
642
- then
643
- run cp system/netdata.logrotate /etc/logrotate.d/netdata
644
- fi
645
-
646
- if [ -f /etc/logrotate.d/netdata ]
647
- then
648
- run chmod 644 /etc/logrotate.d/netdata
649
- fi
650
-fi
621
+install_netdata_logrotate
622
623
624
# -----------------------------------------------------------------------------
@@ -824,81 +795,13 @@ fi
795
# -----------------------------------------------------------------------------
796
progress "Install netdata at system init"
797
827
-if [ "${UID}" -eq 0 ]
828
- then
829
- install_netdata_service
830
-fi
798
+install_netdata_service || run_failed "Cannot install netdata init service."
799
800
801
# -----------------------------------------------------------------------------
802
# check if we can re-start netdata
803
804
started=0
837
-
838
-isnetdata() {
839
- if [ -d /proc/self ]
840
- then
841
- [ -z "$1" -o ! -f "/proc/$1/stat" ] && return 1
842
- [ "$(cat "/proc/$1/stat" | cut -d '(' -f 2 | cut -d ')' -f 1)" = "netdata" ] && return 0
843
- return 1
844
- fi
845
- return 0
846
-}
847
-
848
-stop_netdata_on_pid() {
849
- local pid="${1}" ret=0 count=0
850
-
851
- isnetdata ${pid} || return 0
852
-
853
- printf >&2 "Stopping netdata on pid ${pid} ..."
854
- while [ ! -z "$pid" -a ${ret} -eq 0 ]
855
- do
856
- if [ ${count} -gt 45 ]
857
- then
858
- echo >&2 "Cannot stop the running netdata on pid ${pid}."
859
- return 1
860
- fi
861
-
862
- count=$(( count + 1 ))
863
-
864
- run kill ${pid} 2>/dev/null
865
- ret=$?
866
-
867
- test ${ret} -eq 0 && printf >&2 "." && sleep 2
868
- done
869
-
870
- echo >&2
871
- if [ ${ret} -eq 0 ]
872
- then
873
- echo >&2 "SORRY! CANNOT STOP netdata ON PID ${pid} !"
874
- return 1
875
- fi
876
-
877
- echo >&2 "netdata on pid ${pid} stopped."
878
- return 0
879
-}
880
-
881
-stop_all_netdata() {
882
- local p myns ns
883
-
884
- myns="$(readlink /proc/self/ns/pid 2>/dev/null)"
885
-
886
- # echo >&2 "Stopping a (possibly) running netdata (namespace '${myns}')..."
887
-
888
- for p in $(cat "${NETDATA_RUN_DIR}/netdata.pid" 2>/dev/null) \
889
- $(cat /var/run/netdata.pid 2>/dev/null) \
890
- $(cat /var/run/netdata/netdata.pid 2>/dev/null) \
891
- $(pidof netdata 2>/dev/null)
892
- do
893
- ns="$(readlink /proc/${p}/ns/pid 2>/dev/null)"
894
-
895
- if [ -z "${myns}" -o -z "${ns}" -o "${myns}" = "${ns}" ]
896
- then
897
- stop_netdata_on_pid ${p}
898
- fi
899
- done
900
-}
901
-
805
if [ ${DONOTSTART} -eq 1 ]
806
then
807
if [ ! -s "${NETDATA_PREFIX}/etc/netdata/netdata.conf" ]
@@ -913,40 +816,19 @@ if [ ${DONOTSTART} -eq 1 ]
816
fi
817
818
else
916
-
917
- progress "Start netdata"
918
-
919
- if [ "${UID}" -eq 0 ]
920
- then
921
- service netdata stop
922
- stop_all_netdata
923
- service netdata restart && started=1
924
- if [ ${started} -eq 0 ]
819
+ restart_netdata ${NETDATA_PREFIX}/usr/sbin/netdata "${@}"
820
+ if [ $? -ne 0 ]
821
then
926
- service netdata start && started=1
927
- fi
928
- fi
929
-
930
- if [ ${started} -eq 0 ]
931
- then
932
- # still not started...
933
-
934
- stop_all_netdata
935
-
936
- echo >&2 "Starting netdata..."
937
- run ${NETDATA_PREFIX}/usr/sbin/netdata -P ${NETDATA_RUN_DIR}/netdata.pid "${@}"
938
- if [ $? -ne 0 ]
939
- then
940
- echo >&2
941
- echo >&2 "SORRY! FAILED TO START NETDATA!"
942
- exit 1
943
- else
944
- echo >&2 "OK. NetData Started!"
945
- fi
946
-
822
echo >&2
823
+ echo >&2 "SORRY! FAILED TO START NETDATA!"
824
+ echo >&2
825
+ exit 1
826
fi
827
828
+ started=1
829
+ echo >&2 "OK. NetData Started!"
830
+ echo >&2
831
+
832
# -----------------------------------------------------------------------------
833
# save a config file, if it is not already there
834