Table des matières

, , , ,

Serveur Mumble

Pour monitorer un serveur mumble (murmurd) sous Debian squeeze avec munin :

Le monitoring s'effectue grace a un plugin python que vous pouvez télécharger ici : http://exchange.munin-monitoring.org/plugins/murmur-stats/details

Prérequis

Le plugin de monitoring utilise la lib ZeroC ice qu'il faut donc installer si vous ne l'avez pas deja :

apt-get install python-zeroc-ice

Si le serveur mumble est en version 1.2.3 (backporté de wheezy en squeeze a l'heure ou j'écris ces lignes : la version squeeze classique est la 1.2.2), il faudra aussi ice33-slice :<code> apt-get install ice33-slice</code>

La version 1.2.3-349-g315b5f5-2.2+deb7u1 de debian wheezy nécesite ice34-slice :

apt-get install ice34-slice

Il faut vérifier que vous avez bien la ligne décommentée suivante dans le fichier de configuration du serveur /etc/mumble-server.ini :

ice="tcp -h 127.0.0.1 -p 6502"

Installation

Le plugin doit être déposé dans le répertoire de votre choix, j'ai décidé de le déposer dans le répertoire /usr/local/share/munin/plugins qu'il faut donc créer (adaptez au besoin a votre cas) :

mkdir -p /usr/local/share/munin/plugins

Récupérer le fichier :

wget "http://exchange.munin-monitoring.org/plugins/murmur-stats/version/1/download" -O /usr/local/share/munin/plugins/murmur-stats-v1

Rendre le script exécutable :

chmod +x /usr/local/share/munin/plugins/murmur-stats-v1

Vous devriez maintenant pouvoir tester le fonctionnement de ce plugin en le lançcant manuellement. Vous devriez obtenir queque chose ressemblant à :

# /usr/local/share/munin/plugins/murmur-stats-v1 
users.value 1
uptime.value 38.85
chancount.value 0.0
bancount.value 0

Activer le plugin dans munin

Comme toujours pour activer un plugin dans munin, il faut créer un lien symbolique dans le repertoire /etc/munin/plugins/ :

ln -s /usr/local/share/munin/plugins/murmur-stats-v1 /etc/munin/plugins/

Il faut ensuite redémarrer le servie munin-node :

/etc/init.d/munin-node restart

Et voila, vous devriez commencer a voir un nouveau graphe dans munin (apres un certain laps de temps tout de même).

Mes modifications sur le plugin

Ce plugin en l'état ne me satisfaisait pas, je l'ai donc modifié comme suit pour afficher le nombre de canaux et non pas le nombre de canaux/10 et ajouter la categorie murmur :

#!/usr/bin/env python
# -*- coding: utf-8
# Python Plugin for Munin
# Copyright (C) 2010 Natenom (Natenom@googlemail.com)
# This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later vers
ion.
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along with this program; if not, see <http://www.gnu.org/licenses/>.
#Version: 0.0.1
#2010-02-09

#Path to Murmur.ice
iceslice='/usr/share/slice/Murmur.ice'

#Murmur-Port (not needed to work, only for display purposes)
serverport=64738

#Port where ice listen
iceport=6502


import Ice, sys

# pour la compatibilité avec mumble 1.2.3 :
#Ice.loadSlice(iceslice)
Ice.loadSlice( '', ['-I' + Ice.getSliceDir(), iceslice ] )

ice = Ice.initialize()
import Murmur

if (sys.argv[1:]):
  if (sys.argv[1] == "config"):
    print 'graph_title Murmur (Port %s)' % (serverport)
    print 'graph_vlabel Count'
    print 'graph_category murmurd'
    print 'users.label Users'
    print 'uptime.label Uptime in days'
    print 'chancount.label Channelcount'
    print 'bancount.label Bans on server'
    sys.exit(0)

meta = Murmur.MetaPrx.checkedCast(ice.stringToProxy("Meta:tcp -h 127.0.0.1 -p %s" % (iceport)))
server=meta.getServer(1)
print "users.value %i" % (len(server.getUsers()))
print "uptime.value %.2f" % (float(meta.getUptime())/60/60/24)
print "chancount.value %.1f" % (len(server.getChannels()))
print "bancount.value %i" % (len(server.getBans()))

ice.shutdown()