Blob Blame History Raw
#!/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}