mirror of
https://github.com/munin-monitoring/contrib.git
synced 2018-11-08 00:59:34 +01:00
Initial version
This commit is contained in:
parent
bef497b7ba
commit
13e5226dd4
132
plugins/other/murmur_ice_users
Executable file
132
plugins/other/murmur_ice_users
Executable file
@ -0,0 +1,132 @@
|
||||
#!/usr/bin/php
|
||||
<?php
|
||||
|
||||
/*
|
||||
Plugin to monitor users on a Mumble server (a.k.a. murmur).
|
||||
Use ICE to to query murmur.
|
||||
|
||||
Origional Author: Thomas Leveil
|
||||
Contributors: none
|
||||
Version: 1.0
|
||||
|
||||
You can specify a different ip:port in the munin-node config file as follow:
|
||||
|
||||
[murmur_ice_users]
|
||||
env.host 127.0.0.1
|
||||
env.port 6502
|
||||
|
||||
|
||||
#%# family=contrib
|
||||
#%# capabilities=autoconf
|
||||
*/
|
||||
|
||||
$host = "127.0.0.1";
|
||||
$port = "6502";
|
||||
|
||||
if (isset($_ENV['host'])) $host = $_ENV['host'];
|
||||
if (isset($_ENV['port'])) $port = $_ENV['port'];
|
||||
|
||||
|
||||
switch ($argv[1])
|
||||
{
|
||||
case 'autoconf':
|
||||
do_autoconf();
|
||||
break;
|
||||
|
||||
case 'config':
|
||||
do_config();
|
||||
break;
|
||||
|
||||
default:
|
||||
do_count();
|
||||
break;
|
||||
}
|
||||
exit(1);
|
||||
|
||||
|
||||
function do_autoconf()
|
||||
{
|
||||
global $ICE, $host, $port;
|
||||
try
|
||||
{
|
||||
Ice_loadProfile();
|
||||
$iceproxy = $ICE->stringToProxy("Meta:tcp -h $host -p $port");
|
||||
$metaServer = $iceproxy->ice_checkedCast("::Murmur::Meta");
|
||||
fwrite(STDOUT, "yes\n");
|
||||
exit(0);
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
fwrite(STDOUT, "no\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
function do_config()
|
||||
{
|
||||
fwrite(STDOUT, "graph_title Mumble Users\n");
|
||||
fwrite(STDOUT, "graph_vlabel Connected Users\n");
|
||||
fwrite(STDOUT, "graph_category VoIP\n");
|
||||
fwrite(STDOUT, "graph_info This graph shows the number of connected users on a murmur server\n");
|
||||
fwrite(STDOUT, "maxusers.label Maximum number of users allowed\n");
|
||||
fwrite(STDOUT, "maxusers.type GAUGE\n");
|
||||
fwrite(STDOUT, "online.label connected users\n");
|
||||
fwrite(STDOUT, "online.type GAUGE\n");
|
||||
exit(0);
|
||||
}
|
||||
|
||||
function do_count()
|
||||
{
|
||||
global $ICE, $host, $port;
|
||||
|
||||
$totalMaxUsers="U";
|
||||
$totalConnectedUsers="U";
|
||||
|
||||
try
|
||||
{
|
||||
Ice_loadProfile();
|
||||
$iceproxy = $ICE->stringToProxy("Meta:tcp -h $host -p $port");
|
||||
$metaServer = $iceproxy->ice_checkedCast("::Murmur::Meta");
|
||||
$AdefaultConf = $metaServer->getDefaultConf();
|
||||
|
||||
$AvirtualServer = $metaServer->getBootedServers();
|
||||
|
||||
$totalMaxUsers = 0;
|
||||
foreach ($AvirtualServer as $numserver=>$s)
|
||||
{
|
||||
$maxusers = $s->getConf('users');
|
||||
if (!$maxusers) $maxusers = $AdefaultConf['users'];
|
||||
$totalMaxUsers += intval($maxusers);
|
||||
|
||||
$connectedUsers = countConnectedUsers($s->getTree());
|
||||
$totalConnectedUsers += $connectedUsers;
|
||||
}
|
||||
|
||||
|
||||
fwrite(STDOUT, "maxusers.value ".$totalMaxUsers."\n");
|
||||
fwrite(STDOUT, "online.value ".$totalConnectedUsers."\n");
|
||||
exit(0);
|
||||
}
|
||||
catch (Exception $e)
|
||||
{
|
||||
fwrite(STDERR, $e."\n");
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
function countConnectedUsers($channelTree)
|
||||
{
|
||||
$count = intval($channelTree->players);
|
||||
|
||||
if (isset($channelTree->children))
|
||||
{
|
||||
foreach ($channelTree->children as $c)
|
||||
{
|
||||
$count += countConnectedUsers($c);
|
||||
}
|
||||
}
|
||||
|
||||
return $count;
|
||||
}
|
||||
|
||||
?>
|
Loading…
Reference in New Issue
Block a user