【问题标题】:List of JMX objects and attributes?JMX 对象和属性列表?
【发布时间】:2011-07-07 12:53:15
【问题描述】:

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

【问题讨论】:

    标签: java jmx


    【解决方案1】:

    你可以使用

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

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

    【讨论】:

    • 谢谢!这非常有用!
    【解决方案2】:

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

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

    【讨论】:

    • 啊,好的,我们一直在查看 check_jmx,它是一个已经创建的。我将研究 jmx4perl。谢谢!
    【解决方案3】:

    从系统管理员的角度来看,我完全理解这个问题的基础。标准的 JMX 文档,或者在尝试浏览 JMX 对象树时可能遇到的对象,可能会让人不知所措且令人困惑。

    我发现这个Op5 KB article 在为 JBoss 提供一个对 JMX 感兴趣的对象的体面概述方面非常有用。

    显然,需要进行调整以适应他们实际使用的监控系统,但是对于任何基于 nagios 的监控系统,示例中的内容已经足够了。

    【讨论】:

      【解决方案4】:

      您在寻找JVM platform MBean docs吗?

      那里有获取 MBean 并询问它们的示例,例如

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

      【讨论】:

      • 说实话我不确定?我希望会有某种“这是每个对象的列表,这是其组件属性的子列表”。也许我低估了标准 JMX 的东西有多大?
      • download.oracle.com/javase/1.5.0/docs/api/java/lang/management/… 实际上似乎有很大帮助。其他 MX bean 有类似的东西吗?抱歉,如果这些问题比应有的更模糊,我不完全确定 JMX 的语义。
      【解决方案5】:

      查看MC4JJConcole - 两个都可以轻松上手。

      【讨论】:

      • 我尝试使用 jconsole,但它在 CLI 上不起作用(至少当您尝试运行它时会出现一堆错误)。
      • 这是一堆 java 异常,表明没有找到 x-server。大多数 jconsole 文档都指向需要使用 GUI。无法连接到服务器atm以获得更好的解释,我稍后会发布异常。
      猜你喜欢
      • 1970-01-01
      • 2012-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-03
      相关资源
      最近更新 更多