mailarchive of the ptxdist mailing list
 help / color / mirror / Atom feed
From: Alexander Dahl <post@lespocky.de>
To: ptxdist@pengutronix.de
Subject: [ptxdist] [PATCH] monit: add new package
Date: Mon, 27 Jan 2014 11:27:19 +0100	[thread overview]
Message-ID: <1390818439-32183-1-git-send-email-post@lespocky.de> (raw)

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>
---
 generic/etc/init.d/monit |  167 ++++++++++++++++++++++++++++++++++++++++++++++
 generic/etc/monitrc      |    8 +++
 rules/monit-bbinit.in    |    9 +++
 rules/monit.in           |   26 ++++++++
 rules/monit.make         |   74 ++++++++++++++++++++
 5 files changed, 284 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..810b9b4
--- /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/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..7dbe4f0
--- /dev/null
+++ b/rules/monit.make
@@ -0,0 +1,74 @@
+# -*-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)
+
+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

             reply	other threads:[~2014-01-27 10:32 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-01-27 10:27 Alexander Dahl [this message]
2014-01-27 12:55 ` Alexander Dahl
2014-01-27 13:44   ` [ptxdist] [PATCHv2] " Alexander Dahl
2014-01-30  9:02     ` Michael Olbrich
  -- strict thread matches above, loose matches on Subject: below --
2014-01-20 16:17 [ptxdist] determining compiler/libc/target capabilities for monit Alexander Dahl
2014-01-20 19:30 ` [ptxdist] [PATCH] monit: add new package Robert Schwebel
2014-01-21  8:51   ` Alexander Dahl
2014-01-21  9:31     ` Michael Olbrich

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=1390818439-32183-1-git-send-email-post@lespocky.de \
    --to=post@lespocky.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