JMX对象和属性列表?

时间:2011-07-07 12:53:16

标签: java jmx

我正在尝试实现一个nagios插件,这样做需要我具体知道我想要监视的对象和属性。问题是,我无法在标准系统jmx对象和属性的任何地方找到列表。谁能指出我正确的方向?我需要监视内存池,堆大小等内容。

5 个答案:

答案 0 :(得分:19)

您可以使用

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");
    }
}

这将写出所有对象名称及其属性......

答案 1 :(得分:17)

您始终可以使用mBeanServer.queryNames(null, null);来获取在某个MBeanServer上注册的所有MBean(其中mBeanServer是您在本地或远程获得的MBeanServerConnection)。

但是,在实现自己的Nagios插件之前,为什么不使用已经存在的插件呢?例如。 jmx4perlcheck_jmx4perl附带了用于探索JMX名称空间的工具(例如jmx4perl <url> list用于列出所有JMX MBean及其属性和操作,或j4psh基于readline的JMX shell上下文敏感的命令行完成)。

答案 2 :(得分:1)

从系统管理员的角度来看,我完全理解问题的基础。标准的JMX文档,或者在尝试浏览JMX对象树时可能遇到的对象,可能会让人感到压力和困惑。

我发现这个Op5 KB article非常有用,可以为JBoss提供一个关注的JMX对象。

显然,需要调整以适应他们实际使用的监控系统,但是在示例中有足够的基于nagios的监控系统正在使用。

答案 3 :(得分:0)

您在寻找JVM platform MBean docs吗?

有一些例子可以获得MBean并询问它们,例如。

  

ThreadMXBean平台MBean   为监控线程提供支持   争用和线程CPU时间。

答案 4 :(得分:0)

结帐MC4JJConcole - 与他们两个人一起工作是微不足道的。