Utiliser JMeter pour superviser un serveur Tomcat

Voici une nouvelle version du tutoriel JMeter pour superviser un serveur Tomcat. On passe à la version 7 de Tomcat et avec un JMeter en français.

Nous allons donc utiliser JMeter pour supervision le fonctionnement d’un serveur Tomcat à travers son interface de statut.

Le pré-requis est bien entendu d’avoir à disposition un serveur Tomcat (sous Unix/Linux ou Windows) tournant sur un Java JDK.

On va commencer par « ouvrir » le service de statut du Tomcat. Pour cela, éditer le fichier de configuration des utilisateurs

vi <TOMCAT_HOME>/conf/tomcat-users.xml

Le fichier contient une section tomcat-users (en commentaire) comme ceci :

<tomcat-users>
<!--
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
-->
</tomcat-users>

Il faut modifier cette section pour ajouter les rôles admin, manager, manager-gui et les affecter à l’utilisateur « tomcat ». Ce qui donne quelque chose comme cela :

<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <role rolename="admin"/>
  <role rolename="manager"/>
  <role rolename="manager-gui"/>
  <user username="tomcat" password="tomcat" roles="tomcat,admin,manager,manager-gui"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>

Vérifions que la supervision Tomcat fonctionne, pour cela on démarre son serveur Tomcat, et avec un navigateur, on saisie l’URL :

http://debiansvr.milamberspace.net:8080/manager/status?XML=true

où debiansvr.milamberspace.net est le nom ou l’adresse IP de son Tomcat.

Une fenêtre d’authentification apparaît dans le navigateur, saisir le login tomcat et le mot de passe associé (ici tomcat).

Ensuite, le navigateur fait apparaître le statut d’exécution de Tomcat :

NB. dans l’URL, le paramètre XML=true (attention au respect de la casse), permet un affichage épuré, nécessaire à JMeter pour le fonctionnement de la supervision Tomcat.

NB2. on remarquera également qu’il y a par défaut deux connecteurs. Le connecteur AJP utilisé en général le module mod_jk couplé à un Apache HTTPD frontal, et le connecteur HTTP qui lui est le connecteur généralement utilisé pour les accès directs à Tomcat via le port 8080. Noter le nom de ces connecteurs, car il faudra indiquer à JMeter lequel on veut superviser.

Passons au paramétrage de JMeter.

Après avoir démarré JMeter, on commence par ajouter un Groupe d’unités au niveau du Plan de test.

Dans la configuration du Groupe d’unités, on choisira le Nombre d’itérations à Infini (en cochant la case) afin d’avoir un outil de supervision qui s’arrête seulement quand l’opérateur le décide.

On ajoute ensuite un élément Gestionnaire d’autorisation HTTP afin de gérer l’authentification demandée au niveau du navigateur par Tomcat pour voir le statut du serveur.

Dans la configuration du Gestionnaire d’autorisation HTTP, on ajoutera dans :

  • Le champ Nom d’utilisateur : tomcat (en fonction du paramétrage du fichier tomcat-users.xml)
  • Le champ Mot de passe : tomcat (en fonction du paramétrage du fichier tomcat-users.xml)
  • Les autres champs sont laissés vide.

 

 On continue en ajoutant un échantillon Requête HTTP pour effectuer la requête permettant de demander le statut du serveur.

Dans la configuration de l’élément Requête HTTP, on modifiera la valeur des champs suivants :

  • Nom : Statut Tomcat
  • Nom ou adresse IP : debiansvr.milamberspace.net (ou l’adresse IP du serveur)
  • Port : 8080
  • Chemin : /manager/status
  • Envoyer les paramètres avec la requête : Clic que le bouton Ajouter
  • Nouvelle valeur : Nom : XML et Valeur : true.
  • Sans oublier à la fin, de cocher le champ Utiliser comme moniteur.

Afin de demander le statut du serveur régulièrement, on ajoute un élément Compteur de temps fixe qui laissera un intervalle de temps entre chaque demande.

On paramètre l’élément Compteur de temps fixe pour une fréquence de 5000 ms (5s) de rafraîchissement des données de monitoring. 

Il ne reste plus qu’à ajouter le récepteur Moniteur de connecteurs pour suivre de manière graphique l’état du serveur Tomcat.

Dans le champ situé en bas du Moniteur de connecteurs, on indique le début du nom du connecteur que l’on souhaite superviser. Ici, je veux voir le connecteur HTTP, donc la valeur du champ est :

"http-

Noter les guillemets ouvrantes dans son début de nom (particularité Tomcat 7).

Au final, notre arbre JMeter est le suivant :

Et voilà, on peut démarrer le début de la supervision, en lançant JMeter via le menu habituel.

Le petit carré vert en haut à droite de JMeter nous montre que la supervision est active.

Voici l’affichage de l’état de santé du serveur Tomcat à un instant T :

Et voici le graphique de performance du serveur Tomcat durant un petit tir de charge en deux paliers que j’ai réalisé sur ce serveur.

Quelques commentaires du graphique :

  • On retrouve donc les deux paliers. La courbe des unités d’exécution de Tomcat reflète assez bien la charge du serveur par rapport au nombre d’utilisateurs simulés.
  • Le serveur Tomcat est « en forte activité » dès le début du tir.
  • La mémoire JVM enchaîne les passages du Garbage collector (l’aspect dent-de-scie).

Voilà pour ce petit tutoriel sur la supervision d’un Tomcat 7. Bon courage.

Remarque, il est tout à fait possible de superviser plusieurs serveurs Tomcat avec le même script. Pour cela on ajoute autant de Requête HTTP agissant en tant que moniteur de connecteurs, que de serveurs Tomcat à superviser.

 

./