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
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"
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
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).
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()