Que surveillez-vous avec JMX dans votre application Java de production?
Cette question ne concerne pas le fonctionnement de JMX ou ce que fait JMX. Cette question concerne les applications de JMX dans un environnement de serveur d'applications standard en production. Ce n'est pas non plus pour un serveur spécifique.
Que surveillez-vous avec JMX dans un environnement de production qui exécute une pile standard de services Java EE: accès à la base de données (JDBC et JPA), EJB de session, JMS, serveur web, services web, services compatibles AJAX?
5 réponses
Au niveau JVM , je surveille la durée de collecte des ordures par minute,
Au niveau du conteneur de Servlet , je surveille le nombre de requêtes, le nombre d'exceptions (codes 4xx et 5xx), la somme de la durée de la requête par minute,
À SAVON niveau, je surveille le nombre d'invocations, le nombre de dérogations & somme des invocations par opération et par minute,
À Web MVC niveau, je surveille le nombre d'appels, nombre des exceptions et somme des invocations par action et par minute,
Pour les pools ( source de données, pool de threads / service exécuteur), je surveille le nombre actif,
Pour les connexions JMS, je surveille le nombre de messages envoyés et reçus par minute, et le nombre de récepteurs actifs,
Pour EhCache, je surveille le nombre d'entrées dans le cache, le nombre de hit & miss par minute,
Au niveaude l'application métier , Je développé une annotation @ Profiled pour surveiller le nombre d'invocations, le nombre d'exceptions et la durée totale par minute.
Si vous êtes intéressé par ce genre de mesures, nous avons développé de nombreux extras JMX (dbcp, util.concurrent, JMS, @profiled annotation) et emballé tout cela avec la configuration basée sur L'espace de noms XML Spring, les plugins Hyperic HQ, la surveillance des pages jsp, etc
Les détails sont ici : http://code.google.com/p/xebia-france/wiki/XebiaManagementExtras .
Tout ce code est sous licence open source business friendly Apache Software License 2, déployé sur Maven Central Repository, téléchargeable sous forme de jar et disponible sur un serveur Google Code Subversion pour être intégré comme vous le souhaitez.
J'espère que cela aide,
Cyrille (Xebia)
J'ai utilisé JMX pour exposer un MBean qui permettra l'ajustement dynamique des niveaux de Logger Log4J. Cela s'est avéré très utile pour une application en cluster où nous ne voulions pas avoir à modifier le fichier de configuration log4j sur tous les nœuds pour changer le niveau de journal pour un enregistreur spécifié.
Mon exigence la plus courante est la surveillance du nombre de threads et de la mémoire. Mon travail le plus récent impliquait la distribution de serveurs fortement threadés vers des grilles, et il était important de surveiller l'utilisation des threads (une mesure de la quantité de travail de répartition que le serveur entreprenait). La mémoire est étroitement liée à l'utilisation du thread (en partie à cause des objets associés à chaque thread, en partie à cause de l'allocation de pile implicite par thread).
Nous avons également activé JMX nos données de file d'attente de charge de travail. Ci-dessus suivi symptômes ou Effets de la mise en file d'attente des éléments de travail, mais finalement nous voulions surveiller les files d'attente réelles de travail. Il vaut la peine d'exposer les composants clés via JMX pour avoir une perspective plus claire sur ce qui se passe.
Sur un projet précédent, nous avons surveillé le nombre de threads et la mémoire, le nombre de sessions HTTP et la taille des caches de requêtes. L'autre intérêt de JMX avec les caches est que vous pouvez forcer un flush.
Un peu OT mais vous pouvez utiliser JMX pour un peu plus. Actuellement, j'utilise JMX pour déployer à chaud / composants hot fix. Ajouter dynamiquement des fonctionnalités aux composants existants (filtre, etc.). JMX est bon pour la communication entre les composants sur la même JVM. Chaque composant que je crée est instrumenté pour utiliser JMX.