|
@@ -1,22 +1,24 @@
|
|
|
#!/bin/bash
|
|
|
+
|
|
|
NODES=${NODES:-}
|
|
|
SNMP_NODES=${SNMP_NODES:-}
|
|
|
SSH_NODES=${SSH_NODES:-}
|
|
|
MUNIN_USERS=${MUNIN_USERS:-${MUNIN_USER:-user}}
|
|
|
MUNIN_PASSWORDS=${MUNIN_PASSWORDS:-${MUNIN_PASSWORD:-password}}
|
|
|
-MAIL_CONF_PATH='/var/lib/munin/.mailrc'
|
|
|
+MAIL_CONF_PATH='/munin/db/.mailrc'
|
|
|
SMTP_USE_TLS=${SMTP_USE_TLS:-false}
|
|
|
SMTP_ALWAYS_SEND=${SMTP_ALWAYS_SEND:-true}
|
|
|
SMTP_MESSAGE_DEFAULT='[${var:group};${var:host}] -> ${var:graph_title} -> warnings: ${loop<,>:wfields ${var:label}=${var:value}} / criticals: ${loop<,>:cfields ${var:label}=${var:value}}'
|
|
|
SMTP_MESSAGE="${SMTP_MESSAGE:-$SMTP_MESSAGE_DEFAULT}"
|
|
|
|
|
|
-truncate -s 0 "${MAIL_CONF_PATH}"
|
|
|
|
|
|
-# set volume ownerships
|
|
|
-chown -R munin:munin /var/log/munin
|
|
|
-chown -R munin:munin /var/lib/munin
|
|
|
-chown -R munin:munin /var/run/munin
|
|
|
-chown -R munin:munin /var/cache/munin
|
|
|
+mkdir -p /munin/{db,run,log,www/cache}
|
|
|
+[ -a /munin/db/cgi-tmp ] || ln -s ../www/cache /munin/db/cgi-tmp
|
|
|
+[ -a /var/lib/munin/cgi-tmp ] || ln -s /munin/www/cache /var/lib/munin/cgi-tmp
|
|
|
+[ -a /var/log/nginx ] || ln -s /tmp /var/log/nginx
|
|
|
+
|
|
|
+
|
|
|
+truncate -s 0 "${MAIL_CONF_PATH}"
|
|
|
|
|
|
if [ "${SMTP_USE_TLS}" = true ] ; then
|
|
|
cat >> "${MAIL_CONF_PATH}" <<EOF
|
|
@@ -48,17 +50,6 @@ if [ $rc -ne 0 -a -n "${ALERT_RECIPIENT}" -a -n "${ALERT_SENDER}" ] ; then
|
|
|
fi
|
|
|
fi
|
|
|
|
|
|
-# generate the Munin auth username/password file
|
|
|
-if [ ! -f /etc/munin/htpasswd.users ]; then
|
|
|
- uc=0
|
|
|
- IFS=' ' read -ra ARR_USERS <<< "$MUNIN_USERS"
|
|
|
- IFS=' ' read -ra ARR_PASSWORDS <<< "$MUNIN_PASSWORDS"
|
|
|
- for u in "${ARR_USERS[@]}"; do
|
|
|
- printf "${u}:`openssl passwd -apr1 ${ARR_PASSWORDS[uc]}`\n" >> /etc/munin/htpasswd.users
|
|
|
- (( uc++ ))
|
|
|
- done
|
|
|
-fi
|
|
|
-
|
|
|
# generate node list
|
|
|
for NODE in $NODES
|
|
|
do
|
|
@@ -121,10 +112,10 @@ EOF
|
|
|
fi
|
|
|
done
|
|
|
|
|
|
-[ -d /var/cache/munin/www ] || mkdir /var/cache/munin/www
|
|
|
+
|
|
|
# placeholder html to prevent permission error
|
|
|
-if [ ! -e /var/cache/munin/www/index.html ]; then
|
|
|
-cat << EOF > /var/cache/munin/www/index.html
|
|
|
+if [ ! -e /munin/www/index.html ]; then
|
|
|
+cat << EOF > /munin/www/index.html
|
|
|
<html>
|
|
|
<head>
|
|
|
<title>Munin</title>
|
|
@@ -134,35 +125,34 @@ Munin has not run yet. Please try again in a few moments.
|
|
|
</body>
|
|
|
</html>
|
|
|
EOF
|
|
|
-chown munin:munin -R /var/cache/munin/www
|
|
|
-chmod g+w /var/cache/munin/www/index.html
|
|
|
fi
|
|
|
|
|
|
# start rsyslogd
|
|
|
-/usr/sbin/rsyslogd
|
|
|
-# start cron
|
|
|
-/usr/sbin/cron
|
|
|
-# Issue: 'NUMBER OF HARD LINKS > 1' prevents cron exec in container
|
|
|
-# https://github.com/phusion/baseimage-docker/issues/198
|
|
|
-touch /etc/crontab /etc/cron.d/*
|
|
|
-# start local munin-node
|
|
|
-/usr/sbin/munin-node
|
|
|
+truncate -s 0 /tmp/rsyslogd.pid
|
|
|
+#/usr/sbin/rsyslogd -i /tmp/rsyslogd.pid
|
|
|
+
|
|
|
+# start munin updates
|
|
|
+truncate -s 0 /munin/log/munin-update.log
|
|
|
+/usr/local/bin/supercronic -split-logs /etc/munin/munin.cron & cron_pid=$!
|
|
|
+
|
|
|
+
|
|
|
echo "Using the following munin nodes:"
|
|
|
echo $NODES
|
|
|
echo "(ssh) $SSH_NODES"
|
|
|
echo "(snmp) $SNMP_NODES"
|
|
|
# start spawn-cgi to enable CGI interface with munin (dynamix graph generation)
|
|
|
-spawn-fcgi -s /var/run/munin/fcgi-graph.sock -U munin -u munin -g munin /usr/lib/munin/cgi/munin-cgi-graph
|
|
|
+spawn-fcgi -p 9000 /usr/lib/munin/cgi/munin-cgi-graph
|
|
|
+spawn-fcgi -p 9001 /usr/lib/munin/cgi/munin-cgi-html
|
|
|
# start nginx
|
|
|
/usr/sbin/nginx
|
|
|
# show logs
|
|
|
echo "Tailing syslog and munin-update log..."
|
|
|
-tail -F /var/log/syslog /var/log/munin/munin-update.log & pid=$!
|
|
|
+tail -F /munin/log/munin-update.log & pid=$!
|
|
|
echo "tail -F running in $pid"
|
|
|
|
|
|
sleep 1
|
|
|
|
|
|
-trap "echo 'stopping processes' ; kill $pid $(cat /var/run/munin/munin-node.pid) $(cat /var/run/nginx.pid) $(cat /var/run/crond.pid) $(cat /var/run/rsyslogd.pid)" SIGTERM SIGINT
|
|
|
+trap "echo 'stopping processes' ; kill $pid $cron_pid $(cat /tmp/nginx.pid) $(cat /tmp/rsyslogd.pid)" SIGTERM SIGINT
|
|
|
|
|
|
echo "Waiting for signal SIGINT/SIGTERM"
|
|
|
wait
|