munin-contrib/plugins/coturn/coturn_sessions

107 lines
2.5 KiB
Bash
Executable File

#!/bin/sh
set -e
: << =cut
=head1 NAME
coturn_sessions - Simple plugin to monitor sessions on coturn server
=head1 CONFIGURATION
This plugin requires a password set in /etc/turnserver.conf for telnet
cli access. A telnet client has to be installed. Optionally you can
specify the port of the cli interface.
[coturn_sessions]
env.password VERYSECUREPASSWORD
env.port PORT
=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"
cliport=${port:-5766}
clipassword=${password:-}
get_coturn_stats() {
echo "$clipassword"
sleep 1
for i in udp tcp dtls tls
do
echo "pu $i"
sleep 1
done
}
pick_line() {
local result
result=$(echo "$1" | sed -n "$2"p )
echo "${result:-"U"}"
}
case $1 in
autoconf)
if [ -x /usr/bin/turnserver ]; then
if [ -z "$(command -v telnet)" ]; then
echo "no (telnet not found)"
exit 0
else
echo "yes"
exit 0
fi
else
echo "no (/usr/bin/turnserver not found)"
exit 0
fi
;;
config)
echo "graph_title Sessions on coturn server"
echo "graph_vlabel turn sessions by protocols"
echo "graph_info This graph shows active sessions sorted by different protocols on the coturn server."
echo "graph_args --base 1000 --lower-limit 0"
echo "udp_sessions.label udp sessions"
echo "udp_sessions.draw AREASTACK"
echo "udp_sessions.info Current number of udp sessions"
echo "udp_sessions.min 0"
echo "tcp_sessions.label tcp sessions"
echo "tcp_sessions.draw AREASTACK"
echo "tcp_sessions.info Current number of tcp sessions"
echo "tcp_sessions.min 0"
echo "dtls_sessions.label dtls sessions"
echo "dtls_sessions.draw AREASTACK"
echo "dtls_sessions.info Current number of dtls sessions"
echo "dtls_sessions.min 0"
echo "tls_sessions.label tls sessions"
echo "tls_sessions.draw AREASTACK"
echo "tls_sessions.info Current number of tls sessions"
echo "tls_sessions.min 0"
exit 0
;;
esac
SESSIONS=$(get_coturn_stats | telnet 127.0.0.1 "$cliport" 2> /dev/null | grep "Total sessions: " | sed 's/ Total sessions: //')
echo "udp_sessions.value $(pick_line "$SESSIONS" 1)"
echo "tcp_sessions.value $(pick_line "$SESSIONS" 2)"
echo "dtls_sessions.value $(pick_line "$SESSIONS" 3)"
echo "tls_sessions.value $(pick_line "$SESSIONS" 4)"