1#!/bin/sh 2 3set -e 4 5: << =cut 6 7=head1 NAME 8 9coturn_sessions - Simple plugin to monitor sessions on coturn server 10 11=head1 CONFIGURATION 12 13This plugin requires a password set in /etc/turnserver.conf for telnet 14cli access. A telnet client has to be installed. Optionally you can 15specify the port of the cli interface. 16 17 [coturn_sessions] 18 env.password VERYSECUREPASSWORD 19 env.port PORT 20 21=head1 AUTHOR 22 23Copyright (C) 2020 Sebastian L. (https://momou.ch) 24 25=head1 LICENSE 26 27GPLv2 28 29=head1 MAGIC MARKERS 30 31 #%# family=manual 32 #%# capabilities=autoconf 33 34=cut 35 36. "$MUNIN_LIBDIR/plugins/plugin.sh" 37 38cliport=${port:-5766} 39clipassword=${password:-} 40 41get_coturn_stats() { 42 echo "open 127.0.0.1 $cliport" 43 sleep 1 44 echo "$clipassword" 45 sleep 1 46 for i in udp tcp dtls tls 47 do 48 echo "pu $i" 49 sleep 1 50 done 51} 52 53pick_line() { 54 local result 55 result=$(echo "$1" | sed -n "$2"p ) 56 echo "${result:-"U"}" 57} 58 59 60case $1 in 61 autoconf) 62 if [ -x /usr/bin/turnserver ]; then 63 if [ -z "$(command -v telnet)" ]; then 64 echo "no (telnet not found)" 65 exit 0 66 else 67 echo "yes" 68 exit 0 69 fi 70 else 71 echo "no (/usr/bin/turnserver not found)" 72 exit 0 73 fi 74 ;; 75 config) 76 77 echo "graph_title Sessions on coturn server" 78 echo "graph_vlabel turn sessions by protocols" 79 echo "graph_info This graph shows active sessions sorted by different protocols on the coturn server." 80 echo "graph_args --base 1000 --lower-limit 0" 81 echo "udp_sessions.label udp sessions" 82 echo "udp_sessions.draw AREASTACK" 83 echo "udp_sessions.info Current number of udp sessions" 84 echo "udp_sessions.min 0" 85 echo "tcp_sessions.label tcp sessions" 86 echo "tcp_sessions.draw AREASTACK" 87 echo "tcp_sessions.info Current number of tcp sessions" 88 echo "tcp_sessions.min 0" 89 echo "dtls_sessions.label dtls sessions" 90 echo "dtls_sessions.draw AREASTACK" 91 echo "dtls_sessions.info Current number of dtls sessions" 92 echo "dtls_sessions.min 0" 93 echo "tls_sessions.label tls sessions" 94 echo "tls_sessions.draw AREASTACK" 95 echo "tls_sessions.info Current number of tls sessions" 96 echo "tls_sessions.min 0" 97 98 exit 0 99 ;; 100 101esac 102 103SESSIONS=$(get_coturn_stats | telnet 2> /dev/null | grep "Total sessions: " | sed 's/ Total sessions: //') 104 105echo "udp_sessions.value $(pick_line "$SESSIONS" 1)" 106echo "tcp_sessions.value $(pick_line "$SESSIONS" 2)" 107echo "dtls_sessions.value $(pick_line "$SESSIONS" 3)" 108echo "tls_sessions.value $(pick_line "$SESSIONS" 4)" 109 110