Список объектов и атрибутов JMX?

Я пытаюсь реализовать плагин nagios, и для этого требуется, чтобы я точно знал, какой объект и атрибут я хочу отслеживать. Дело в том, что мне не удалось найти список в любом месте стандартных объектов и атрибутов jmx. Может кто-то указать мне верное направление? Мне нужно отслеживать такие вещи, как пулы памяти, размер кучи и т.д.

Ответ 1

Вы всегда можете использовать mBeanServer.queryNames(null, null); для получения всех MBeans, зарегистрированных на определенном mBeanServer MBeanServer (где mBeanServer - это MBeanServerConnection который вы получили либо локально, либо удаленно).

Однако, прежде чем внедрять собственные плагины Nagios, почему бы не использовать уже существующий? Например, jmx4perl check_jmx4perl который поставляется с инструментами для изучения пространства имен JMX (например, jmx4perl <url> list для перечисления всех JMX-MBeans с их атрибутами и операциями или j4psh на основе JMX-оболочки на основе readline с завершением контекстно-зависимой командной строки).

Ответ 2

Вы можете использовать

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

Это будет записывать все имена объектов и их атрибуты...

Ответ 3

С точки зрения сисадмина я полностью понимаю основы для вопроса. Стандартная документация JMX или объекты, которые можно встретить при попытке просмотреть деревья объектов JMX, могут быть подавляющими и запутанными.

Я нашел эту статью Op5 KB весьма полезной в предоставлении достойного обзора объектов JMX, представляющих интерес для JBoss.

Очевидно, что нужно адаптироваться к системе мониторинга, которую они фактически используют, но в примерах достаточно, чтобы какая-либо система мониторинга, использующая nagios.

Ответ 4

Вы ищете JVM-платформу MBean docs?

Есть примеры для получения MBeans и опроса их, например

Платформа ThreadMXBean MBean обеспечивает поддержку отслеживания конфликтов потоков и времени процессора.

Ответ 5

Проверьте MC4J или JConcole - это тривиально, чтобы идти с обоими.