]> arthur.barton.de Git - netdata.git/blob - netdata.start
support new dir structure
[netdata.git] / netdata.start
1 #!/bin/bash
2
3 base="`dirname "$0"`"
4
5 if [ ! -d "$base" -o ! -f "$base/netdata.c" -o ! -d "$base/web" ]
6 then
7         echo >&2 "Cannot find my home directory '${base}'."
8         exit 1
9 fi
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
14
15 # how many entries to keep in memory
16 NETDATA_CONFIG_INTERNAL_HISTORY_LINES=3600
17
18 # the user to run netdata under
19 NETDATA_CONFIG_USER=nobody
20
21 # set to 1, to enable debugging
22 NETDATA_CONFIG_DEBUG=1
23
24 # our port
25 NETDATA_CONFIG_PORT=19999
26
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"
31
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
42
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"
46
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
50
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 ]
54         then
55                 mkdir $x || exit 1
56         fi
57 done
58
59 echo "Compiling netdata (debug=$NETDATA_CONFIG_DEBUG)"
60 if [ $NETDATA_CONFIG_DEBUG -eq 1 ]
61 then
62         ulimit -c unlimited
63         cd src || exit 1
64         make || exit 1
65         cd plugins.d || exit 1
66         make || exit 1
67         debug_opts="-df 0xfffffadf"
68 else
69         cd src || exit 1
70         make final=1 || exit 1
71         cd plugins.d || exit 1
72         make final=1 || exit 1
73         debug_opts="-df 0x00000000"
74 fi
75 cd ../../ || exit 1
76 mv src/netdata ./ || exit 1
77 mv src/plugins.d/apps.plugin plugins.d/ || exit 1
78
79 echo "Stopping a (possibly) running netdata..."
80 ret=0
81 count=0
82 while [ $ret -eq 0 ]
83 do
84         if [ $count -gt 10 ]
85         then
86                 echo >&2 "Cannot stop the running netdata."
87                 exit 1
88         fi
89         count=$((count + 1))
90         killall netdata 2>/dev/null
91         ret=$?
92         test $ret -eq 0 && sleep 1
93 done
94
95 if [ "$USER" = "root" -a ! -z "$NETDATA_CONFIG_USER" ]
96 then
97         for x in "$NETDATA_CONFIG_WEB_DIR" "$NETDATA_CONFIG_CONF_DIR" "$NETDATA_CONFIG_CACHE_DIR" "$NETDATA_CONFIG_LOG_DIR"
98         do
99                 echo "Changing ownership of web files in $x to $NETDATA_CONFIG_USER"
100                 chown -R "$NETDATA_CONFIG_USER" "$x" || exit 1
101                 chmod 0775 "$x" $NETDATA_CONFIG_CONF_DIR log cache || exit 1
102         done
103 fi
104
105 if [ ! "$USER" = "root" ]
106 then
107         echo >&2 "WARNING: NOT RUNNING AS ROOT - CANNOT SWITCH TO USER $NETDATA_CONFIG_USER"
108         echo >&2 "WARNING: MAKE SURE FILES IN web/ ARE OWNED BY $USER - or it will not work"
109 fi
110
111 echo "Starting netdata..."
112 if [ -f $NETDATA_CONFIG_CONF_DIR/netdata.conf ]
113 then
114         `pwd`/netdata
115 else
116         touch $NETDATA_CONFIG_CONF_DIR/netdata.conf
117
118         if [ "$USER" = "root" ]
119         then
120                 `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
121         else
122                 `pwd`/netdata $debug_opts -t $NETDATA_CONFIG_INTERNAL_UPDATE_EVERY -l $NETDATA_CONFIG_INTERNAL_HISTORY_LINES -p $NETDATA_CONFIG_PORT || exit 1
123         fi
124
125         sleep 2
126         wget 2>/dev/null -O $NETDATA_CONFIG_CONF_DIR/netdata.conf.new http://localhost:$NETDATA_CONFIG_PORT/netdata.conf
127         mv $NETDATA_CONFIG_CONF_DIR/netdata.conf.new $NETDATA_CONFIG_CONF_DIR/netdata.conf
128
129         echo "Hit http://127.0.0.1:$NETDATA_CONFIG_PORT/ from your browser."
130         echo "You can edit config options in file $NETDATA_CONFIG_CONF_DIR/netdata.conf"
131 fi
132
133 echo
134 echo "All Done."
135 echo