Mnrpes is a system that uses MCollective and the Rufus scheduler

to build a distributed async scheduler and checker for Nagios
based on the Passive mode.

WWW: https://github.com/nullDowntimeLtd/mnrpes

PR:		ports/188420
Submitted by:	ports@robakdesign.com
This commit is contained in:
Steve Wills 2014-04-13 02:10:02 +00:00
parent 37bed79b31
commit 818910f45e
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=351172
7 changed files with 312 additions and 0 deletions

View file

@ -517,6 +517,7 @@
SUBDIR += mkfwimage
SUBDIR += mkntpwd
SUBDIR += mksunbootcd
SUBDIR += mnrpes
SUBDIR += modules
SUBDIR += monit
SUBDIR += monitord

52
sysutils/mnrpes/Makefile Normal file
View file

@ -0,0 +1,52 @@
# $FreeBSD$
PORTNAME= mnrpes
PORTVERSION= 2014033101
CATEGORIES= sysutils
MAINTAINER= ports@robakdesign.com
COMMENT= MCollective and Rufus scheduler wrapper
LICENSE= APACHE20
RUN_DEPENDS= mcollective>=2:${PORTSDIR}/sysutils/mcollective \
rubygem-rufus-scheduler>=0.1:${PORTSDIR}/devel/rubygem-rufus-scheduler
USE_RUBY= yes
USE_GITHUB= yes
GH_ACCOUNT= nullDowntimeLtd
GH_TAGNAME= ${GH_COMMIT}
GH_COMMIT= 0b67031
USE_RC_SUBR= mnrpes_receiver \
mnrpes_scheduler
RESETPREFIX= ${PREFIX}
PLIST_SUB+= PORTNAME=${PORTNAME} \
RESETPREFIX=${RESETPREFIX}
NO_BUILD= yes
do-install:
${MKDIR} ${STAGEDIR}${ETCDIR}
${MKDIR} ${STAGEDIR}${RUBY_SITELIBDIR}/${PORTNAME}
${MKDIR} ${STAGEDIR}${RUBY_SITELIBDIR}/${PORTNAME}/output
${INSTALL_SCRIPT} ${WRKSRC}/bin/mnrpes-receiver.rb ${STAGEDIR}${PREFIX}/bin/
${INSTALL_SCRIPT} ${WRKSRC}/bin/mnrpes-scheduler.rb ${STAGEDIR}${PREFIX}/bin/
${INSTALL_SCRIPT} ${WRKSRC}/lib/mnrpes.rb ${STAGEDIR}${RUBY_SITELIBDIR}/
${INSTALL_SCRIPT} ${WRKSRC}/lib/mnrpes/receiver.rb ${STAGEDIR}${RUBY_SITELIBDIR}/mnrpes/
${INSTALL_SCRIPT} ${WRKSRC}/lib/mnrpes/scheduler.rb ${STAGEDIR}${RUBY_SITELIBDIR}/mnrpes/
${INSTALL_SCRIPT} ${WRKSRC}/lib/mnrpes/output/flapjack.rb ${STAGEDIR}${RUBY_SITELIBDIR}/mnrpes/output/
${INSTALL_SCRIPT} ${WRKSRC}/lib/mnrpes/output/nagios.rb ${STAGEDIR}${RUBY_SITELIBDIR}/mnrpes/output/
${INSTALL_SCRIPT} ${WRKSRC}/lib/mnrpes/output/redis_status.rb ${STAGEDIR}${RUBY_SITELIBDIR}/mnrpes/output/
${INSTALL_SCRIPT} ${WRKSRC}/lib/mnrpes/output/stdout.rb ${STAGEDIR}${RUBY_SITELIBDIR}/mnrpes/output/
${INSTALL_DATA} ${WRKSRC}/etc/checks.txt.dist ${STAGEDIR}${ETCDIR}
${INSTALL_DATA} ${WRKSRC}/etc/mnrpes-receiver.cfg.dist ${STAGEDIR}${ETCDIR}
${INSTALL_DATA} ${WRKSRC}/etc/mnrpes-scheduler.cfg.dist ${STAGEDIR}${ETCDIR}
post-install:
${MKDIR} ${STAGEDIR}/var/run/${PORTNAME}
${MKDIR} ${STAGEDIR}/var/log/${PORTNAME}
.include <bsd.port.mk>

