Projet

Général

Profil

Révision 0fbb8011

ID0fbb80119c25a111d2677ddca958d86a04c9eb74
Parent 898224ba
Enfant e22acbdd

Ajouté par Sebastian Liechti il y a plus de 5 ans

Simple plugin to monitor coturn turn/stun server

... via telnet

Voir les différences:

plugins/coturn/coturn_sessions
1
#!/bin/sh
2

  
3
set -e
4

  
5
: << =cut
6

  
7
=head1 NAME
8

  
9
coturn - 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.clipassword VERYSECUREPASSWORD
19
env.port PORT
20

  
21
=head1 AUTHOR
22

  
23
Copyright (C) 2020 Sebastian L. <sebastiab@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=${port:-}
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

  

Formats disponibles : Unified diff