Code

-bin.pnp_gearman_worker.{default,init}: Init script for Gearman worker.
authorSebastian Harl <sh@tokkee.org>
Wed, 27 Apr 2011 07:08:49 +0000 (09:08 +0200)
committerSebastian Harl <sh@tokkee.org>
Wed, 27 Apr 2011 07:08:49 +0000 (09:08 +0200)
The daemon is disabled by default.

debian/changelog
debian/control
debian/copyright
debian/pnp4nagios-bin.pnp_gearman_worker.default [new file with mode: 0644]
debian/pnp4nagios-bin.pnp_gearman_worker.init [new file with mode: 0644]
debian/rules

index ea12c32a998667528f6fd6545dc72a4be82a8b83..90e8d5b44ab3334a1e9cc09e39fc5ee6ecb598eb 100644 (file)
@@ -17,8 +17,12 @@ pnp4nagios (0.6.12-1) unstable; urgency=low
   * debian/rules, debian/pnp4nagios-bin.install:
     - Do not install npcd.8 using dh_installman; this is done by the upstream
       Makefile now.
+  * debian/pnp4nagios-bin.pnp_gearman_worker.default,
+    pnp4nagios-bin.pnp_gearman_worker.init:
+    - Added init script for the PNP4Nagios Gearman worker daemon.
+    - The daemon is disabled by default.
 
- -- Sebastian Harl <tokkee@debian.org>  Tue, 26 Apr 2011 14:46:18 +0200
+ -- Sebastian Harl <tokkee@debian.org>  Wed, 27 Apr 2011 09:05:48 +0200
 
 pnp4nagios (0.6.11-2) unstable; urgency=low
 
index eddedc816ff04fbea24f62f0c9bc2c009e0db285..962bd806bd4c589bf35e91b45ddde8ea6f33496e 100644 (file)
@@ -26,7 +26,7 @@ Package: pnp4nagios-bin
 Architecture: any
 Depends: librrds-perl, adduser, ${shlibs:Depends}, ${misc:Depends}
 Recommends: pnp4nagios-web, nagios3 | icinga
-Suggests: rrdcached
+Suggests: rrdcached, perl, libgearman-client-perl, libcrypt-rijndael-perl
 Description: Nagios addon to create graphs from performance data (binaries)
  PNP is a graphing tool for Nagios that analyzes performance data provided by
  plugins and stores them automatically into Round Robin Databases (RRD). It
index 2e27ac9c6ccb08e94848aaa10b4c7757696d0a9e..20c9e79c4a825b81d577dbfe3541085517fb2cc2 100644 (file)
@@ -176,12 +176,19 @@ Copyright:
 License: BSD-2-clause
 
 Files:
- debian/pnp4nagios-bin.init
+ debian/pnp4nagios-bin.npcd.init
 Copyright:
  2007 Javier Fernandez-Sanguino <jfs@debian.org>
  2009 Sven Velt <sven@velt.de>
 License: BSD-2-clause
 
+Files:
+ debian/pnp4nagios-bin.pnp_gearman_worker.init
+Copyright:
+ 2007, Javier Fernandez-Sanguino <jfs@debian.org>
+ 2011, Sebastian Harl <tokkee@debian.org>
+License: BSD-2-clause
+
 Files:
  debian/po/de.po
 Copyright:
