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
#!/bin/sh
2

    
3
set -e
4

    
5
: << =cut
6

    
7
=head1 NAME
8

    
9
coturn_sessions - Simple plugin to monitor sessions on coturn server
10

    
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
env.password VERYSECUREPASSWORD
19
env.port PORT
20

    
21
=head1 AUTHOR
22

    
23
Copyright (C) 2020 Sebastian L. (https://momou.ch)
24

    
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
clipassword=${password:-}
40

    
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)"
109