Un service qu’il est cool !
Mongo DB Monitoring Service (MMS) est un service proposé par la société 10gen éditrice de Mongo DB.
MMS est un service permettant de collecter des informations liées au moteur Mongo DB. Ces informations collectées sont traduites sous forme de graphiques accessibles depuis la console MMS. Cerise sur le gâteau, le service est gratuit. 😆
Voici un petit aperçu des graphiques :
C’est beau hein, fermez la bouche !
Un agent qui bosse tout seul.
Les données sont collectées à l’aide d’un agent présent sur le serveur (donc sur chaque Mongo DB à surveiller), ce dernier est écrit en Python. C’est lui qui se charge d’envoyer les informations aux serveurs de 10gen, ces données sont transmises via le port 443 (l’agent n’écoute pas sur ce port).
L’agent est disponible via la console MMS, il sera donc nécessaire de créer un compte, etc… sur le site https://mms.10gen.com/. Je vous laisse gérer cette étape.
Préférez l’agent pré-configuré, pourquoi se compliquer la vie… Voir la capture ci-dessus :
L’installation se déroute de la façon suivante :
- Téléchargement de l’agent
- Décompression de l’archive téléchargée
- Déplacement de l’agent dans /opt
- Installation des dépendances nécessaires au bon fonctionnement de l’agent
- Installation d’une version plus récente de pymongo (en Debian Squeeze)
# wget https://mms.10gen.com/settings/mmsAgent/dfcb2e741r3e77857dc01bffce25f2be/10gen-mms-agent-ton-groupe.tar.gz # tar zxf 10gen-mms-agent-ton-groupe.tar.gz # mv mms-agent /opt/ # aptitude install -y python-bson python-setuptools build-essential python-dev # easy_install -U pymongo
Parce que je suis super gentil !
Mais si je suis gentil heu… Pour que l’agent puisse être gérer facilement via un start/stop/restart ou tout simplement être lancé automatiquement au démarrage du serveur il faut un script présent dans l’init.d ainsi que dans les rcX. La script ci-dessous fait tout cela et en plus il est compatible LSB (heureusement).
#!/bin/sh # # init.d script with LSB support. # # Copyright (c) 2013 Gaetan Trellu <gaetan.trellu@incloudus.com> # # This is free software; you may redistribute it and/or modify # it under the terms of the GNU General Public License as # published by the Free Software Foundation; either version 2, # or (at your option) any later version. # # This 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 with # the Debian operating system, in /usr/share/common-licenses/GPL; if # not, write to the Free Software Foundation, Inc., 59 Temple Place, # Suite 330, Boston, MA 02111-1307 USA # ### BEGIN INIT INFO # Provides: mms-agent # Required-Start: $network $local_fs $remote_fs # Required-Stop: $network $local_fs $remote_fs # Should-Start: $named # Should-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: An agent to raise mongodb stats in MMS # Description: MongoDB Monitoring Service ### END INIT INFO PATH=/sbin:/bin:/usr/sbin:/usr/bin DAEMON="/usr/bin/python /opt/mms-agent/agent.py" DESC=agent NAME=mms-agent PIDFILE=/var/run/$NAME.pid AGENT_USER=mongodb . /lib/lsb/init-functions case $1 in start) log_daemon_msg "Starting MMS agent" "mms-agent" start-stop-daemon --background --start --make-pidfile --pidfile $PIDFILE --chuid $AGENT_USER --exec $DAEMON status=$? log_end_msg $status ;; stop) log_daemon_msg "Stopping MMS agent" "mms-agent" start-stop-daemon --stop --quiet --pidfile $PIDFILE log_end_msg $? rm -f $PIDFILE ;; restart) $0 stop && sleep 2 && $0 start ;; status) status_of_proc $DAEMON "MMS agent" ;; *) echo "Usage: $0 {start|stop|restart|status}" exit 2 ;; esac
Ajout du script au rcX, étant donné que LSB il y a alors insserv exécutée sera (Yoda style).
# insserv /etc/init.d/mms-agent
The final step
Il ne reste plus qu’à démarrer le service via le script mms-agent.
# /etc/init.d/mms-agent start
Pour vérifier que tout roule comme sur des roulettes il suffit de lancer un petit ps ainsi qu’un petit netstat (mais vraiment petit).
# ps aufx | grep [a]gent
Résultat :
mongodb 4138 0.0 0.1 133496 12300 ? Sl Jun25 0:57 /usr/bin/python /opt/mms-agent/agent.py mongodb 4153 0.2 0.1 132596 14352 ? Sl Jun25 39:40 \_ /usr/bin/python /opt/mms-agent/agentProcess.py 4138
# netstat -plantu | grep 4153
Résultat :
tcp 0 0 10.63.13.119:36679 54.247.180.83:27017 ESTABLISHED 4153/python tcp 0 0 10.63.13.119:33554 54.247.122.204:27017 ESTABLISHED 4153/python tcp 0 0 10.63.13.119:58778 10.63.13.119:27017 ESTABLISHED 4153/python tcp 0 0 10.63.13.119:52206 54.247.180.79:27017 ESTABLISHED 4153/python tcp 0 0 10.63.13.119:58771 10.63.13.119:27017 ESTABLISHED 4153/python tcp 0 0 10.63.13.119:36690 54.247.180.83:27017 ESTABLISHED 4153/python tcp 0 0 10.63.13.119:33555 54.247.122.204:27017 ESTABLISHED 4153/python tcp 0 0 10.63.13.119:59719 54.247.180.79:27017 ESTABLISHED 4153/python udp 0 0 10.63.13.119:51930 172.16.0.23:53 ESTABLISHED 4153/python
Ensuite il ne vous reste plus qu’à ajouter vos serveurs à la console MMS mais encore une fois je vais vous laisser faire.
Gaëtan Trellu (goldyfruit)
Derniers articles parGaëtan Trellu (goldyfruit) (voir tous)
- Qinling, let’s the journey begin! - 23 mai 2019
- systemd-networkd, l’âge de la maturité ? - 13 mars 2018
- Hyper-V, Nova, VxLAN et Open vSwitch, enfin une belle histoire ! - 31 décembre 2017
Installation de l’agent Mongo DB Monitoring Service par Gaëtan Trellu (goldyfruit) est sous Licence Creative Commons Internationale Attribution 4.0.