Compter les utilisateurs connectés et enregistrés avec ejabberd
Eh bien, voilà un billet un peu technique, ça manquait !
La problématique est la suivante : on a installé un serveur Jabber ejabberd (au passage, c'est une grossière erreur, ce serveur est en ERLANG, et j'me rend compte après coup que j'y suis allergique) sans se prendre la tête. Donc, ce ejabberd a décidé d'utiliser la base de données mnesia (un truc inconnu qui est un pote à ERLANG, justement).
Alors, je vous laisse chercher longtemps pour faire une requette PHP là dedans...
Heureusement, je suis tombé sur un truc formidable, tout à l'heure : mod_ctlextra, en faisant une n-ième recherche sur leur site officiel.
Bref, ce module ajoute pleins de fonctions inutiles, dont :
stats registeredusers number of registered users
stats onlineusers number of logged users
De plus, l'installation a été très simple sur lanoiraude :
On commence par se placer dans un répertoire qui servira pour récupérer la copie courante de ce module.
svn co https://svn.process-one.net/ejabberd-modulesEnsuite, on va dans le répertoire de ce module :cd ejabberd-modules/mod_ctlextra/trunkOn va construire le bidule :
./build.shEnsuite, dans le dossier ebin, on tombe sur le fichier intéressant mod_ctlextra.beam ! On le met dans /var/lib/ejabberd et il n'y a plus qu'à ajouter ça au ejabberd.cfg : {mod_ctlextra, []},(Oui, Jérémy, cette syntaxe de malade, c'est du ERLANG !)Et voilà, il ne nous reste plus qu'à redémarrer le serveur pour bénéficier de ces nouvelles commandes ultra pratiques !
Ensuite, un petit peu de Python, un petit tour dans crontab et on obtient ça : stat.txt ! _o/
Publié le dimanche 20 mai 2007, par xbright dans la catégorie : Programmation - Lien permanent
Commentaires
7 commentaires
dimanche 20 mai 2007
15:18
Faut pas etre allergique à Erlang. C'est pour cela qu'ejabberd est tant au-dessus de la concurrence, notamment en terme de performance.
Erlang est déroutant au début mais on s'y fait très vite.
Bon courage !
— Mickael1 commentaire(s) - Trolleur égaré
dimanche 20 mai 2007
16:25
Merci ;-)
Je remet pas en cause les performances de ejabberd, hein. C'est très stable et tout.
Mais, ça fait bizarre, quand même le fichier de configuration ^^
— xbright366 commentaire(s) - Squatteur <3
dimanche 20 mai 2007
18:04
C'est parce qu'il ne « faut pas être allergique à Erlang » que « ejabberd est tant au-dessus de la concurrence » ? :D
N'empêche que moi j'aimerai bien voir de VRAIS chiffres, et pas juste un commentaire orgueilleux comme on peut souvent en voir.
Genre des benchmarks pour vérifier si oui ou non ejabberd est tellement si bien qu'aimerait nous le faire croire certaines personnes. Ça au moins ça serait parlant (toujours plus que les paroles d'évangiles qu'on essai de nous faire gober sans cesse).
Parce que dire que Foo est meilleur que Bar sans aucun argument valable, moi aussi je peux le faire hein ;)
D'ailleurs, aux dernières nouvelles on appelle ça un troll :)
Et ce n'est pas le nombre d'utilisateur qui est représentatif de la « performance » d'un logiciel (y'a qu'à voir avec msn par exemple, c'est le réseau d'im le plus utilisé en France, et pourtant il est loin derrière xmpp en terme de possibilité, et de performance).
— Elghinn23 commentaire(s) - Trolleur de passage
dimanche 10 juin 2007
11:14
Salut,
Je sais bien Elghinn que tu es allergique à ejabberd, mais des chiffres on en a plein et nous avons déjà communiqué dessus.
Tout d'abord, des chiffres en terme de performance, on en a beaucoup. Record d'utilisateurs simultanés en benchmark en laboratoire: 600 000 utilisateurs.
On peut toujours discuter des scénarii de benchmark, mais cela donne quand même une bonne idée de la possibilité de montée en charge.
Record d'utilisateurs en production (donc un truc vérifiable et non contestable): 350 000 utilisateurs simultané pour un domaine.
Tout cela est scientifique, reproductible et vérifiable auprès de ces clients.
Parmi les autres serveurs Jabber, XCP est certainement celui qui monte le plus en charge et il n'a aucune référence en production sur ce type de volume. On doit être dans un rapport de 1 à 3. Je ne parle donc même pas des autres serveurs.
Voilà, j'espère avoir démontré que ce n'est pas de l'orgueil mais du factuel. Tu sais, on est une équipe d'amoureux de la technique, pas de commerciaux, et on doit se faire violence pour affirmer ce genre de chose, car ce n'est pa notre habitude de nous "vanter" comme cela. Mais, en l'occurence, les concurrents américains ont moins de scrupules et on doit rétablir la vérité si on ne veut pas se faire écraser par la puissanc de communication des boites américaines.
Et pour le fichier de configuration, oui je suis d'accord et dans la roadmap nous avons prévu dans le futur un passage à XML.
Merci pour vos remarques !
— Mickaël Rémond2 commentaire(s) - Trolleur égaré
dimanche 10 juin 2007
11:19
A propos, pour compter les utilisateurs en ligne, pas besoin d'être un gourou d'Erlang:
La commande ejabberdctl permet de récupérer le nombre d'utilisateurs connectés pour le vhost de ton choix. C'est un outil en ligne de commande.
— Mickaël Rémond2 commentaire(s) - Trolleur égaré
mercredi 31 octobre 2007
01:30
N'empêche que t'as toujours pas été fichu de me les montrer ces chiffres vérifiables hein :D
Comme quoi mis à part de la gueule...
— elghinn232 commentaire(s) - Nolife
dimanche 29 juin 2008
18:21
« La commande ejabberdctl permet de récupérer le nombre d'utilisateurs connectés pour le vhost de ton choix. »
Oui mais pas les utilisateurs enregistrés, le but du billet est d'expliquer comment récupérer ces deux variables. Et c'est dommage de devoir tripatouiller des plugins bizarroïdes juste pour utiliser un truc qui semble pourtant basique.
/me, toujours un petit peu en retard.
— xbright366 commentaire(s) - Squatteur <3