Мониторинг нескольких процессов Java на одном хосте через SNMP - PullRequest
3 голосов
/ 21 июня 2011

Я хочу отслеживать JVM через SNMP на компьютере с Linux, который запускает несколько процессов Java, каждый процесс Java, конечно, независим и имеет разные счетчики SNMP (количество активных потоков, свободная память и т. Д.), Пример конфигурации в документацииПредположим, что на машине есть только один процесс Java.Я ищу простое решение, которое мой инструмент мониторинга будет запрашивать у SNMP-менеджера на этом хосте без необходимости знать порт для каждого процесса Java (если он запрашивает OID с удаленного компьютера - какой процесс Java ответит на него ...? Как он можетзнаете ...?)

Спасибо !!!

Ответы [ 2 ]

4 голосов
/ 27 июня 2011

скачайте файл Java MIB: файл Java MIB и поместите его в: /usr/share/snmp/mibs/JVM-MANAGEMENT-MIB.txt

  1. Поскольку мы хотим удаленно запрашивать SNMP, нам нужно также настроить сетевой интерфейс:

    -Dcom.sun.management.snmp.port = 8161 -Dcom.sun.management.snmp.interface = 0.0.0.0

  2. Поскольку нет сообщества по умолчанию, нам нужно добавить (сверху) в snmpd.conf:

    общественная организация

  3. Поскольку процесс Java прослушивает определенный порт, и мы хотим исключить внешнюю топологию сети компьютера, нам нужно перенаправить определенный префикс OID в прокси-маршрутизацию, настроив snmpd.conf:

    proxy -m /usr/share/snmp/mibs/JVM-MANAGEMENT-MIB.txt -v 2c -c public localhost: 8161 .1.3.6.1.4.1.42.2.145

  4. Поскольку мы хотим запросить один и тот же OID на одном и том же компьютере, и на этом компьютере запускается несколько экземпляров демона - нам необходимо сопоставить фиктивный OID для каждого экземпляра с OID процесса Java в snmpd.conf:

    proxy -m /usr/share/snmp/mibs/JVM-MANAGEMENT-MIB.txt -v 2c -c public localhost: 8161 .1.3.6.1.4.1.42.2.99 .1.3.6.1.4.1.42.2. 145

    proxy -m /usr/share/snmp/mibs/JVM-MANAGEMENT-MIB.txt -v 2c -c public localhost: 8162 .1.3.6.1.4.1.42.2.999 .1.3.6.1.4.1.42.2. 145

  5. перезапустите snmpd и проверьте его с помощью:

    snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.42.2.99

    snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.42.2.999

2 голосов
/ 22 июня 2011

ПРИМЕЧАНИЕ. Это решение применимо только в том случае, если удаленные процессы JVM известны и управляются вами (например, запуск и остановка).

Чтобы включить агент SNMP в JVM, необходимо определить следующие системные переменные, например, в командной строке JVM:

-Dcom.sun.management.snmp.interface=127.0.0.1
-Dcom.sun.management.snmp.port=16666
-Dcom.sun.management.snmp.acl=true
-Dcom.sun.management.snmp.acl.file=/path/to/your/snmp.acl  

Теперь попробуйте запустить все процессы JVM с другим портом snmp в некотором известном диапазоне (скажем, от 5000 до 5100). Итак, вы знаете, что удалением запущенных процессов JVM можно управлять через SNMP в пределах указанного диапазона. Попробуйте отслеживать их, используя разные SNMP-клиенты для каждого порта.

Я не уверен, но это должно сработать.

...