2011-07-07 22 views
11

Estoy tratando de implementar un plugin de nagios, y para hacerlo necesito saber específicamente qué objeto y atributo quiero monitorear. El caso es que no he podido encontrar una lista de objetos y atributos jmx del sistema estándar. ¿Alguien puede señalarme en la dirección correcta? Necesito monitorear cosas como grupos de memoria, tamaño de pila, etc.Lista de objetos y atributos JMX?

Respuesta

17

Siempre se puede usar mBeanServer.queryNames(null, null); para llegar a todas MBeans registrados en un determinado MBeanServer (donde mBeanServer es el MBeanServerConnection que obtuvo de forma local o remota).

Sin embargo, antes de implementar sus propios complementos de Nagios, ¿por qué no utilizar uno ya existente? P.ej. jmx4perlcheck_jmx4perl que viene con herramientas para explorar el espacio de nombres JMX (como jmx4perl <url> list para listar todos los MBeans JMX con sus atributos y operaciones o j4psh un shell JMX basado en línea de lectura con finalización de línea de comandos sensible al contexto).

+0

Ah bien, hemos estado buscando en check_jmx, que ya está creado. Buscaré en jmx4perl. ¡Gracias! – Matthew

0

¿Está buscando la JVM platform MBean docs?

Existen ejemplos para obtener los MBeans e interrogarlos, p.

El ThreadMXBean plataforma MBean proporciona soporte para la monitorización hilo contención y CPU hilo tiempo.

+0

Para ser honesto, no estoy seguro? Esperaba que hubiera algún tipo de "aquí hay una lista de cada objeto, y aquí hay una sublista de sus atributos de componentes". Tal vez estoy subestimando lo grande que es el material JMX estándar? – Matthew

+0

http://download.oracle.com/javase/1.5.0/docs/api/java/lang/management/package-frame.html parecía ayudar mucho en realidad. ¿Hay algo similar para los otros granos MX? Lo siento si estas preguntas son más vagas de lo que deberían ser, no estoy del todo seguro sobre la semántica de JMX. – Matthew

0

Salida MC4J o JConcole - es trivial para ponerse en marcha con los dos de ellos.

+0

Intenté usar jconsole pero no funciona en CLI (al menos da un montón de errores cuando intentas ejecutarlo). – Matthew

+0

¿Qué tipo de errores? – helios

+0

Es un montón de excepciones Java que indican que no se encuentra ningún servidor x. La mayoría de la documentación de jconsole apunta a la necesidad de usar una GUI. No puedo conectarme a la atmósfera del servidor para obtener una mejor explicación, publicaré las excepciones más adelante. – Matthew

0

Desde el punto de vista sysadmin, entiendo completamente las bases para la pregunta. La documentación estándar de JMX, o los objetos que se pueden encontrar al intentar explorar árboles de objetos JMX, puede ser abrumadora y confusa.

He encontrado este Op5 KB article bastante útil para proporcionar una descripción decente de JMX objetos de interés para JBoss.

Obviamente, uno necesita ajustarse para ajustarse al sistema de monitoreo que está usando en realidad, pero hay suficientes ejemplos para cualquier sistema de monitoreo basado en nagios.

17

Puede utilizar

Set mbeans = mBeanServer.queryNames(null, null); 
for (Object mbean : mbeans) 
{ 
    WriteAttributes(mBeanServer, (ObjectName)mbean); 
} 

private void WriteAttributes(final MBeanServer mBeanServer, final ObjectName http) 
     throws InstanceNotFoundException, IntrospectionException, ReflectionException 
{ 
    MBeanInfo info = mBeanServer.getMBeanInfo(http); 
    MBeanAttributeInfo[] attrInfo = info.getAttributes(); 

    System.out.println("Attributes for object: " + http +":\n"); 
    for (MBeanAttributeInfo attr : attrInfo) 
    { 
     System.out.println(" " + attr.getName() + "\n"); 
    } 
} 

Esto escribirá todos los nombres de objetos y sus atributos ...

+0

Gracias! ¡Esto fue muy útil! – Neoryder

Cuestiones relacionadas