Skip to content

Instantly share code, notes, and snippets.

@katiejots
Last active December 10, 2015 19:29
Show Gist options
  • Save katiejots/4481643 to your computer and use it in GitHub Desktop.
Save katiejots/4481643 to your computer and use it in GitHub Desktop.
/etc/init.d/logstash-shipper
#! /bin/sh
#
# /etc/rc.d/init.d/logstash
#
# 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-shipper
# 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
# Description: Starts Logstash as a daemon.
# Author: christian.paredes@sbri.org, https://github.com/paul-at; modified by https://github.com/codemiller
### END INIT INFO
# Amount of memory for Java
JAVAMEM=256M
# Location of logstash files
LOCATION=/opt/logstash
# Type of this Logstash daemon
MODE="shipper"
VERSION=1.1.5
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DESC="logstash-$MODE daemon"
NAME=java
DAEMON=`which java`
CONFIG_DIR="/etc/logstash/logstash-$MODE.conf"
LOGFILE="/var/log/logstash/$MODE.log"
JARNAME="logstash-$VERSION-monolithic.jar"
ARGS="-Xmx$JAVAMEM -Xms$JAVAMEM -jar ${JARNAME} agent -f ${CONFIG_DIR} --log ${LOGFILE}"
SCRIPTNAME="/etc/init.d/logstash-$MODE"
BASE="logstash-$MODE"
# Should match $pidfile
PIDFILE="/var/run/$BASE.pid"
# Exit if the package is not installed
if [ ! -x "$DAEMON" ]; then
{
echo "Couldn't find $DAEMON"
exit 99
}
fi
. /etc/init.d/functions
#
# Function that starts the daemon/service
#
do_start()
{
cd $LOCATION && \
($DAEMON $ARGS &) \
&& success || failure
echo `ps auxww | grep 'logstash.*monolithic' | grep java | grep $MODE | awk '{print $2}'` > $PIDFILE
}
#
# Function that stops the daemon/service
#
do_stop()
{
read pid < $PIDFILE
if checkpid $pid 2>&1; then
# TERM first, then KILL if not dead
kill -TERM $pid >/dev/null 2>&1
usleep 100000
if checkpid $pid && sleep 1 &&
checkpid $pid && sleep $delay &&
checkpid $pid ; then
kill -KILL $pid >/dev/null 2>&1
usleep 100000
fi
fi
checkpid $pid
RC=$?
rm $PIDFILE
[ "$RC" -eq 0 ] && failure $"$BASE shutdown" || success $"$BASE shutdown"
}
case "$1" in
start)
echo -n "Starting $DESC: "
do_start
;;
stop)
echo -n "Stopping $DESC: "
do_stop
;;
restart|reload)
echo -n "Restarting $DESC: "
do_stop
do_start
;;
status)
status -p $PIDFILE $BASE
;;
*)
echo "Usage: $SCRIPTNAME {start|stop|status|restart}" >&2
exit 3
;;
esac
echo
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment