#!/bin/bash base="`dirname "$0"`" if [ ! -d "$base" -o ! -f "$base/netdata.c" -o ! -d "$base/web" ] then echo >&2 "Cannot find my home directory '${base}'." exit 1 fi cd "$base" || exit 1 # the detail of the data that will be kept in netdata NETDATA_CONFIG_INTERNAL_UPDATE_EVERY=1 # how many entries to keep in memory NETDATA_CONFIG_INTERNAL_HISTORY_LINES=3600 # the user to run netdata under NETDATA_CONFIG_USER=nobody # set to 1, to enable debugging NETDATA_CONFIG_DEBUG=0 # our port NETDATA_CONFIG_PORT=19999 NETDATA_CONFIG_CONF_DIR="conf.d" NETDATA_CONFIG_WEB_DIR="web" NETDATA_CONFIG_CACHE_DIR="cache" NETDATA_CONFIG_LOG_DIR="log" if [ -f $NETDATA_CONFIG_CONF_DIR/netdata.conf ] then # find if debug is enabled in the config df=`grep "debug flags = " $NETDATA_CONFIG_CONF_DIR/netdata.conf | tail -n 1 | cut -d '=' -f 2 | sed s"/ //g"` if [ -z "$df" -o "$df" = "0x00000000" -o $((df + 1 - 1)) -eq 0 ] then NETDATA_CONFIG_DEBUG=0 else NETDATA_CONFIG_DEBUG=1 fi # find the user to run as NETDATA_CONFIG_USER="`grep 'run as user = ' $NETDATA_CONFIG_CONF_DIR/netdata.conf | head -n 1 | cut -d '=' -f 2 | sed s"/ //g"`" NETDATA_CONFIG_WEB_DIR="`grep 'web files directory = ' $NETDATA_CONFIG_CONF_DIR/netdata.conf | head -n 1 | cut -d '=' -f 2 | sed -e s"/^ \+//g" -e s"/ \+$//g"`" fi for x in "$NETDATA_CONFIG_WEB_DIR" "$NETDATA_CONFIG_CONF_DIR" "$NETDATA_CONFIG_CACHE_DIR" "$NETDATA_CONFIG_LOG_DIR" do if [ ! -d $x ] then mkdir $x || exit 1 fi done echo "Compiling netdata (debug=$NETDATA_CONFIG_DEBUG)" if [ $NETDATA_CONFIG_DEBUG -eq 1 ] then ulimit -c unlimited make debug=1 || exit 1 debug_opts="-df 0xfffffadf" else make || exit 1 debug_opts="-df 0x00000000" fi echo "Stopping a (possibly) running netdata..." ret=0 count=0 while [ $ret -eq 0 ] do if [ $count -gt 10 ] then echo >&2 "Cannot stop the running netdata." exit 1 fi count=$((count + 1)) killall netdata 2>/dev/null ret=$? test $ret -eq 0 && sleep 1 done if [ "$USER" = "root" -a ! -z "$NETDATA_CONFIG_USER" ] then for x in "$NETDATA_CONFIG_WEB_DIR" "$NETDATA_CONFIG_CONF_DIR" "$NETDATA_CONFIG_CACHE_DIR" "$NETDATA_CONFIG_LOG_DIR" do echo "Changing ownership of web files in $x to $NETDATA_CONFIG_USER" chown -R "$NETDATA_CONFIG_USER" "$x" || exit 1 chmod 0775 "$x" $NETDATA_CONFIG_CONF_DIR log cache || exit 1 done fi if [ ! "$USER" = "root" ] then echo >&2 "WARNING: NOT RUNNING AS ROOT - CANNOT SWITCH TO USER $NETDATA_CONFIG_USER" echo >&2 "WARNING: MAKE SURE FILES IN web/ ARE OWNED BY $USER - or it will not work" fi echo "Starting netdata..." if [ -f $NETDATA_CONFIG_CONF_DIR/netdata.conf ] then `pwd`/netdata else touch $NETDATA_CONFIG_CONF_DIR/netdata.conf if [ "$USER" = "root" ] then `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 else `pwd`/netdata $debug_opts -t $NETDATA_CONFIG_INTERNAL_UPDATE_EVERY -l $NETDATA_CONFIG_INTERNAL_HISTORY_LINES -p $NETDATA_CONFIG_PORT || exit 1 fi sleep 2 wget 2>/dev/null -O $NETDATA_CONFIG_CONF_DIR/netdata.conf.new http://localhost:$NETDATA_CONFIG_PORT/netdata.conf mv $NETDATA_CONFIG_CONF_DIR/netdata.conf.new $NETDATA_CONFIG_CONF_DIR/netdata.conf echo "Hit http://127.0.0.1:$NETDATA_CONFIG_PORT/ from your browser." echo "You can edit config options in file $NETDATA_CONFIG_CONF_DIR/netdata.conf" fi echo echo "All Done." echo