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 <p...@lespocky.de> --- 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 <p...@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 <p...@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