
This change reorgs the logstash log pushing so that there is a central gearman server that listens to Jenkins ZMQ events which are then converted to per log file gearman jobs which are processed by gearman workers. The central gearman server will live on logstash.o.o and the existing logstash-worker hosts will be converted to gearman log pusher workers. This commit includes relavent documentation changes. Change-Id: I45f7185c2479c54b090d223408dff268e1e8d7db Reviewed-on: https://review.openstack.org/32455 Reviewed-by: Jeremy Stanley <fungi@yuggoth.org> Approved: Clark Boylan <clark.boylan@gmail.com> Reviewed-by: Clark Boylan <clark.boylan@gmail.com> Tested-by: Jenkins
159 lines
3.7 KiB
Bash
Executable File
159 lines
3.7 KiB
Bash
Executable File
#! /bin/sh
|
|
### BEGIN INIT INFO
|
|
# Provides: jenkins-log-worker
|
|
# Required-Start: $remote_fs $syslog
|
|
# Required-Stop: $remote_fs $syslog
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Short-Description: Jenkins Log Worker
|
|
# Description: Service to push Jenkins logs into logstash.
|
|
### END INIT INFO
|
|
|
|
# Do NOT "set -e"
|
|
|
|
# PATH should only include /usr/* if it runs after the mountnfs.sh script
|
|
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
|
DESC="Jenkins Log Worker"
|
|
NAME=jenkins-log-worker
|
|
DAEMON=/usr/local/bin/log-gearman-worker.py
|
|
DAEMON_ARGS='-c /etc/logstash/jenkins-log-worker.yaml -d /var/log/logstash/log-worker-debug.log'
|
|
PIDFILE=/var/run/$NAME/$NAME.pid
|
|
SCRIPTNAME=/etc/init.d/$NAME
|
|
USER=logstash
|
|
|
|
# Exit if the package is not installed
|
|
[ -x "$DAEMON" ] || exit 0
|
|
|
|
# Read configuration variable file if it is present
|
|
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
|
|
|
|
# Load the VERBOSE setting and other rcS variables
|
|
. /lib/init/vars.sh
|
|
|
|
# Define LSB log_* functions.
|
|
# Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
|
|
. /lib/lsb/init-functions
|
|
|
|
#
|
|
# Function that starts the daemon/service
|
|
#
|
|
do_start()
|
|
{
|
|
# Return
|
|
# 0 if daemon has been started
|
|
# 1 if daemon was already running
|
|
# 2 if daemon could not be started
|
|
|
|
mkdir -p /var/run/$NAME
|
|
chown $USER /var/run/$NAME
|
|
start-stop-daemon --start --quiet --pidfile $PIDFILE -c $USER --exec $DAEMON --test > /dev/null \
|
|
|| return 1
|
|
start-stop-daemon --start --quiet --pidfile $PIDFILE -c $USER --exec $DAEMON -- \
|
|
$DAEMON_ARGS \
|
|
|| return 2
|
|
# Add code here, if necessary, that waits for the process to be ready
|
|
# to handle requests from services started subsequently which depend
|
|
# on this one. As a last resort, sleep for some time.
|
|
}
|
|
|
|
#
|
|
# Function that stops the daemon/service
|
|
#
|
|
do_stop()
|
|
{
|
|
# Return
|
|
# 0 if daemon has been stopped
|
|
# 1 if daemon was already stopped
|
|
# 2 if daemon could not be stopped
|
|
# other if a failure occurred
|
|
start-stop-daemon --stop --signal 9 --pidfile $PIDFILE
|
|
RETVAL="$?"
|
|
[ "$RETVAL" = 2 ] && return 2
|
|
rm -f /var/run/$NAME/*
|
|
return "$RETVAL"
|
|
}
|
|
|
|
#
|
|
# Function that stops the daemon/service
|
|
#
|
|
#do_graceful_stop()
|
|
#{
|
|
# PID=`cat $PIDFILE`
|
|
# kill -USR1 $PID
|
|
#
|
|
# # wait until really stopped
|
|
# if [ -n "${PID:-}" ]; then
|
|
# i=0
|
|
# while kill -0 "${PID:-}" 2> /dev/null; do
|
|
# if [ $i -eq '0' ]; then
|
|
# echo -n " ... waiting "
|
|
# else
|
|
# echo -n "."
|
|
# fi
|
|
# i=$(($i+1))
|
|
# sleep 1
|
|
# done
|
|
# fi
|
|
#
|
|
# rm -f /var/run/$NAME/*
|
|
#}
|
|
|
|
#
|
|
# Function that sends a SIGHUP to the daemon/service
|
|
#
|
|
#do_reload() {
|
|
# #
|
|
# # If the daemon can reload its configuration without
|
|
# # restarting (for example, when it is sent a SIGHUP),
|
|
# # then implement that here.
|
|
# #
|
|
# start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name zuul-server
|
|
# return 0
|
|
#}
|
|
|
|
case "$1" in
|
|
start)
|
|
[ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
|
|
do_start
|
|
case "$?" in
|
|
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
|
|
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
|
|
esac
|
|
;;
|
|
stop)
|
|
[ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
|
|
do_stop
|
|
case "$?" in
|
|
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
|
|
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
|
|
esac
|
|
;;
|
|
status)
|
|
status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
|
|
;;
|
|
# reload)
|
|
# #
|
|
# # If do_reload() is not implemented then leave this commented out
|
|
# # and leave 'force-reload' as an alias for 'restart'.
|
|
# #
|
|
# log_daemon_msg "Reloading $DESC" "$NAME"
|
|
# do_reload
|
|
# log_end_msg $?
|
|
# ;;
|
|
restart|force-reload)
|
|
#
|
|
# If the "reload" option is implemented then remove the
|
|
# 'force-reload' alias
|
|
#
|
|
log_daemon_msg "Restarting $DESC" "$NAME"
|
|
do_stop
|
|
do_start
|
|
;;
|
|
*)
|
|
echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
|
|
exit 3
|
|
;;
|
|
esac
|
|
|
|
:
|