{{tag>monitoring mumble murmurd squeeze munin}}
====== 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 :
apt-get install ice33-slice
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 .
#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()