107 lines
2.5 KiB
Bash
Executable File
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)"
|