diff options
Diffstat (limited to '')
-rwxr-xr-x | system/netdata-openrc | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/system/netdata-openrc b/system/netdata-openrc new file mode 100755 index 00000000..202db64c --- /dev/null +++ b/system/netdata-openrc @@ -0,0 +1,125 @@ +#!/sbin/runscript + +# The path netdata has been installed. +# Leave it empty if netdata is installed in / +NETDATA_INSTALL_PATH=${NETDATA_INSTALL_PATH-} + +# The user netdata is configured to run as. +# If you edit its configuration file to set a different +# user, set it here too, to have its files switch ownership +NETDATA_OWNER=${NETDATA_OWNER-netdata:netdata} + +# The URL to download netdata config. +NETDATA_CONFIG_URL=${NETDATA_CONFIG_URL-http://localhost:19999/netdata.conf} + +# The timeout in seconds to wait for netdata +# to save its database on disk and exit. +NETDATA_WAIT_EXIT_TIMEOUT=${NETDATA_WAIT_EXIT_TIMEOUT-15} + +# When set to 1, if netdata does not exit in +# NETDATA_WAIT_EXIT_TIMEOUT, we will force it +# to exit. +NETDATA_FORCE_EXIT=${NETDATA_FORCE_EXIT-0} + +# Netdata will use these services, only if they +# are enabled to start. +NETDATA_START_AFTER_SERVICES="${NETDATA_START_AFTER_SERVICES-apache2 squid nginx mysql named opensips upsd hostapd postfix lm_sensors}" + +extra_started_commands="getconf" +pidfile="/var/run/netdata/netdata.pid" +command="${NETDATA_INSTALL_PATH}/usr/sbin/netdata" +command_background="yes" + +depend() { + use logger + need net + + local x + for x in ${NETDATA_START_AFTER_SERVICES} + do + if [ -f /etc/runlevels/default/${x} ] + then + use ${x} + fi + done +} + +start() { + local ret + + if [ ! -d ${NETDATA_INSTALL_PATH}/var/cache/netdata ] + then + ebegin "Creating ${NETDATA_INSTALL_PATH}/var/cache/netdata" + mkdir -p ${NETDATA_INSTALL_PATH}/var/cache/netdata + chown ${NETDATA_OWNER} ${NETDATA_INSTALL_PATH}/var/cache/netdata + echo "${NETDATA_OWNER}" >${NETDATA_INSTALL_PATH}/var/cache/netdata/.last_owner + eend $? + fi + + if [ "$(cat ${NETDATA_INSTALL_PATH}/var/cache/netdata/.last_owner 2>/dev/null)" != "${NETDATA_OWNER}" ] + then + ebegin "Switching ownership of ${NETDATA_INSTALL_PATH}/var/cache/netdata" + chown -R ${NETDATA_OWNER} ${NETDATA_INSTALL_PATH}/var/cache/netdata + echo "${NETDATA_OWNER}" >${NETDATA_INSTALL_PATH}/var/cache/netdata/.last_owner + eend 0 + fi + + ebegin "Starting netdata" + start-stop-daemon --start --quiet --pidfile ${pidfile} --exec ${command} -- ${NETDATA_EXTRA_ARGS} + ret=$? + eend $ret + + if [ $ret -eq 0 -a ! -f ${NETDATA_INSTALL_PATH}/etc/netdata/netdata.conf ] + then + ebegin "Downloading default configuration to ${NETDATA_INSTALL_PATH}/etc/netdata/netdata.conf" + sleep 2 + curl -s -o ${NETDATA_INSTALL_PATH}/etc/netdata/netdata.conf.new "${NETDATA_CONFIG_URL}" + ret=$? + if [ $ret -eq 0 -a -s ${NETDATA_INSTALL_PATH}/etc/netdata/netdata.conf.new ] + then + mv ${NETDATA_INSTALL_PATH}/etc/netdata/netdata.conf.new ${NETDATA_INSTALL_PATH}/etc/netdata/netdata.conf + else + ret=1 + rm ${NETDATA_INSTALL_PATH}/etc/netdata/netdata.conf.new 2>/dev/null + fi + eend $ret + fi +} + +stop() { + local result ret=0 count=0 sigkill=0 + + ebegin "Stopping netdata" + start-stop-daemon --stop --quiet --pidfile ${pidfile} + result=$? + eend $result + + ebegin "Waiting for netdata to save its database" + while [ -f "${pidfile}" ] + do + if [ $count -gt ${NETDATA_WAIT_EXIT_TIMEOUT} ] + then + sigkill=1 + break + fi + + count=$[count + 1] + kill -0 $(cat ${pidfile}) 2>/dev/null + ret=$? + test $ret -eq 0 && sleep 1 + done + eend $sigkill + + if [ $sigkill -eq 1 -a -f "${pidfile}" ] + then + ebegin "Netdata is taking too long to exit, forcing it to quit" + kill -SIGKILL $(cat ${pidfile}) 2>/dev/null + eend $? + fi +} + +getconf() { + ebegin "Downloading configuration from netdata to /tmp/netdata.conf" + curl -o /tmp/netdata.conf "${NETDATA_CONFIG_URL}" + eend $? +} |