Utilitas JMX baris perintah berikut tersedia:
- jmxterm - tampaknya merupakan utilitas berfitur paling lengkap.
- cmdline-jmxclient - digunakan dalam proyek WebArchive tampaknya sangat sederhana (dan sepertinya tidak ada pengembangan sejak 2006)
- Skrip Groovy dan JMX - menyediakan beberapa fungsionalitas JMX yang sangat kuat tetapi membutuhkan penyiapan library yang groovy dan lainnya.
- Fungsionalitas baris perintah JManage - (downside adalah bahwa ia membutuhkan server JManage yang berjalan untuk menjalankan perintah proxy)
Contoh 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();
cmdline-jmxclient contoh:
Jika Anda memiliki file
- MBean: com.company.data:type=datasystem,id=0
Dengan Operasi yang disebut:
Kemudian Anda dapat menulis skrip bash sederhana (dengan asumsi Anda mengunduh cmdline-jmxclient-0.10.3.jar dan meletakkannya di direktori yang sama dengan skrip Anda):
#!/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
Saya telah mengembangkan jmxfuse yang mengekspos JMX Mbeans sebagai sistem file FUSE Linux dengan fungsi yang mirip dengan / proc fs. Ini bergantung pada Jolokia sebagai jembatan ke JMX. Atribut dan operasi diekspos untuk membaca dan menulis.
http://code.google.com/p/jmxfuse/
Misalnya, untuk membaca atribut:
untuk menulis atribut:
untuk menjalankan operasi:
sumber
The Syabru nagios JMX Plugin dimaksudkan untuk digunakan dari nagios, tetapi tidak memerlukan nagios dan sangat nyaman untuk digunakan baris perintah:
sumber
Kemungkinan paling mudah untuk menulis ini di Java
Ini akan dikompilasi menjadi satu .class dan tidak memerlukan ketergantungan di server atau pengemasan maven yang rumit.
sebut saja dengan
sumber
Sedikit berisiko, tetapi Anda dapat menjalankan perintah POST curl dengan nilai dari formulir dari konsol JMX, otentikasi URL dan http-nya (jika diperlukan):
Hati-hati: indeks metode dapat berubah dengan perubahan pada perangkat lunak. Dan implementasi formulir web bisa berubah.
Di atas didasarkan pada sumber halaman layanan JMX untuk operasi yang ingin Anda lakukan:
Sumber formulir:
sumber
HttpURLConnection
dan saya dapat mengonfirmasi bahwa itu berfungsi. (btw.submit=Invoke
tidak perlu)rmi
, dan di sana saya melihathttp
. Apakah ini berarti bahwa server harus dikonfigurasi untuk mendukung permintaan jmxhttp
?Lihat JManage . Itu dapat mengeksekusi metode MBean dan mendapatkan / mengatur atribut dari baris perintah .
sumber
Anda mungkin juga ingin melihat jmx4perl . Ini menyediakan akses tanpa java ke MBeans Server EE Java jarak jauh. Namun, servlet agen kecil perlu diinstal pada platform target, yang menyediakan Akses JMX yang tenang melalui HTTP dengan payload JSON. (Versi 0.50 akan menambahkan mode tanpa agen dengan menerapkan proxy JSR-160).
Keuntungannya adalah waktu startup yang cepat dibandingkan dengan meluncurkan Java JVM lokal dan kemudahan penggunaan. jmx4perl hadir dengan satu set lengkap modul Perl yang dapat dengan mudah digunakan di skrip Anda sendiri:
Anda juga dapat menggunakan alias untuk combo MBean / Atribut / Operasi umum (misalnya untuk kebanyakan MXBeans). Untuk fitur tambahan (Nagios-Plugin, akses mirip XPath ke tipe atribut kompleks, ...), silakan merujuk ke dokumentasi jmx4perl.
sumber
Jawaban @Dougnin sangat membantu saya. Saya telah mengambil pendekatan Groovy (menggunakan groovy 2.3.3).
Saya melakukan beberapa perubahan pada kode Dougnukem. Ini akan bekerja dengan Java 7 dan akan mencetak dua atribut ke stdout setiap 10 detik.
Kompilasi kode ini ke dalam jar menggunakan maven-compiler-plugin sehingga Anda tidak perlu menginstal groovy hanya pada groovy-all.jar. Di bawah ini adalah definisi dan ketergantungan plugin yang relevan.
Bungkus dengan bat atau shell dan itu akan mencetak data ke stdout.
sumber
Saya tidak yakin tentang lingkungan seperti pesta. Anda dapat mencoba beberapa program pembungkus sederhana di Java (dengan argumen program) yang menjalankan MBeans Anda di server jarak jauh. Anda kemudian dapat memanggil pembungkus ini dari skrip shell
Jika Anda dapat menggunakan sesuatu seperti Python atau Perl, Anda mungkin tertarik dengan JSR-262 yang memungkinkan Anda mengekspos operasi JMX melalui layanan web. Ini dijadwalkan untuk disertakan dalam Java 7, tetapi Anda mungkin dapat menggunakan kandidat rilis dari implementasi referensi
sumber