Skip to content

Instantly share code, notes, and snippets.

@unixunion
Last active January 18, 2019 08:58
Show Gist options
  • Save unixunion/01eccddfa7a3f42a903f05818e987280 to your computer and use it in GitHub Desktop.
Save unixunion/01eccddfa7a3f42a903f05818e987280 to your computer and use it in GitHub Desktop.
haproxy_exporter init script for systemd
#!/bin/sh
### BEGIN INIT INFO
# Provides: haproxy
# Required-Start: $local_fs $network $remote_fs $syslog $named $haproxy
# Required-Stop: $local_fs $remote_fs $syslog $named
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: fast and reliable load balancing reverse proxy
# Description: This file should be used to start and stop haproxy.
### END INIT INFO
# Author: Arnaud Cornet <[email protected]>
PATH=/sbin:/usr/sbin:/bin:/usr/bin
BASENAME=haproxy_exporter
PIDFILE=/var/run/${BASENAME}.pid
HAPROXY=/usr/bin/haproxy_exporter
EXTRAOPTS=--haproxy.scrape-uri="http://localhost:9000/haproxy_stats;csv"
test -x $HAPROXY || exit 0
[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions
haproxy_start()
{
start-stop-daemon -b --quiet --oknodo --start -m --pidfile "$PIDFILE" \
--exec $HAPROXY -- $EXTRAOPTS || return 2
return 0
}
haproxy_stop()
{
if [ ! -f $PIDFILE ] ; then
# This is a success according to LSB
return 0
fi
ret=0
tmppid="$(mktemp)"
# HAProxy's pidfile may contain multiple PIDs, if nbproc > 1, so loop
# over each PID. Note that start-stop-daemon has a --pid option, but it
# was introduced in dpkg 1.17.6, post wheezy, so we use a temporary
# pidfile instead to ease backports.
for pid in $(cat $PIDFILE); do
echo "$pid" > "$tmppid"
start-stop-daemon --quiet --oknodo --stop \
--retry 5 --pidfile "$tmppid" --exec $HAPROXY || ret=$?
done
rm -f "$tmppid"
[ $ret -eq 0 ] && rm -f $PIDFILE
return $ret
}
case "$1" in
start)
log_daemon_msg "Starting haproxy" "${BASENAME}"
haproxy_start
ret=$?
case "$ret" in
0)
log_end_msg 0
;;
1)
log_end_msg 1
echo "pid file '$PIDFILE' found, ${BASENAME} not started."
;;
2)
log_end_msg 1
;;
esac
exit $ret
;;
stop)
log_daemon_msg "Stopping haproxy" "${BASENAME}"
haproxy_stop
ret=$?
case "$ret" in
0|1)
log_end_msg 0
;;
2)
log_end_msg 1
;;
esac
exit $ret
;;
*)
echo "Usage: /etc/init.d/${BASENAME} {start|stop|reload|restart|status}"
exit 2
;;
esac
:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment