AXOPEN

Extraction des informations de monitoring JBoss AS 7

jboss

MBean, JMX, CLI, Web… et monitoring

Dans les précédentes versions de JBoss, il était très facile de récupérer des informations de monitoring via les MBean.

Ce biais de récupération disparait dans JBoss 7 au profite du CLI et de la console web de management.

Il est possible de récupérer les mêmes informations qu'auparavant simplement en se connectant par ces interfaces. 

Nous allons voir comment récupérer par exemple une information qui me parait essentielle : L'état d'un datasource.

Nous allons effectuer cette récupération grâce à l'interface WEB, et en JSON! Ce flux pourra ensuite être exploité par des outils de monitoring standards.

Mode opératoire 

Par défaut, et heureusement, l'interface de management est désormais sécurisée sur JBoss. Elle est exposée seulement sur l'interface locale (configuration par défaut dans le fichier standalone.xml) et aucun utilisateur de management n'est crée.

Première chose à faire, créer l'utilisateur via l'executable add-user.sh de jboss:

#:/opt/jboss-as-7.1.1.Final/bin# ./add-user.sh

What type of user do you wish to add?
 a) Management User (mgmt-users.properties)
 b) Application User (application-users.properties)
(a): a

Enter the details of the new user to add.
Realm (ManagementRealm) :
Username : monutilisateur
Password :
Re-enter Password :
About to add user 'monutilisateur' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'monutilisateur' to file '/opt/jboss-as-7.1.1.Final/standalone/configuration/mgmt-users.properties'
Added user 'monutilisateur' to file '/opt/jboss-as-7.1.1.Final/domain/configuration/mgmt-users.properties'

Rien de très compliquée, toutes les options sont à laisser par défaut, il suffit simplement de préciser le nom de l'utilisateur et son mot de passe.

Précisez un mot de passe, ainsi qu'un utilisateur assez complexe, mélangeant minuscules, majuscules et chiffres. N'utilisez pas de caractères autres que des alphanumériques, qui risquent de poser problème par la suite dans l'appel à la console de management.

Une fois cet utilisteur crée, vous pouvez interroger votre console d'administration en local, avec l'outil curl. Si vous ne possédez pas curl, il est disponible dans tous les gestionnaires de paquets Linux.

Voici la requête à effectuer pour interroger par exemple l'état du datasource ExampleDS:

curl --digest -L -D - http://monutilisateur:monpassword:29990/management/ -d '{"operation":"read-resource","address":[{"subsystem":"datasources"},{"data-source":"ExampleDS"},{"statistics":"pool"}], "include-runtime":"true"}'  -HContent-Type:application/json

Cette requête retourne le résultat suivant : 

HTTP/1.1 401 Unauthorized
Content-length: 0
Www-authenticate: Digest realm="ManagementRealm",nonce="7ac8992b5033fd7995a9791da021514b"
Date: Fri, 24 May 2013 14:07:09 GMT

HTTP/1.1 200 OK
Transfer-encoding: chunked
Content-type: application/json
Date: Fri, 24 May 2013 14:07:09 GMT

{"outcome" : "success", "result" : {"ActiveCount" : "1", "AvailableCount" : "20", "AverageBlockingTime" : "0", "AverageCreationTime" : "1488", "CreatedCount" : "1", "DestroyedCount" : "0", "MaxCreationTime" : "1488", "MaxUsedCount" : "1", "MaxWaitTime" : "0", "TimedOut" : "0", "TotalBlockingTime" : "0", "TotalCreationTime" : "1488"}}

 

On retrouve donc toutes les informations concernant le DataSource en question. Ce flux pourra donc être exploité par la suite avec n'importe quel outil monitoring capable de lire du JSON.

ATTENTION :

La console de management permet de faire tout et n'importe quoi avec le serveur d'application. N'ayez pas peur de mettre un mot de passe compliqué, si jamais vous devez ouvrir la console vers une machine autre que la machine locale (via le fichier standalone.xml). Pensez à configurer votre firewall en conséquence pour que le port 9990 ne soit ouvert que vers la machine cible.