J'utilise JMX pour créer un outil personnalisé pour surveiller les clusters distants au travail. Je suis capable de me connecter très bien et d'interroger les MBeans directement, et j'ai acquis presque toutes les informations dont j'ai besoin. Cependant, j'ai rencontré un problème en essayant d'interroger MBeans pour des caches spécifiques au sein d'un cluster, où je peux trouver des statistiques sur le nombre total de get/puts, le temps moyen pour chacun, etcProblème avec la requête JMX du noeud Cohérence MBeans visible dans JConsole
Les MBeans I essaie d'accéder programatically sont visibles lorsque je me connecte au processus distant en utilisant JConsole, et ont des noms comme celui-ci:
Coherence:type=Cache,service=SequenceQueue,name=SEQ%GENERATOR,nodeId=1,tier=back
il serait plus souple si je peux dynamiquement saisir toutes les type=Cache
MBeans pour un ID de nœud particulier sans spécifier toutes les caches. Je suis en train de les interroger comme ceci:
QueryExp specifiedNodeId = Query.eq(Query.attr("nodeId"), Query.value(nodeId));
QueryExp typeIsCache = Query.eq(Query.attr("type"), Query.value("Cache"));
QueryExp cacheNodes = Query.and(specifiedNodeId, typeIsCache);
ObjectName coherence = new ObjectName("Coherence:*");
Set<ObjectName> cacheMBeans = mBeanServer.queryMBeans(coherence, cacheNodes);
Cependant, que j'utilise queryMBeans()
ou queryNames()
, la requête renvoie un ensemble contenant ...
- ... 0 objets si je passe les arguments présentés ci-dessus
- ... 0 objets si je passe
null
pour le premier argument - ... tous MBeans dans le domaine
Coherence:*
(112) si je passenull
pour le second argument - ... tous les MBean simples (128) si je passe
null
pour les deux arguments
Les deux premiers résultats sont à l'inattendu ceux, et suggèrent un problème dans le QueryExp
je passe, mais je ne peux pas comprendre quel est le problème. J'ai même essayé de passer juste typeIsCache
ou specifiedNodeId
pour le deuxième paramètre (avec soit coherence
ou null
comme premier paramètre) et j'ai toujours 0 résultats.
Je suis assez écolo avec JMX - quel est le problème? (Pour votre information, l'outil de surveillance sera exécuté sur Java 5, donc les choses comme JMX 2.0 ne me aider à ce point.)