From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from ptx.hi.pengutronix.de ([2001:6f8:1178:2:5054:ff:fec0:8e10] ident=Debian-exim) by metis.ext.pengutronix.de with esmtp (Exim 4.72) (envelope-from ) id 1W8nW0-0007YD-Gj for ptxdist@pengutronix.de; Thu, 30 Jan 2014 10:02:28 +0100 Received: from mol by ptx.hi.pengutronix.de with local (Exim 4.80) (envelope-from ) id 1W8nW0-0000dV-FJ for ptxdist@pengutronix.de; Thu, 30 Jan 2014 10:02:28 +0100 Date: Thu, 30 Jan 2014 10:02:28 +0100 From: Michael Olbrich Message-ID: <20140130090228.GJ9989@pengutronix.de> References: <9cb7cd6ce63ef453ad2ff1ea33c4c568@idefix.lespocky.dyndns.org> <1390830245-5990-1-git-send-email-post@lespocky.de> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1390830245-5990-1-git-send-email-post@lespocky.de> Subject: Re: [ptxdist] [PATCHv2] monit: add new package Reply-To: ptxdist@pengutronix.de List-Id: PTXdist Development Mailing List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: ptxdist-bounces@pengutronix.de Errors-To: ptxdist-bounces@pengutronix.de To: ptxdist@pengutronix.de On Mon, Jan 27, 2014 at 02:44:05PM +0100, Alexander Dahl wrote: > This adds the system monitoring daemon 'monit'. An init script for > busybox init method is included and a generic config file to start with. > > Signed-off-by: Alexander Dahl Thanks, applied. Michael > --- > generic/etc/init.d/monit | 167 ++++++++++++++++++++++++++++++++++++++++++++++ > generic/etc/monitrc | 8 +++ > rules/monit-bbinit.in | 9 +++ > rules/monit.in | 26 ++++++++ > rules/monit.make | 76 +++++++++++++++++++++ > 5 files changed, 286 insertions(+) > create mode 100644 generic/etc/init.d/monit > create mode 100644 generic/etc/monitrc > create mode 100644 rules/monit-bbinit.in > create mode 100644 rules/monit.in > create mode 100644 rules/monit.make > > diff --git a/generic/etc/init.d/monit b/generic/etc/init.d/monit > new file mode 100644 > index 0000000..96ec86a > --- /dev/null > +++ b/generic/etc/init.d/monit > @@ -0,0 +1,167 @@ > +#!/bin/sh > + > +PATH=/sbin:/usr/sbin:/bin:/usr/bin > +DESC="daemon monitor" > +NAME=monit > +DAEMON=/usr/bin/$NAME > +CONFIG="/etc/monitrc" > +PIDFILE=/var/run/$NAME.pid > +SCRIPTNAME=/etc/init.d/$NAME > +MONIT_OPTS= > + > +# exit if binary is missing > +[ -x "$DAEMON" ] || exit 0 > + > +monit_check_config() { > + # Check for existing config file > + if [ ! -f "$CONFIG" ] > + then > + echo " missing config, please edit $CONFIG." > + exit 1 > + fi > + > + # Check for emtpy config > + if [ $(grep -cv '^\s*$\|^\s*#' $CONFIG) -eq 0 ] > + then > + echo " empty config, please edit $CONFIG." > + exit 2 > + fi > + > + # Let monit check syntax > + if ! $DAEMON -c $CONFIG -t >/dev/null 2>&1 > + then > + echo " syntax error in $CONFIG" > + exit 3 > + fi > +} > + > +is_running() { > + start-stop-daemon -K --quiet --test --exec $DAEMON \ > + --pidfile $PIDFILE > +} > + > +do_start() { > + is_running && return 1 > + start-stop-daemon -S --quiet --pidfile $PIDFILE --exec $DAEMON -- \ > + $MONIT_OPTS || return 2 > +} > + > +do_stop() { > + is_running || return 0 > + start-stop-daemon -K --quiet --pidfile $PIDFILE --exec $DAEMON > + RETVAL="$?" > + > + # wait up to 30 seconds until daemon stopped > + for i in $(seq 30) > + do > + sleep 1 > + echo -n '.' > + if ! is_running > + then > + break > + fi > + done > + > + # see if it's still running > + if is_running > + then > + start-stop-daemon -K --quiet --signal KILL --pidfile $PIDFILE \ > + --exec $DAEMON > + > + for i in $(seq 5) > + do > + sleep 1 > + echo -n '.' > + if ! is_running > + then > + break > + fi > + done > + > + if is_running > + then > + return 2 > + fi > + fi > + > + rm -f $PIDFILE > + return "$RETVAL" > +} > + > +do_reload() { > + # monit has an own call for this, no need to send SIGHUP > + $DAEMON reload > +} > + > +monit_check_perms() { > + # Check the permission on configfile. > + # The permission must not have more than -rwx------ (0700) permissions. > + > + # Skip checking, fix perms instead. > + /bin/chmod go-rwx $CONFIG > +} > + > +monit_checks() { > + # Check for emtpy configfile > + monit_check_config > + # Check permissions of configfile > + monit_check_perms > +} > + > +case "$1" in > + start) > + monit_checks > + do_start > + case "$?" in > + 0) ;; > + 1) echo "$DESC already running." ;; > + *) echo "Starting $DESC failed." ;; > + esac > + ;; > + stop) > + echo -n "Stopping $DESC ." > + do_stop > + case "$?" in > + 0|1) echo " Done." ;; > + *) echo " Failed." ;; > + esac > + ;; > + reload) > + do_reload > + ;; > + restart|force-reload) > + echo -n "Restarting $DESC .." > + do_stop > + case "$?" in > + 0|1) > + echo "" > + do_start > + case "$?" in > + 0) ;; > + 1) echo " Failed." ;; # Old process still running > + *) echo " Failed." ;; # Failed to start > + esac > + ;; > + *) > + echo " Failed." # Failed to stop > + ;; > + esac > + ;; > + status) > + if is_running > + then > + echo "$NAME is running with PID $(cat $PIDFILE) ..." > + else > + echo "$NAME is not running" > + fi > + ;; > + syntax) > + $DAEMON -c $CONFIG -t > + ;; > + *) > + echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload|status}" >&2 > + exit 3 > + ;; > +esac > + > +: > diff --git a/generic/etc/monitrc b/generic/etc/monitrc > new file mode 100644 > index 0000000..b182058 > --- /dev/null > +++ b/generic/etc/monitrc > @@ -0,0 +1,8 @@ > +set daemon 120 > +set logfile /var/log/monit.log > +set idfile /var/lib/monit/id > +set pidfile /var/run/monit.pid > +set statefile /var/lib/monit/state > +set eventqueue > + basedir /var/lib/monit/events > + slots 100 > diff --git a/rules/monit-bbinit.in b/rules/monit-bbinit.in > new file mode 100644 > index 0000000..94bf2e9 > --- /dev/null > +++ b/rules/monit-bbinit.in > @@ -0,0 +1,9 @@ > +## SECTION=initmethod_bbinit > + > +config MONIT_BBINIT_LINK > + string > + depends on MONIT_STARTSCRIPT > + prompt "monit" > + default "S98monit" > + > +# vim: ft=kconfig noet tw=72 > diff --git a/rules/monit.in b/rules/monit.in > new file mode 100644 > index 0000000..8d20d22 > --- /dev/null > +++ b/rules/monit.in > @@ -0,0 +1,26 @@ > +## SECTION=shell_and_console > + > +menuconfig MONIT > + tristate > + prompt "monit " > + select OPENSSL if MONIT_SSL > + select BUSYBOX_START_STOP_DAEMON if MONIT_STARTSCRIPT > + select BUSYBOX_FEATURE_START_STOP_DAEMON_LONG_OPTIONS if MONIT_STARTSCRIPT > + help > + Utility for managing and monitoring of processes, programs, files, > + directories, and filesystems. > + > +if MONIT > + > +config MONIT_SSL > + bool > + prompt "SSL support" > + > +config MONIT_STARTSCRIPT > + bool > + prompt "install /etc/init.d/monit" > + default y > + > +endif > + > +# vim: ft=kconfig noet tw=72 > diff --git a/rules/monit.make b/rules/monit.make > new file mode 100644 > index 0000000..860d115 > --- /dev/null > +++ b/rules/monit.make > @@ -0,0 +1,76 @@ > +# -*-makefile-*- > +# > +# Copyright (C) 2014 by Alexander Dahl > +# > +# See CREDITS for details about who has contributed to this project. > +# > +# For further information about the PTXdist project and license conditions > +# see the README file. > +# > + > +# > +# We provide this package > +# > +PACKAGES-$(PTXCONF_MONIT) += monit > + > +# > +# Paths and names > +# > +MONIT_VERSION := 5.6 > +MONIT_MD5 := 19dfc1ce8512e832134d06eedd96ba50 > +MONIT := monit-$(MONIT_VERSION) > +MONIT_SUFFIX := tar.gz > +MONIT_URL := http://mmonit.com/monit/dist/$(MONIT).$(MONIT_SUFFIX) > +MONIT_SOURCE := $(SRCDIR)/$(MONIT).$(MONIT_SUFFIX) > +MONIT_DIR := $(BUILDDIR)/$(MONIT) > +MONIT_LICENSE := AGPLv3 > + > +# ---------------------------------------------------------------------------- > +# Prepare > +# ---------------------------------------------------------------------------- > + > +MONIT_CONF_ENV := $(CROSS_ENV) \ > + libmonit_cv_setjmp_available=yes \ > + libmonit_cv_vsnprintf_c99_conformant=yes > + > +MONIT_CONF_TOOL := autoconf > +MONIT_CONF_OPT := $(CROSS_AUTOCONF_USR) \ > + --without-pam \ > + --enable-optimized \ > + --enable-largefile \ > + --$(call ptx/wwo, PTXCONF_MONIT_SSL)-ssl \ > + --with-ssl-dir=$(SYSROOT)/usr > + > +# ---------------------------------------------------------------------------- > +# Target-Install > +# ---------------------------------------------------------------------------- > + > +$(STATEDIR)/monit.targetinstall: > + @$(call targetinfo) > + > + @$(call install_init, monit) > + @$(call install_fixup, monit,PRIORITY,optional) > + @$(call install_fixup, monit,SECTION,base) > + @$(call install_fixup, monit,AUTHOR,"Alexander Dahl ") > + @$(call install_fixup, monit,DESCRIPTION,missing) > + > + @$(call install_copy, monit, 0, 0, 0755, -, /usr/bin/monit) > + @$(call install_copy, monit, 0, 0, 0755, /var/lib/monit) > + @$(call install_copy, monit, 0, 0, 0755, /var/lib/monit/events) > + @$(call install_alternative, monit, 0, 0, 0600, /etc/monitrc) > + > +ifdef PTXCONF_INITMETHOD_BBINIT > +ifdef PTXCONF_MONIT_STARTSCRIPT > + @$(call install_alternative, monit, 0, 0, 0755, /etc/init.d/monit) > +ifneq ($(call remove_quotes,$(PTXCONF_MONIT_BBINIT_LINK)),) > + @$(call install_link, monit, ../init.d/monit, \ > + /etc/rc.d/$(PTXCONF_MONIT_BBINIT_LINK)) > +endif > +endif > +endif > + > + @$(call install_finish, monit) > + > + @$(call touch) > + > +# vim: ft=make noet > -- > 1.7.10.4 > > > -- > ptxdist mailing list > ptxdist@pengutronix.de > -- Pengutronix e.K. | | Industrial Linux Solutions | http://www.pengutronix.de/ | Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 | -- ptxdist mailing list ptxdist@pengutronix.de