Not a member of Pastebin yet?
                        Sign Up,
                        it unlocks many cool features!                    
                - #!/bin/sh
 - # Init script for logstash
 - # Maintained by Elasticsearch
 - # Generated by pleaserun.
 - # Modified by Gregory GERARD.
 - # Implemented based on LSB Core 3.1:
 - # * Sections: 20.2, 20.3
 - #
 - ### BEGIN INIT INFO
 - # Provides: logstash
 - # Required-Start: $remote_fs $syslog
 - # Required-Stop: $remote_fs $syslog
 - # Default-Start: 2 3 4 5
 - # Default-Stop: 0 1 6
 - # Short-Description:
 - # Description: Starts Logstash as a daemon.
 - ### END INIT INFO
 - PATH=/sbin:/usr/sbin:/bin:/usr/bin
 - export PATH
 - if [ `id -u` -ne 0 ]; then
 - echo "You need root privileges to run this script"
 - exit 1
 - fi
 - name=logstash
 - pidfile="/var/run/$name.pid"
 - LS_USER=logstash
 - LS_GROUP=logstash
 - LS_HOME=/var/lib/logstash
 - LS_HEAP_SIZE="500m"
 - LS_LOG_DIR=/var/log/logstash
 - LS_LOG_FILE="${LS_LOG_DIR}/$name.log"
 - LS_CONF_DIR=/etc/logstash/conf.d
 - LS_OPEN_FILES=16384
 - LS_NICE=19
 - LS_OPTS=""
 - [ -r /etc/default/$name ] && . /etc/default/$name
 - [ -r /etc/sysconfig/$name ] && . /etc/sysconfig/$name
 - program=/opt/logstash/bin/logstash
 - args="agent -f ${LS_CONF_DIR} -l ${LS_LOG_FILE} ${LS_OPTS}"
 - quiet() {
 - "$@" > /dev/null 2>&1
 - return $?
 - }
 - start() {
 - LS_JAVA_OPTS="${LS_JAVA_OPTS} -Djava.io.tmpdir=${LS_HOME}"
 - HOME=${LS_HOME}
 - export PATH HOME LS_HEAP_SIZE LS_JAVA_OPTS LS_USE_GC_LOGGING
 - # chown doesn't grab the suplimental groups when setting the user:group - so we have to do it for it.
 - # Boy, I hope we're root here.
 - SGROUPS=$(id -Gn "$LS_USER" | tr " " "," | sed 's/,$//'; echo '')
 - if [ ! -z $SGROUPS ]
 - then
 - EXTRA_GROUPS="--groups $SGROUPS"
 - fi
 - # set ulimit as (root, presumably) first, before we drop privileges
 - ulimit -n ${LS_OPEN_FILES}
 - for logstash_file_full in ${LS_CONF_DIR}/*; do
 - logstash_file_simple=$(basename $logstash_file_full .conf)
 - LS_LOG_FILE="${LS_LOG_DIR}/$(basename "$logstash_file_simple").log"
 - args="agent -f ${logstash_file_full} -l ${LS_LOG_FILE} ${LS_OPTS}"
 - pidfile="/var/run/$logstash_file_simple.pid"
 - # echo ${args} $pidfile
 - # Run the program!
 - nice -n ${LS_NICE} chroot --userspec $LS_USER:$LS_GROUP $EXTRA_GROUPS / sh -c "
 - cd $LS_HOME
 - ulimit -n ${LS_OPEN_FILES}
 - exec \"$program\" $args
 - " > "${LS_LOG_DIR}/$logstash_file_simple.stdout" 2> "${LS_LOG_DIR}/$logstash_file_simple.err" &
 - # Generate the pidfile from here. If we instead made the forked process
 - # generate it there will be a race condition between the pidfile writing
 - # and a process possibly asking for status.
 - echo $! > $pidfile
 - echo "$name $logstash_file_simple started."
 - done
 - return 0
 - }
 - stop() {
 - # Try a few times to kill TERM the program
 - for logstash_file_full in ${LS_CONF_DIR}/*; do
 - logstash_file_simple=$(basename $logstash_file_full .conf)
 - pidfile="/var/run/$logstash_file_simple.pid"
 - if status $logstash_file_full; then
 - pid=`cat "$pidfile"`
 - echo "Killing $name (pid $pid) with SIGTERM"
 - kill -TERM $pid
 - # Wait for it to exit.
 - for i in 1 2 3 4 5 ; do
 - echo "Waiting $name (pid $pid) to die..."
 - status $logstash_file_full || break
 - sleep 1
 - done
 - if status $logstash_file_full; then
 - if [ "$KILL_ON_STOP_TIMEOUT" -eq 1 ] ; then
 - echo "Timeout reached. Killing $logstash_file_simple (pid $pid) with SIGKILL. This may result in data loss."
 - kill -KILL $pid
 - echo "$logstash_file_simple killed with SIGKILL."
 - else
 - echo "$logstash_file_simple stop failed; still running."
 - fi
 - else
 - echo "$logstash_file_simple stopped."
 - fi
 - fi
 - done
 - }
 - status() {
 - logstash_file_simple=$(basename $1 .conf)
 - pidfile="/var/run/$logstash_file_simple.pid"
 - if [ -f "$pidfile" ] ; then
 - pid=`cat "$pidfile"`
 - if kill -0 $pid > /dev/null 2> /dev/null ; then
 - # process by this pid is running.
 - # It may not be our pid, but that's what you get with just pidfiles.
 - # TODO(sissel): Check if this process seems to be the same as the one we
 - # expect. It'd be nice to use flock here, but flock uses fork, not exec,
 - # so it makes it quite awkward to use in this case.
 - return 0
 - else
 - return 2 # program is dead but pid file exists
 - fi
 - else
 - return 3 # program is not running
 - fi
 - }
 - force_stop() {
 - for logstash_file_full in ${LS_CONF_DIR}/*; do
 - logstash_file_simple=$(basename $logstash_file_full .conf)
 - status $logstash_file_full
 - if status ; then
 - stop
 - if status; then
 - pidfile="/var/run/$logstash_file_simple.pid"
 - kill -KILL `cat "$pidfile"`
 - fi
 - fi
 - done
 - }
 - configtest() {
 - # Check if a config file exists
 - if [ ! "$(ls -A ${LS_CONF_DIR}/* 2> /dev/null)" ]; then
 - log_failure_msg "There aren't any configuration files in ${LS_CONF_DIR}"
 - exit 1
 - fi
 - JAVA_OPTS=${LS_JAVA_OPTS}
 - HOME=${LS_HOME}
 - export PATH HOME JAVA_OPTS LS_HEAP_SIZE LS_JAVA_OPTS LS_USE_GC_LOGGING
 - test_args="-f ${LS_CONF_DIR} --configtest ${LS_OPTS}"
 - $program ${test_args}
 - [ $? -eq 0 ] && return 0
 - # Program not configured
 - return 6
 - }
 - case "$1" in
 - start)
 - status
 - code=$?
 - if [ $code -eq 0 ]; then
 - echo "$name is already running"
 - else
 - start
 - code=$?
 - fi
 - exit $code
 - ;;
 - stop) stop ;;
 - force-stop) force_stop ;;
 - status)
 - for logstash_file_full in ${LS_CONF_DIR}/*; do
 - status $logstash_file_full
 - code=$?
 - if [ $code -eq 0 ] ; then
 - echo "$logstash_file_full is running"
 - else
 - echo "$logstash_file_full is not running"
 - fi
 - done
 - exit $code
 - ;;
 - restart)
 - quiet configtest
 - RET=$?
 - if [ ${RET} -ne 0 ]; then
 - echo "Configuration error. Not restarting. Re-run with configtest parameter for details"
 - exit ${RET}
 - fi
 - stop && start
 - ;;
 - configtest)
 - configtest
 - exit $?
 - ;;
 - *)
 - echo "Usage: $SCRIPTNAME {start|stop|force-stop|status|restart|configtest}" >&2
 - exit 3
 - ;;
 - esac
 - exit $?
 
Advertisement
 
                    Add Comment                
                
                        Please, Sign In to add comment