Repository
Munin (contrib)
Last change
2020-10-24
Family
manual
Capabilities
Keywords
Language
Shell
License
curl
Authors

etherpadlite_

Name

etherpadlite_ - Monitor number of pads with etherpad-lite plugin called ep_pads_stats

Applicable Systems

Etherpad-Lite instances

Configuration

Requires installed ep_pads_stats (https://www.npmjs.com/package/ep_pads_stats) plugin and an installed jq, a command-line json processor.

This is a wildcard plugin. To monitor a etherpad-lite instance, link etherpadlite_<instancename> to this file.

[etherpadlite_instancename]
env.url http://127.0.0.1:9001/stats.json

Author

Copyright (C) 2020 Sebastian L. (https://momou.ch)

License

GPLv2

Magic Markers

#%# family=manual
#%# capabilities=autoconf
#!/bin/sh

set -e

: << =cut

=head1 NAME

etherpadlite_ - Monitor number of pads with etherpad-lite plugin called ep_pads_stats

=head1 APPLICABLE SYSTEMS

Etherpad-Lite instances

=head1 CONFIGURATION

Requires installed ep_pads_stats 
(https://www.npmjs.com/package/ep_pads_stats) plugin and an installed 
jq, a command-line json processor.

This is a wildcard plugin. To monitor a etherpad-lite instance, link
etherpadlite_<instancename> to this file.

 [etherpadlite_instancename]
 env.url http://127.0.0.1:9001/stats.json

=head1 AUTHOR

Copyright (C) 2020 Sebastian L. (https://momou.ch)

=head1 LICENSE

GPLv2

=head1 MAGIC MARKERS

 #%# family=manual
 #%# capabilities=autoconf

=cut

. "$MUNIN_LIBDIR/plugins/plugin.sh"

STATS_URL=${url:-"http://127.0.0.1:9001/stats.json"}
INSTANCENAME="${0##*etherpadlite_}"
CLEANINSTANCE="$(clean_fieldname "$INSTANCENAME")"

print_json_data() {
	local FIRST="$1"
	[ -z "$FIRST" ] && exit 0
	shift 1
	for KEY in "$@"; do
		VALUE=$(echo "$FIRST" | jq -cr ".$KEY")
		echo "${KEY}.value $VALUE"
	done
}

case $1 in

    autoconf)
        if [ -x /usr/bin/curl ]; then
		if [ -x /usr/bin/jq ]; then
			curl -s -f -m 2 -I "$STATS_URL" | grep -iq "Content-Type: application/json" && echo "yes" && exit 0 || echo "no (invalid or empty response from ep_pad_stats plugin ($STATS_URL))" && exit 0
		else
			echo "no (jq not found)" && exit 0
		fi
	else
		echo "no (/usr/bin/curl not found)" && exit 0
        fi
        ;;

   config)

cat << EOM
multigraph etherpadlite_$CLEANINSTANCE
graph_title Etherlite-Pads on $CLEANINSTANCE instance
graph_args --base 1000 -l 0
graph_printf %.0lf
graph_vlabel available pads
graph_info number of available pads
padsCount.label active pads
padsCount.info number of active pads
padsCount.min 0
blankPads.label blank pads
blankPads.info number of blank pads
blankPads.min 0
EOM
	exit 0
        ;;

esac

JSONSTATS=$(curl -s -f -m 2 "$STATS_URL")
echo "multigraph etherpadlite_$CLEANINSTANCE"
print_json_data "$JSONSTATS" padsCount blankPads