diff --git a/debian/pnp4nagios-bin.pnp_gearman_worker.default b/debian/pnp4nagios-bin.pnp_gearman_worker.default
new file mode 100644 (file)
index 0000000..f36af0d
--- /dev/null
@@ -0,0 +1,11 @@
+# Default settings for the pnp_gearman_worker init script.
+
+# Should the gearman worker daemon be started? ("yes" to enable)
+RUN="no"
+
+# Additional options that are passed to the daemon.
+DAEMON_OPTS="--config=/etc/pnp4nagios/process_perfdata.cfg"
+
+# Change to this user before starting the daemon.
+# Note: the daemon refuses to start as root.
+USER=nagios
diff --git a/debian/pnp4nagios-bin.pnp_gearman_worker.init b/debian/pnp4nagios-bin.pnp_gearman_worker.init
new file mode 100644 (file)
index 0000000..e45120b
--- /dev/null
@@ -0,0 +1,210 @@
+#!/bin/sh
+#
+# init.d script for the Gearman worker daemon of PNP4Nagios
+#
+# Based on an example script for NPCD of Javier Fernandez-Sanguino
+# Copyright (c) 2007 Javier Fernandez-Sanguino <jfs@debian.org>
+# Copyright (c) 2011 Sebastian Harl <tokkee@debian.org>
+#
+### BEGIN INIT INFO
+# Provides:          pnp_gearman_worker
+# Required-Start:    $network $local_fs $remote_fs
+# Required-Stop:     $network $local_fs $remote_fs
+# Should-Start:
+# Should-Stop:
+# Default-Start:     2 3 4 5
+# Default-Stop:      0 1 6
+# Short-Description: PNP4Nagios Gearman worker daemon
+# Description:       Processing of Nagios' perf data in distributed setups
+### END INIT INFO
+
+PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
+
+DAEMON=/usr/lib/pnp4nagios/libexec/process_perfdata.pl
+NAME=pnp_gearman_worker
+DESC="PNP4Nagios Gearman worker daemon"
+
+PIDFILE=/var/run/pnp4nagios/$NAME.pid
+
+test -x $DAEMON || exit 0
+
+. /lib/lsb/init-functions
+
+# Default options, these can be overriden by the information
+# at /etc/default/$NAME
+DAEMON_OPTS=""
+DIETIME=10
+STARTTIME=2
+USER=nagios
+
+if [ -f /etc/default/pnp_gearman_worker ] ; then
+       . /etc/default/pnp_gearman_worker
+fi
+
+if [ "x$RUN" != "xyes" ] ; then
+       echo "$NAME has been disabled in /etc/default/pnp_gearman_worker."
+       exit 0
+fi
+
+set -e
+
+# Check if a given process pid's cmdline matches a given name
+running_pid() {
+       pid=$1
+       name=$2
+       [ -z "$pid" ] && return 1
+       [ ! -d /proc/$pid ] &&  return 1
+       cmd=`cat /proc/$pid/cmdline | tr "\000" "\n" | head -n 1 | cut -d : -f 1`
+       # Is this the expected server
+       [ "$cmd" != "$name" ] &&  return 1
+       return 0
+}
+
+# Check if the process is running looking at /proc
+# (works for all users)
+running() {
+       # No pidfile, probably no daemon present
+       [ ! -f "$PIDFILE" ] && return 1
+       pid=`cat $PIDFILE`
+       running_pid "$pid" $DAEMON \
+               || running_pid "$pid" "/usr/bin/perl" || return 1
+       return 0
+}
+
+# Start the process using the wrapper
+start_server() {
+       if ! perl -MGearman::Worker -e '1;' > /dev/null 2>&1 \
+                       || ! perl -MMIME::Base64 -e '1;' > /dev/null 2>&1 \
+                       || ! perl -MCrypt::Rijndael -e '1;' > /dev/null 2>&1; then
+               echo "$NAME requires the Gearman::Worker, MIME::Base64 and" >&2
+               echo "Crypt::Rijndael Perl modules. Make sure that the packages" >&2
+               echo "perl, libgearman-client-perl and libcrypt-rijndael-perl" >&2
+               echo "are installed." >&2
+               exit 1
+       fi
+
+       if [ -d /var/run/pnp4nagios ]; then
+               chmod 755 /var/run/pnp4nagios
+               chown nagios.nagios /var/run/pnp4nagios
+       else
+               install -d -m 755 -o nagios -g nagios /var/run/pnp4nagios
+       fi
+
+       start_opts="--start --quiet --oknodo --pidfile $PIDFILE"
+       if [ -n "$USER" ]; then
+               start_opts="$start_opts --chuid $USER"
+       fi
+       start-stop-daemon $start_opts --exec $DAEMON -- \
+               --pidfile=$PIDFILE --gearman --daemon $DAEMON_OPTS
+       errcode=$?
+       return $errcode
+}
+
+# Stop the process using the wrapper
+stop_server() {
+       killproc -p $PIDFILE $DAEMON
+       errcode=$?
+       return $errcode
+}
+
+# Force the process to die killing it manually
+force_stop() {
+       [ ! -e "$PIDFILE" ] && return
+       if running ; then
+               kill -15 $pid
+               # Is it really dead?
+               sleep "$DIETIME"s
+               if running ; then
+                       kill -9 $pid
+                       sleep "$DIETIME"s
+                       if running ; then
+                               echo "Cannot kill $NAME (pid=$pid)!"
+                               exit 1
+                       fi
+               fi
+       fi
+       rm -f $PIDFILE
+}
+
+case "$1" in
+       start)
+               log_daemon_msg "Starting $DESC" "$NAME"
+               # Check if it's running first
+               if running ;  then
+                       log_progress_msg "apparently already running"
+                       log_end_msg 0
+                       exit 0
+               fi
+               if start_server ; then
+                       # NOTE: Some servers might die some time after they start,
+                       # this code will detect this issue if STARTTIME is set
+                       # to a reasonable value
+                       [ -n "$STARTTIME" ] && sleep $STARTTIME # Wait some time 
+                       if  running ;  then
+                               # It's ok, the server started and is running
+                               log_end_msg 0
+                       else
+                               # It is not running after we did start
+                               log_end_msg 1
+                       fi
+               else
+                       # Either we could not start it
+                       log_end_msg 1
+               fi
+               ;;
+       stop)
+               log_daemon_msg "Stopping $DESC" "$NAME"
+               if running ; then
+                       # Only stop the server if we see it running
+                       errcode=0
+                       stop_server || errcode=$?
+                       log_end_msg $errcode
+               else
+                       # If it's not running don't do anything
+                       log_progress_msg "apparently not running"
+                       log_end_msg 0
+                       exit 0
+               fi
+               ;;
+       force-stop)
+               # First try to stop gracefully the program
+               $0 stop
+               if running; then
+                       # If it's still running try to kill it more forcefully
+                       log_daemon_msg "Stopping (force) $DESC" "$NAME"
+                       errcode=0
+                       force_stop || errcode=$?
+                       log_end_msg $errcode
+               fi
+               ;;
+       restart|force-reload)
+               log_daemon_msg "Restarting $DESC" "$NAME"
+               errcode=0
+               stop_server || errcode=$?
+               # Wait some sensible amount, some server need this
+               [ -n "$DIETIME" ] && sleep $DIETIME
+               start_server || errcode=$?
+               [ -n "$STARTTIME" ] && sleep $STARTTIME
+               running || errcode=$?
+               log_end_msg $errcode
+               ;;
+       status)
+
+               log_daemon_msg "Checking status of $DESC" "$NAME"
+               if running ;  then
+                       log_progress_msg "running"
+                       log_end_msg 0
+               else
+                       log_progress_msg "apparently not running"
+                       log_end_msg 1
+                       exit 1
+               fi
+               ;;
+       *)
+               N=/etc/init.d/$NAME
+               echo "Usage: $N {start|stop|force-stop|restart|force-reload|status}" >&2
+               exit 1
+               ;;
+esac
+
+exit 0
index 18526be703c6733a766efdd72f88cf22358f0b1e..9f9611aa186511ef772dc2ff2b68e6af34dd8967 100755 (executable)
@@ -182,6 +182,7 @@ binary-arch: build install
        dh_installexamples -a
        dh_installdebconf -a
        dh_installinit -ppnp4nagios-bin --name=npcd
+       dh_installinit -ppnp4nagios-bin --name=pnp_gearman_worker
        dh_installman -a
        dh_link -a
        dh_strip -a