2
sysutils/mnrpes/distinfo Normal file
View file

@ -0,0 +1,2 @@
SHA256 (mnrpes-2014033101.tar.gz) = 7b4b3c88ca739d8bc19f12f58df9c309242f7e80736613bed28cfbc21acce632
SIZE (mnrpes-2014033101.tar.gz) = 82215

View file

@ -0,0 +1,114 @@
#!/bin/sh
# $FreeBSD$
#
# mnrpes_receiver startup script
#
# PROVIDE: mnrpes_receiver
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following to /etc/rc.conf[.local] to enable this service
#
# mnrpes_receiver_enable="YES"
#
# You can fine tune others variables too:
# mnrpes_receiver_config=
# Use mnrpes_receiver_user to run mnrpes_receiver as user
# mnrpes_receiver rc.d script supports multiple profiles (a-la rc.d/nginx)
# When profiles are specified, the non-profile specific parameters become defaults.
#
# Example:
#
# mnrpes_receiver_enable="YES"
# mnrpes_receiver_profiles="myserver myotherserver"
# mnrpes_receiver_config="/usr/local/etc/mnrpes/mnrpes-receiver.cfg"
# mnrpes_receiver_myserver_user="myuser"
# mnrpes_receiver_myotherserver_user="myotheruser"
# mnrpes_receiver_myotherserver_config="/usr/local/etc/mnrpes/mnrpes-receiver-myotherserver.cfg"
. /etc/rc.subr
name="mnrpes_receiver"
rcvar=mnrpes_receiver_enable
mnrpes_receiver_setfib() {
if command -v check_namevarlist > /dev/null 2>&1; then
check_namevarlist fib && return 0
fi
${SYSCTL} net.fibs >/dev/null 2>&1 || return 0
mnrpes_receiver_fib=${mnrpes_receiver_fib:-"NONE"}
case "$mnrpes_receiver_fib" in
[Nn][Oo][Nn][Ee])
;;
*)
command="setfib -F ${mnrpes_receiver_fib} ${command}"
;;
esac
}
mnrpes_receiver_precmd() {
user="$1"
piddir="$2"
logdir="$3"
mnrpes_receiver_setfib
install -d -o $user -g wheel -m 1750 "${piddir}"
install -d -o $user -g wheel -m 1750 "${logdir}"
}
command_interpreter="ruby"
piddir="/var/run/mnrpes/receiver"
pidname="receiver"
logdir="/var/log/mnrpes/receiver"
load_rc_config $name
# These are just the defaults, they might get overriden for a specific profile.
mnrpes_receiver_enable=${mnrpes_receiver_enable:-"NO"}
mnrpes_receiver_user=${mnrpes_receiver_user:-"nobody"}
mnrpes_receiver_config=${mnrpes_receiver_config:-"/usr/local/etc/mnrpes/mnrpes-receiver.cfg"}
# This handles profile specific vars.
if [ -n "$2" ]; then
profile="$2"
if [ -n "${mnrpes_receiver_profiles}" ]; then
piddir="${piddir}.${profile}"
pidname="${pidname}.${profile}"
logdir="${logdir}.${profile}"
eval mnrpes_receiver_enable="\${mnrpes_receiver_${profile}_enable:-${mnrpes_receiver_enable}}"
eval mnrpes_receiver_fib="\${mnrpes_receiver_${profile}_fib:-${mnrpes_receiver_fib}}"
eval mnrpes_receiver_user="\${mnrpes_receiver_${profile}_user:-${mnrpes_receiver_user}}"
eval mnrpes_receiver_config="\${mnrpes_receiver_${profile}_config:-${mnrpes_receiver_config}}"
else
echo "$0: extra argument ignored"
fi
else
if [ -n "${mnrpes_receiver_profiles}" -a -n "$1" ]; then
for profile in ${mnrpes_receiver_profiles}; do
echo "===> mnrpes_receiver profile: ${profile}"
/usr/local/etc/rc.d/mnrpes_receiver $1 ${profile}
retcode="$?"
if [ "0${retcode}" -ne 0 ]; then
failed="${profile} (${retcode}) ${failed:-}"
else
success="${profile} ${success:-}"
fi
done
# It exits so that non-profile rc.d is not started when there are profiles.
exit 0
fi
fi
pidfile="${piddir}/${pidname}.pid"
command="/usr/local/bin/mnrpes-receiver.rb"
start_precmd="mnrpes_receiver_precmd ${mnrpes_receiver_user} ${piddir} ${logdir}"
command_args="--pid ${pidfile} --config ${mnrpes_receiver_config}"
run_rc_command "$1"

View file

@ -0,0 +1,119 @@
#!/bin/sh
# $FreeBSD$
#
# mnrpes_scheduler startup script
#
# PROVIDE: mnrpes_scheduler
# REQUIRE: LOGIN
# KEYWORD: shutdown
#
# Add the following to /etc/rc.conf[.local] to enable this service
#
# mnrpes_scheduler_enable="YES"
#
# You can fine tune others variables too:
# mnrpes_scheduler_config=
# mnrpes_scheduler_checks=
# Use mnrpes_scheduler_user to run mnrpes_scheduler as user
# mnrpes_scheduler rc.d script supports multiple profiles (a-la rc.d/nginx)
# When profiles are specified, the non-profile specific parameters become defaults.
#
# Example:
#
# mnrpes_scheduler_enable="YES"
# mnrpes_scheduler_profiles="myserver myotherserver"
# mnrpes_scheduler_config="/usr/local/etc/mnrpes/mnrpes-scheduler.cfg"
# mnrpes_scheduler_checks="/usr/local/etc/mnrpes/checks.txt"
# mnrpes_scheduler_myserver_user="myuser"
# mnrpes_scheduler_myotherserver_user="myotheruser"
# mnrpes_scheduler_myotherserver_config="/usr/local/etc/mnrpes/mnrpes-scheduler-myotherserver.cfg"
# mnrpes_scheduler_myotherserver_checks="/usr/local/etc/mnrpes/checks-myotherserver.txt"
. /etc/rc.subr
name="mnrpes_scheduler"
rcvar=mnrpes_scheduler_enable
mnrpes_scheduler_setfib() {
if command -v check_namevarlist > /dev/null 2>&1; then
check_namevarlist fib && return 0
fi
${SYSCTL} net.fibs >/dev/null 2>&1 || return 0
mnrpes_scheduler_fib=${mnrpes_scheduler_fib:-"NONE"}
case "$mnrpes_scheduler_fib" in
[Nn][Oo][Nn][Ee])
;;
*)
command="setfib -F ${mnrpes_scheduler_fib} ${command}"
;;
esac
}
mnrpes_scheduler_precmd() {
user="$1"
piddir="$2"
logdir="$3"
mnrpes_scheduler_setfib
install -d -o $user -g wheel -m 1750 "${piddir}"
install -d -o $user -g wheel -m 1750 "${logdir}"
}
command_interpreter="ruby"
piddir="/var/run/mnrpes/scheduler"
pidname="scheduler"
logdir="/var/log/mnrpes/scheduler"
load_rc_config $name
# These are just the defaults, they might get overriden for a specific profile.
mnrpes_scheduler_enable=${mnrpes_scheduler_enable:-"NO"}
mnrpes_scheduler_user=${mnrpes_scheduler_user:-"nobody"}
mnrpes_scheduler_config=${mnrpes_scheduler_config:-"/usr/local/etc/mnrpes/mnrpes-scheduler.cfg"}
mnrpes_scheduler_checks=${mnrpes_scheduler_checks:-"/usr/local/etc/mnrpes/checks.txt"}
# This handles profile specific vars.
if [ -n "$2" ]; then
profile="$2"
if [ -n "${mnrpes_scheduler_profiles}" ]; then
piddir="${piddir}.${profile}"
pidname="${pidname}.${profile}"
logdir="${logdir}.${profile}"
eval mnrpes_scheduler_enable="\${mnrpes_scheduler_${profile}_enable:-${mnrpes_scheduler_enable}}"
eval mnrpes_scheduler_fib="\${mnrpes_scheduler_${profile}_fib:-${mnrpes_scheduler_fib}}"
eval mnrpes_scheduler_user="\${mnrpes_scheduler_${profile}_user:-${mnrpes_scheduler_user}}"
eval mnrpes_scheduler_config="\${mnrpes_scheduler_${profile}_config:-${mnrpes_scheduler_config}}"
eval mnrpes_scheduler_checks="\${mnrpes_scheduler_${profile}_checks:-${mnrpes_scheduler_checks}}"
else
echo "$0: extra argument ignored"
fi
else
if [ -n "${mnrpes_scheduler_profiles}" -a -n "$1" ]; then
for profile in ${mnrpes_scheduler_profiles}; do
echo "===> mnrpes_scheduler profile: ${profile}"
/usr/local/etc/rc.d/mnrpes_scheduler $1 ${profile}
retcode="$?"
if [ "0${retcode}" -ne 0 ]; then
failed="${profile} (${retcode}) ${failed:-}"
else
success="${profile} ${success:-}"
fi
done
# It exits so that non-profile rc.d is not started when there are profiles.
exit 0
fi
fi
pidfile="${piddir}/${pidname}.pid"
command="/usr/local/bin/mnrpes-scheduler.rb"
start_precmd="mnrpes_scheduler_precmd ${mnrpes_scheduler_user} ${piddir} ${logdir}"
command_args="--pid ${pidfile} --config ${mnrpes_scheduler_config} --checks ${mnrpes_scheduler_checks}"
run_rc_command "$1"

View file

@ -0,0 +1,5 @@
Mnrpes is a system that uses MCollective and the Rufus scheduler
to build a distributed async scheduler and checker for Nagios
based on the Passive mode.
WWW: https://github.com/nullDowntimeLtd/mnrpes

19
sysutils/mnrpes/pkg-plist Normal file
View file

@ -0,0 +1,19 @@
bin/mnrpes-receiver.rb
bin/mnrpes-scheduler.rb
%%ETCDIR%%/checks.txt.dist
%%ETCDIR%%/mnrpes-receiver.cfg.dist
%%ETCDIR%%/mnrpes-scheduler.cfg.dist
%%RUBY_SITELIBDIR%%/mnrpes.rb
%%RUBY_SITELIBDIR%%/%%PORTNAME%%/receiver.rb
%%RUBY_SITELIBDIR%%/%%PORTNAME%%/scheduler.rb
%%RUBY_SITELIBDIR%%/%%PORTNAME%%/output/flapjack.rb
%%RUBY_SITELIBDIR%%/%%PORTNAME%%/output/nagios.rb
%%RUBY_SITELIBDIR%%/%%PORTNAME%%/output/redis_status.rb
%%RUBY_SITELIBDIR%%/%%PORTNAME%%/output/stdout.rb
@dirrmtry %%ETCDIR%%
@dirrm %%RUBY_SITELIBDIR%%/%%PORTNAME%%/output
@dirrm %%RUBY_SITELIBDIR%%/%%PORTNAME%%
@cwd /
@dirrmtry var/run/%%PORTNAME%%
@dirrmtry var/log/%%PORTNAME%%
@cwd %%RESETPREFIX%%