Skip to content

Instantly share code, notes, and snippets.

@bigbosst
Forked from rtd/logstash.sh
Last active December 23, 2015 07:19
Show Gist options
  • Save bigbosst/6600018 to your computer and use it in GitHub Desktop.
Save bigbosst/6600018 to your computer and use it in GitHub Desktop.
Debian Wheezy Logstash Shipper Init Script
#! /bin/sh
#
# /etc/rc.d/init.d/logstash-shipper
#
# Starts Logstash as a daemon
#
# chkconfig: 2345 20 80
# description: Starts Logstash as a daemon
# pidfile: /var/run/logstash-shipper.pid
### BEGIN INIT INFO
# Provides: logstash
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: S 0 1 6
# Short-Description: Logstash-Shipper
# Description: Starts Logstash-Shipper as a daemon.
# Modified originally from https://gist.github.com/2228905#file_logstash.sh
### END INIT INFO
# Amount of memory for Java
JAVAMEM=32M
# Location of logstash files
LOCATION=/etc/logstash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DESC="Logstash Shipper Daemon"
NAME=logstash-shipper
DAEMON=$(which java)
CONFIG_DIR=${LOCATION}/shipper.conf
LOGDIR=/var/log/logstash
LOGFILE=${LOGDIR}/${NAME}.log
JARNAME=logstash.jar
ARGS="-Xmx$JAVAMEM -Xms$JAVAMEM -jar ${JARNAME} agent -f ${CONFIG_DIR}"
#ARGS="-jar ${JARNAME} agent -f ${CONFIG_DIR}"
SCRIPTNAME=/etc/init.d/${NAME}
PIDFILE=/var/run/${NAME}.pid
base=${NAME}
mkdir -p ${LOGDIR}
# Exit if the package is not installed
if [ ! -x "$DAEMON" ]; then
{
log_end_msg "Couldn't find $DAEMON"
}
fi
. /lib/lsb/init-functions
#
# Function that starts the daemon/service
#
do_start()
{
cd $LOCATION && \
($DAEMON $ARGS &) >> ${LOGFILE} 2>&1 \
&& log_success_msg "Started ${NAME}" || log_failure_msg "Failed to start ${NAME}"
}
set_pidfile()
{
pgrep -f "$DAEMON[[:space:]]*$ARGS" > $PIDFILE
}
#
# Function that stops the daemon/service
#
do_stop()
{
pid=`cat $PIDFILE`
if kill -0 $pid >/dev/null; then
# TERM first, then KILL if not dead
kill -TERM $pid >/dev/nul
sleep 1
if kill -0 $pid >/dev/null 2>&1 && sleep 1 &&
kill -0 $pid >/dev/null 2>&1 && sleep $delay &&
kill -0 $pid >/dev/null 2>&1 ; then
kill -KILL $pid >/dev/null
usleep 1
fi
fi
kill -0 $pid > /dev/null 2>&1
RC=$?
if [ "$RC" -eq 0 ]; then
log_failure_msg "${NAME} was not shutdown"
else
rm -f /var/lock/subsys/$JARNAME
rm -f ${PIDFILE}
log_success_msg "${NAME} was shutdown"
fi
}
do_status()
{
pid=`cat ${PIDFILE}`
kill -0 ${pid}
RC=$?
if [ "${RC}" -eq 0 ]; then
log_success_msg "${NAME} is running"
else
rm -f ${PIDFILE}
log_failure_msg "${NAME} is not running and may have crashed"
fi
}
case "$1" in
start)
echo "Starting $DESC: "
do_start
touch /var/lock/subsys/$JARNAME
set_pidfile
;;
stop)
echo "Stopping $DESC: "
do_stop
;;
restart|reload)
echo "Restarting $DESC: "
do_stop
do_start
touch /var/lock/subsys/$JARNAME
set_pidfile
;;
status)
if [ -f ${PIDFILE} ]; then
do_status
else
log_failure_msg "${NAME} is not running or has no valid pid file"
fi
;;
*)
log_failure_msg "Usage: $SCRIPTNAME {start|stop|status|restart}"
;;
esac
echo
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment