mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Michael Olbrich <m.olbrich@pengutronix.de>
To: ptxdist@pengutronix.de
Subject: Re: [ptxdist] [PATCHv2] monit: add new package
Date: Thu, 30 Jan 2014 10:02:28 +0100	[thread overview]
Message-ID: <20140130090228.GJ9989@pengutronix.de> (raw)
In-Reply-To: <1390830245-5990-1-git-send-email-post@lespocky.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 <post@lespocky.de>

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 <post@lespocky.de>
> +#
> +# 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 <post@lespocky.de>")
> +	@$(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

      reply	other threads:[~2014-01-30  9:02 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-27 10:27 [ptxdist] [PATCH] " Alexander Dahl
2014-01-27 12:55 ` Alexander Dahl
2014-01-27 13:44   ` [ptxdist] [PATCHv2] " Alexander Dahl
2014-01-30  9:02     ` Michael Olbrich [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20140130090228.GJ9989@pengutronix.de \
    --to=m.olbrich@pengutronix.de \
    --cc=ptxdist@pengutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox