@cryptotaxi247 / netdata-1 / commits / f18acffe5

re-factored start script

Costa Tsaousis (ktsaou) committed Oct 14, 2015 at 00:41 UTC f18acffe59da724a4ef5cd0650b803af8be6f40e
1 file changed +89 -80
netdata.start
+89 -80
@@ -2,125 +2,134 @@
2
3 base="`dirname "$0"`"
4
5 -if [ ! -d "$base" -o ! -d "$base/web" ]
5 +if [ ! -d "${base}" ]
6 then
7 echo >&2 "Cannot find my home directory '${base}'."
8 exit 1
9 fi
10 -cd "$base" || exit 1
10 +cd "${base}" || exit 1
11
12 -# the detail of the data that will be kept in netdata
13 -NETDATA_CONFIG_INTERNAL_UPDATE_EVERY=1
12
15 -# how many entries to keep in memory
16 -NETDATA_CONFIG_INTERNAL_HISTORY_LINES=3600
13 +# -----------------------------------------------------------------------------
14 +# load options from the configuration file
15
18 -# the user to run netdata under
19 -NETDATA_CONFIG_USER=nobody
16 +config_option() {
17 + local key="${1}" value="${2}" line=
18
21 -# set to 1, to enable debugging
22 -NETDATA_CONFIG_DEBUG=0
19 + if [ -f "conf.d/netdata.conf" ]
20 + then
21 + line="$( grep "^[[:space:]]*${key}[[:space:]]*=[[:space:]]*" "conf.d/netdata.conf" | head -n 1 )"
22 + [ ! -z "${line}" ] && value="$( echo "${line}" | cut -d '=' -f 2 | sed -e "s/^[[:space:]]\+//g" -e "s/[[:space:]]\+$//g" )"
23 + fi
24
24 -# our port
25 -NETDATA_CONFIG_PORT=19999
25 + echo "${value}"
26 +}
27
27 -NETDATA_CONFIG_CONF_DIR="conf.d"
28 -NETDATA_CONFIG_WEB_DIR="web"
29 -NETDATA_CONFIG_CACHE_DIR="cache"
30 -NETDATA_CONFIG_LOG_DIR="log"
28 +# user
29 +defuser="nobody"
30 +[ ! "${UID}" = "0" ] && defuser="${USER}"
31 +NETDATA_USER="$( config_option "run as user" "${defuser}" )"
32
32 -if [ -f $NETDATA_CONFIG_CONF_DIR/netdata.conf ]
33 -then
34 - # find if debug is enabled in the config
35 - df=`grep "debug flags = " $NETDATA_CONFIG_CONF_DIR/netdata.conf | tail -n 1 | cut -d '=' -f 2 | sed s"/ //g"`
36 - if [ -z "$df" -o "$df" = "0x00000000" -o $((df + 1 - 1)) -eq 0 ]
37 - then
38 - NETDATA_CONFIG_DEBUG=0
39 - else
40 - NETDATA_CONFIG_DEBUG=1
41 - fi
33 +# debug flags
34 +defdebug=0
35 +NETDATA_DEBUG="$( config_option "debug flags" ${defdebug} )"
36
43 - # find the user to run as
44 - x="`grep 'run as user = ' $NETDATA_CONFIG_CONF_DIR/netdata.conf | head -n 1 | cut -d '=' -f 2 | sed s"/ //g"`"
45 - test ! -z "$x" && NETDATA_CONFIG_USER="$x"
37 +# port
38 +defport=19999
39 +NETDATA_PORT="$( config_option "port" ${defport} )"
40
47 - x="`grep 'web files directory = ' $NETDATA_CONFIG_CONF_DIR/netdata.conf | head -n 1 | cut -d '=' -f 2 | sed -e s"/^ \+//g" -e s"/ \+$//g"`"
48 - test ! -z "$x" && NETDATA_CONFIG_WEB_DIR="$x"
49 -fi
41 +# directories
42 +NETDATA_CACHE_DIR="$( config_option "database directory" "cache" )"
43 +NETDATA_WEB_DIR="$( config_option "web files directory" "web" )"
44 +NETDATA_LOG_DIR="log"
45 +NETDATA_CONF_DIR="conf.d"
46
51 -for x in "$NETDATA_CONFIG_WEB_DIR" "$NETDATA_CONFIG_CONF_DIR" "$NETDATA_CONFIG_CACHE_DIR" "$NETDATA_CONFIG_LOG_DIR"
52 -do
53 - if [ ! -d $x ]
47 +
48 +# -----------------------------------------------------------------------------
49 +# compile netdata
50 +
51 +echo >&2 "Compiling netdata (debug flags = $NETDATA_DEBUG)..."
52 +if [ $[ NETDATA_DEBUG ] -ne 0 ]
53 then
55 - mkdir $x || exit 1
56 - fi
57 -done
54 + make install debug=1 || exit 1 # this installs in the current directory
55
59 -echo "Compiling netdata (debug=$NETDATA_CONFIG_DEBUG)"
60 -if [ $NETDATA_CONFIG_DEBUG -eq 1 ]
61 -then
56 + # let netdata core dump if it crashes
57 ulimit -c unlimited
63 - make install debug=1 || exit 1 # this installs in the current directory
64 - debug_opts="-df 0xfffffadf"
58 +
59 else
60 make install || exit 1 # this installs in the current directory
67 - debug_opts="-df 0x00000000"
61 fi
62
70 -echo "Stopping a (possibly) running netdata..."
63 +
64 +# -----------------------------------------------------------------------------
65 +# prepare the directories
66 +
67 +echo >&2 "Fixing directory permissions for user ${NETDATA_USER}..."
68 +for x in "${NETDATA_WEB_DIR}" "${NETDATA_CONF_DIR}" "${NETDATA_CACHE_DIR}" "${NETDATA_LOG_DIR}"
69 +do
70 + if [ ! -d "${x}" ]
71 + then
72 + mkdir "${x}" || exit 1
73 + fi
74 + chown -R "${NETDATA_USER}" "${x}" || echo >&2 "WARNING: Cannot change the ownership of the files in directory ${x} to ${NETDATA_USER}..."
75 + chmod 0775 "${x}" "${x}" || echo >&2 "WARNING: Cannot change the permissions of the directory ${x} to 0755..."
76 +done
77 +
78 +
79 +# -----------------------------------------------------------------------------
80 +# stop a running netdata
81 +
82 +printf >&2 "Stopping a (possibly) running netdata..."
83 ret=0
84 count=0
85 while [ $ret -eq 0 ]
86 do
75 - if [ $count -gt 10 ]
76 - then
87 + if [ $count -gt 15 ]
88 + then
89 echo >&2 "Cannot stop the running netdata."
90 exit 1
91 fi
92 +
93 count=$((count + 1))
94 killall netdata 2>/dev/null
95 ret=$?
83 - test $ret -eq 0 && sleep 1
96 + test $ret -eq 0 && printf >&2 "." && sleep 2
97 done
98 +echo >&2
99
86 -if [ "$UID" = "0" -a ! -z "$NETDATA_CONFIG_USER" ]
87 -then
88 - for x in "$NETDATA_CONFIG_WEB_DIR" "$NETDATA_CONFIG_CONF_DIR" "$NETDATA_CONFIG_CACHE_DIR" "$NETDATA_CONFIG_LOG_DIR"
89 - do
90 - echo "Changing ownership of web files in $x to $NETDATA_CONFIG_USER"
91 - chown -R "$NETDATA_CONFIG_USER" "$x" || exit 1
92 - chmod 0775 "$x" $NETDATA_CONFIG_CONF_DIR log cache || exit 1
93 - done
94 -fi
100
96 -if [ ! "$UID" = "0" ]
97 -then
98 - echo >&2 "WARNING: NOT RUNNING AS ROOT - CANNOT SWITCH TO USER $NETDATA_CONFIG_USER"
99 - echo >&2 "WARNING: MAKE SURE FILES IN web/ ARE OWNED BY $USER - or it will not work"
101 +# -----------------------------------------------------------------------------
102 +# run netdata
103 +
104 +echo >&2 "Starting netdata..."
105 +`pwd`/netdata "${@}"
106 +
107 +if [ $? -ne 0 ]
108 + then
109 + echo >&2
110 + echo >&2 "SORRY! FAILED TO START NETDATA!"
111 + exit 1
112 fi
113
102 -echo "Starting netdata..."
103 -if [ -f $NETDATA_CONFIG_CONF_DIR/netdata.conf ]
104 -then
105 - `pwd`/netdata
106 -else
107 - touch $NETDATA_CONFIG_CONF_DIR/netdata.conf
114
109 - if [ "$USER" = "root" ]
115 +# -----------------------------------------------------------------------------
116 +# save a config file, if it is not already there
117 +
118 +if [ ! -f conf.d/netdata.conf ]
119 then
111 - `pwd`/netdata $debug_opts -u $NETDATA_CONFIG_USER -t $NETDATA_CONFIG_INTERNAL_UPDATE_EVERY -l $NETDATA_CONFIG_INTERNAL_HISTORY_LINES -p $NETDATA_CONFIG_PORT || exit 1
120 + sleep 5
121 + wget 2>/dev/null -O conf.d/netdata.conf.new "http://localhost:${NETDATA_PORT}/netdata.conf"
122 + if [ $? -eq 0 -a -s conf.d/netdata.conf.new ]
123 + then
124 + mv conf.d/netdata.conf.new conf.d/netdata.conf
125 + echo >&2 "New configuration saved for you to edit at conf.d/netdata.conf"
126 else
113 - `pwd`/netdata $debug_opts -t $NETDATA_CONFIG_INTERNAL_UPDATE_EVERY -l $NETDATA_CONFIG_INTERNAL_HISTORY_LINES -p $NETDATA_CONFIG_PORT || exit 1
127 + rm conf.d/netdata.conf.new
128 fi
115 -
116 - sleep 2
117 - wget 2>/dev/null -O $NETDATA_CONFIG_CONF_DIR/netdata.conf.new http://localhost:$NETDATA_CONFIG_PORT/netdata.conf
118 - mv $NETDATA_CONFIG_CONF_DIR/netdata.conf.new $NETDATA_CONFIG_CONF_DIR/netdata.conf
119 -
120 - echo "Hit http://127.0.0.1:$NETDATA_CONFIG_PORT/ from your browser."
121 - echo "You can edit config options in file $NETDATA_CONFIG_CONF_DIR/netdata.conf"
129 fi
130
124 -echo
125 -echo "All Done."
126 -echo
131 +echo >&2
132 +echo >&2 "OK. NetData started! Hit http://localhost:${NETDATA_PORT}/ from your browser."
133 +echo >&2
134 +echo >&2 "Enjoy..."
135 +echo >&2