#!/bin/bash
#
# /etc/rc.d/init.d/carbon-c-relay
#
# relay Startup script for the carbon-c-relay metrics aggregation daemon
# Packaged for the BBC by Matthew Hollick <matthew@mayan-it.co.uk>
#
# description: Carbon-like graphite line mode relay.
#
#This project aims to be a replacement of the original Carbon relay
#
#The main reason to build a replacement is performance and configurability.
#Carbon is single threaded, and sending metrics to multiple consistent-hash
#clusters requires chaining of relays. This project provides a multithreaded
#relay which can address multiple targets and clusters for each and every
#metric based on pattern matches.
#
# chkconfig: 2345 80 80
#
# config: /etc/carbon-c-relay.conf
# pidfile: /var/run/carbon-c-relay/carbon-c-relay.pid
# Source function library.
. /etc/init.d/functions
RETVAL=0
PROG="carbon-c-relay"
DAEMON_CONFIG=/etc/${PROG}.conf
DAEMON_SYSCONFIG=/etc/sysconfig/${PROG}
DAEMON=/usr/bin/${PROG}
PID_FILE=/var/run/${PROG}/${PROG}.pid
LOCK_FILE=/var/lock/subsys/${PROG}
LOG_FILE=/var/log/${PROG}/${PROG}.log
DAEMON_USER="${PROG}"
. ${DAEMON_SYSCONFIG}
start() {
if check_status > /dev/null; then
echo "Carbon C Relay is already running"
exit 0
fi
echo -n $"Starting Carbon C Relay: "
daemon --user ${DAEMON_USER} ${DAEMON} -P ${PID_FILE} -D ${ARGS} -f ${DAEMON_CONFIG}
RETVAL=${?}
echo
[ ${RETVAL} -eq 0 ] && touch ${LOCK_FILE}
return ${RETVAL}
}
stop() {
echo -n $"Stopping Carbon C Relay: "
killproc -p ${PID_FILE} -d 10 ${DAEMON}
RETVAL=${?}
echo
[ ${RETVAL} = 0 ] && rm -f ${LOCK_FILE}
return ${RETVAL}
}
check_status() {
status -p ${PID_FILE} ${DAEMON}
RETVAL=${?}
return ${RETVAL}
}
reload() {
echo -n $"Reloading Carbon C Relay "
killproc -p ${PID_FILE} ${DAEMON} -HUP
RETVAL=${?}
echo
return ${RETVAL}
}
case "${1}" in
start)
start
;;
stop)
stop
;;
status)
check_status
;;
reload|force-reload)
reload
;;
restart)
stop
start
;;
*)
N=/etc/init.d/${PROG}
echo "Usage: ${N} {start|stop|status|restart|force-reload}" >&2
RETVAL=2
;;
esac
exit ${RETVAL}