Les utilitaires JMX de ligne de commande suivants sont disponibles:
- jmxterm - semble être l'utilitaire le plus complet.
- cmdline-jmxclient - utilisé dans le projet WebArchive semble très simple (et aucun développement depuis 2006 il ressemble)
- Groovy script et JMX - fournit des fonctionnalités JMX vraiment puissantes mais nécessite une configuration de bibliothèque groovy et autre.
- Fonctionnalité de ligne de commande JManage - (l'inconvénient est qu'il nécessite un serveur JManage en cours d'exécution pour les commandes proxy)
Exemple Groovy JMX:
import java.lang.management.*
import javax.management.ObjectName
import javax.management.remote.JMXConnectorFactory as JmxFactory
import javax.management.remote.JMXServiceURL as JmxUrl
def serverUrl = 'service:jmx:rmi:///jndi/rmi://localhost:9003/jmxrmi'
String beanName = "com.webwars.gameplatform.data:type=udmdataloadsystem,id=0"
def server = JmxFactory.connect(new JmxUrl(serverUrl)).MBeanServerConnection
def dataSystem = new GroovyMBean(server, beanName)
println "Connected to:\n$dataSystem\n"
println "Executing jmxForceRefresh()"
dataSystem.jmxForceRefresh();
Exemple de cmdline-jmxclient:
Si vous avez un
- MBean: com.company.data:type=datasystem,id=0
Avec une opération appelée:
Ensuite, vous pouvez écrire un simple script bash (en supposant que vous téléchargez cmdline-jmxclient-0.10.3.jar et mettez-le dans le même répertoire que votre script):
#!/bin/bash
cmdLineJMXJar=./cmdline-jmxclient-0.10.3.jar
user=yourUser
password=yourPassword
jmxHost=localhost
port=9003
#No User and password so pass '-'
echo "Available Operations for com.company.data:type=datasystem,id=0"
java -jar ${cmdLineJMXJar} ${user}:${password} ${jmxHost}:${port} com.company.data:type=datasystem,id=0
echo "Executing XML update..."
java -jar ${cmdLineJMXJar} - ${jmxHost}:${port} com.company.data:type=datasystem,id=0 jmxForceRefresh
J'ai développé jmxfuse qui expose JMX Mbeans en tant que système de fichiers Linux FUSE avec des fonctionnalités similaires à celles de / proc fs. Il s'appuie sur Jolokia comme pont vers JMX. Les attributs et les opérations sont exposés pour la lecture et l'écriture.
http://code.google.com/p/jmxfuse/
Par exemple, pour lire un attribut:
pour écrire un attribut:
pour appeler une opération:
la source
Le plugin Syabru Nagios JMX est destiné à être utilisé depuis Nagios, mais ne nécessite pas Nagios et est très pratique pour une utilisation en ligne de commande:
la source
Potentiellement, il est plus facile d'écrire ceci en Java
Cela compilerait en une seule .class et ne nécessiterait aucune dépendance dans le serveur ni aucun package maven compliqué.
appelle-le avec
la source
Un peu risqué, mais vous pouvez exécuter une commande curl POST avec les valeurs du formulaire de la console JMX, son URL et l'authentification http (si nécessaire):
Attention: l'index des méthodes peut changer avec les modifications du logiciel. Et la mise en œuvre du formulaire Web pourrait changer.
Ce qui précède est basé sur la source de la page de service JMX pour l'opération que vous souhaitez effectuer:
Source du formulaire:
la source
HttpURLConnection
et je peux confirmer que cela fonctionne. (btw.submit=Invoke
n'est pas nécessaire)rmi
, et là je voishttp
. Cela signifie-t-il que le serveur doit être configuré pour prendre en charge les requêtes jmxhttp
?Jetez un œil à JManage . Il est capable d'exécuter des méthodes MBean et d'obtenir / définir des attributs à partir de la ligne de commande .
la source
Vous voudrez peut-être aussi jeter un œil à jmx4perl . Il fournit un accès sans Java aux MBeans d'un serveur Java EE distant. Cependant, un petit servlet d'agent doit être installé sur la plate-forme cible, ce qui fournit un accès JMX reposant via HTTP avec une charge utile JSON. (La version 0.50 ajoutera un mode sans agent en implémentant un proxy JSR-160).
Les avantages sont des temps de démarrage rapides par rapport au lancement d'une JVM Java locale et une facilité d'utilisation. jmx4perl est livré avec un ensemble complet de modules Perl qui peuvent être facilement utilisés dans vos propres scripts:
Vous pouvez également utiliser un alias pour les combos MBean / Attribut / Opération (par exemple pour la plupart des MXBeans). Pour des fonctionnalités supplémentaires (Nagios-Plugin, accès de type XPath à des types d'attributs complexes, ...), veuillez vous référer à la documentation de jmx4perl.
la source
La réponse @Dougnukem m'a beaucoup aidé. J'ai adopté l'approche Groovy (en utilisant groovy 2.3.3).
J'ai fait quelques changements sur le code Dougnukem. Cela fonctionnera avec Java 7 et imprimera deux attributs sur stdout toutes les 10 secondes.
Compilez ce code dans un fichier jar en utilisant maven-compiler-plugin afin de ne pas avoir besoin d'installation groovy uniquement le groovy-all.jar. Vous trouverez ci-dessous la définition et les dépendances pertinentes du plugin.
Enveloppez-le avec une batte ou un shell et il imprimera les données sur stdout.
la source
Je ne suis pas sûr de l'environnement de type bash. Vous pouvez essayer quelques programmes wrapper simples en Java (avec des arguments de programme) qui invoquent vos MBeans sur le serveur distant. Vous pouvez ensuite appeler ces wrappers à partir du script shell
Si vous pouvez utiliser quelque chose comme Python ou Perl, vous pourriez être intéressé par JSR-262 qui vous permet d'exposer des opérations JMX sur des services Web. Ceci est prévu pour être inclus dans Java 7, mais vous pourrez peut-être utiliser une version candidate de l' implémentation de référence
la source