summaryrefslogtreecommitdiffstats
path: root/system/netdata-openrc.in
diff options
context:
space:
mode:
Diffstat (limited to 'system/netdata-openrc.in')
-rwxr-xr-xsystem/netdata-openrc.in84
1 files changed, 84 insertions, 0 deletions
diff --git a/system/netdata-openrc.in b/system/netdata-openrc.in
new file mode 100755
index 000000000..299db5699
--- /dev/null
+++ b/system/netdata-openrc.in
@@ -0,0 +1,84 @@
+#!/sbin/runscript
+
+# 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:netdata}
+
+# The URL to download netdata config.
+: ${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:=15}
+
+# When set to 1, if netdata does not exit in
+# NETDATA_WAIT_EXIT_TIMEOUT, we will force it
+# to exit.
+: ${NETDATA_FORCE_EXIT:=0}
+
+# Netdata will use these services, only if they
+# are enabled to start.
+: ${NETDATA_START_AFTER_SERVICES:=apache2 squid nginx mysql named opensips upsd hostapd postfix lm_sensors}
+
+extra_started_commands="getconf"
+pidfile="/run/netdata.pid"
+command="${NETDATA_INSTALL_PATH}/usr/sbin/netdata"
+command_background="yes"
+command_args="-pidfile ${pidfile} ${NETDATA_EXTRA_ARGS}"
+# start_stop_daemon_args="-u ${NETDATA_OWNER}"
+start_stop_daemon_args=""
+
+depend() {
+ use logger
+ need net
+ after ${NETDATA_START_AFTER_SERVICES}
+
+ checkpath -o ${NETDATA_OWNER} -d @localstatedir_POST@/cache/netdata /run/netdata
+}
+
+start_post() {
+ if [[ ! -f @sysconfdir_POST@/netdata/netdata.conf ]]; then
+ ebegin "Downloading default configuration to @sysconfdir_POST@/netdata/netdata.conf"
+ sleep 2
+ curl -s -o @sysconfdir_POST@/netdata/netdata.conf.new "${NETDATA_CONFIG_URL}"
+ ret=$?
+ if [[ $ret -eq 0 && -s @sysconfdir_POST@/netdata/netdata.conf.new ]]; then
+ mv @sysconfdir_POST@/netdata/netdata.conf{.new,}
+ else
+ ret=1
+ rm @sysconfdir_POST@/netdata/netdata.conf.new 2>/dev/null
+ fi
+ eend $ret
+ fi
+}
+
+stop_post() {
+ local result ret=0 count=0 sigkill=0
+
+ 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 && -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 $?
+}