munin-contrib/plugins/onlyoffice/onlyoffice

80 lines
1.6 KiB
Bash
Executable File

#!/bin/sh
set -e
: << =cut
=head1 NAME
onlyoffice - Monitor usage (editing and viewing connections) of onlyoffice
=head1 APPLICABLE SYSTEMS
OnlyOffice instances
=head1 CONFIGURATION
Requires installed curl and jq.
=head1 AUTHOR
Copyright (C) 2023 Sebastian L. (https://momou.ch)
=head1 LICENSE
GPLv2
=head1 MAGIC MARKERS
#%# family=auto
#%# capabilities=autoconf
=cut
. "$MUNIN_LIBDIR/plugins/plugin.sh"
INFO_URL=${url:-"http://127.0.0.1/info/info.json"}
TIMEOUT="${timeout:-2}"
fetch_url () {
curl -s -f -m "${TIMEOUT}" "$@"
}
case $1 in
autoconf)
if [ ! -x "$(command -v curl)" ]; then
echo "no (curl not found)"
elif [ ! -x "$(command -v jq)" ]; then
echo "no (jq not found)"
else
fetch_url -I "${INFO_URL}" \
| grep -iq "Content-Type: application/json" \
&& echo "yes" \
|| echo "no (invalid or empty response from onlyoffice info api)"
fi
exit 0
;;
config)
echo "multigraph onlyoffice_usage"
echo "graph_title OnlyOffice usage"
echo "graph_category appserver"
echo "graph_vlabel connections"
echo "graph_info This graph shows current editing and viewing connections."
echo "graph_args --base 1000 --lower-limit 0"
echo "edits.label editing"
echo "edits.info Current number of editing connections"
echo "edits.min 0"
echo "views.label viewing"
echo "views.info Current number of viewing connections"
echo "views.min 0"
exit 0
;;
esac
INFOS=$(fetch_url "$INFO_URL")
echo "multigraph onlyoffice_usage"
echo "edits.value $(echo "$INFOS" | jq .quota.edit.connectionsCount)"
echo "views.value $(echo "$INFOS" | jq .quota.view.connectionsCount)"