Projet

Général

Profil

Paste
Télécharger au format
Statistiques
| Branche: | Révision:

root / plugins / coturn / coturn_sessions @ e22acbdd

Historique | Voir | Annoter | Télécharger (2,49 ko)

1 0fbb8011 Sebastian Liechti
#!/bin/sh
2
3
set -e
4
5
: << =cut
6
7
=head1 NAME
8
9 e22acbdd Sebastian L
coturn_sessions - Simple plugin to monitor sessions on coturn server
10 0fbb8011 Sebastian Liechti
11
=head1 CONFIGURATION
12
13
This plugin requires a password set in /etc/turnserver.conf for telnet 
14
cli access. A telnet client has to be installed. Optionally you can 
15
specify the port of the cli interface.
16
17
[coturn_sessions]
18 e22acbdd Sebastian L
env.password VERYSECUREPASSWORD
19 0fbb8011 Sebastian Liechti
env.port PORT
20
21
=head1 AUTHOR
22
23 e22acbdd Sebastian L
Copyright (C) 2020 Sebastian L. (https://momou.ch)
24 0fbb8011 Sebastian Liechti
25
=head1 LICENSE
26
27
GPLv2
28
29
=head1 MAGIC MARKERS
30
31
 #%# family=manual
32
 #%# capabilities=autoconf
33
34
=cut
35
36
. "$MUNIN_LIBDIR/plugins/plugin.sh"
37
38
cliport=${port:-5766}
39 e22acbdd Sebastian L
clipassword=${password:-}
40 0fbb8011 Sebastian Liechti
41
get_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
53
pick_line() {
54
    local result
55
    result=$(echo "$1" | sed -n "$2"p )
56
    echo "${result:-"U"}"
57
}
58
59
60
case $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
101
esac
102
103
SESSIONS=$(get_coturn_stats | telnet 2> /dev/null | grep "Total sessions: " | sed 's/  Total sessions: //')
104
105
echo "udp_sessions.value $(pick_line "$SESSIONS" 1)"
106
echo "tcp_sessions.value $(pick_line "$SESSIONS" 2)"
107
echo "dtls_sessions.value $(pick_line "$SESSIONS" 3)"
108
echo "tls_sessions.value $(pick_line "$SESSIONS" 4)"