Как включить JMX в Websphere? - PullRequest
30 голосов
/ 10 декабря 2008

Я хотел бы использовать JConsole для мониторинга моего приложения Websphere, но я не уверен, как включить JMX.

Ответы [ 12 ]

32 голосов
/ 11 декабря 2008

Следующая информация относится к Websphere 6.1 в Windows.

Прежде всего, магический URL для подключения к серверу MBean:

service:jmx:iiop://<host>:<port>/jndi/JMXConnector

Если у вас установлена ​​стандартная версия Websphere, номер порта JNDI, скорее всего, будет 2809, 2810, ... в зависимости от того, сколько серверов установлено в одной системе и какой конкретный сервер вы хотите подключить. Чтобы быть уверенным, при запуске Websphere, проверьте журналы, так как она выведет строку вроде

0000000a RMIConnectorC A   ADMC0026I: The RMI Connector is available at port 2810

Если вы не получили эту строку, откройте консоль администратора Websphere и перейдите на

Серверы приложений> server1> Администрирование> JMX Разъемы

чтобы узнать, нужно ли вам добавить или изменить конфигурацию.

Второй важный бит информации заключается в том, что при выполнении JMX с сервером всегда требуется следующий JAR-файл:

com.ibm.ws.admin.client_6.1.0.jar

Вы можете найти этот JAR в каталоге runtimes Websphere. Что бы вы ни делали, будь то программный доступ к MBeans в Websphere или использование JConsole и т. Д., Используйте магический URL-адрес, и всегда включает этот JAR-файл.

В оставшейся части этого ответа предположим, что Websphere установлен в D: \ prog \ was61.

Чтобы запустить JConsole, введите следующее:

D:\prog\was61\java\bin>jconsole -J-Djava.class.path=d:\prog\was61\java\lib\tools.jar;D:\prog\was61\runtimes\com.ibm.ws.admin.client_6.1.0.jar

Затем перейдите на вкладку «Дополнительно» и введите магический URL JMX. Нажмите connect, и вы увидите, что MBeans появится.

Использование Sun JDK - это совсем другое дело. Вам нужен один дополнительный JAR, который находится в библиотеке IBM JDK, но не в Sun (ibmorb.jar), и, возможно, вам подойдет следующая команда:

C:\Program Files\Java\jdk1.5.0_11\bin>jconsole -J-Djava.class.path="c:\Program Files\Java\jdk1.5.0_11\lib\jconsole.jar";"c:\Program Files\Java\jdk1.5.0_11\lib\tools.jar";D:\prog\was61\runtimes\com.ibm.ws.admin.client_6.1.0.jar;D:\prog\was61\java\jre\lib\ibmorb.jar

Я говорю, может быть, потому что это не сработало для меня. Я получил хорошее сообщение об ошибке jndiUnavailCommErr, так как он ожидал что-то на порту 2809, в то время как моя установка Websphere прослушивает 2810, хотя я правильно указал порт 2810 в URL-адресе JMX. Но если вы адаптируете пути к своей Sun JDK, это может сработать для вас. Это самое близкое мне соединение с Websphere с использованием Sun JDK.

Последнее замечание: я пробовал решение на основе RMI, также есть доступный разъем SOAP, но не пробовал его.

Как всегда с J2EE, Websphere и прочим: удачи, он вам понадобится.

9 голосов
/ 28 марта 2011

Это просто. Просто запустите Websphere со следующими параметрами JMX:

-Djavax.management.builder.initial= 
-Dcom.sun.management.jmxremote 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.port=1099

Затем запустите JConsole или VisualVM и подключитесь к localhost: 1099

Поскольку я не могу опубликовать пробный снимок экрана, я публикую информацию из визуальной "обзорной вкладки".

PID: 12568
Host: localhost
Main class: <unknown>
Arguments: <none>
JVM: IBM J9 VM (2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20100808 (JIT enabled)
J9VM - 20100629_60535_lHdSMr
JIT - 20100623_16197_r8
GC - 20100211_AA)
Java: version 1.5.0, vendor IBM Corporation
Java Home: C:\Program Files\IBM\SDP\runtimes\base_v61\java\jre
JVM Flags: <none>
Heap dump on OOME: disabled
6 голосов
/ 12 февраля 2010

Возможно, это немного оффтоп, но я нашел способ подключения к серверу WAS 7.0 JMX из JConsole. Никакой настройки сервера не требуется, никакого AppClient, только некоторые JAR-файлы и небольшая настройка клиента.

Используйте следующий скрипт

@echo off 
set HOST=<host>
set PORT=2809

set WAS_HOME=D:/Programy/IBM/WebSphere/AppServer

set THIS_DIR=E:/Home/Bogus/Pulpit

set CLIENTSAS=-Dcom.ibm.CORBA.ConfigURL=file:/%THIS_DIR%/sas.client.props
set PROVIDER=-Djava.naming.provider.url=corbaname:iiop:%HOST%:%PORT% 

set PROPS=
set PROPS=%PROPS% %CLIENTSAS%
set PROPS=%PROPS% %PROVIDER%

set CLASSPATH=
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\java\lib\tools.jar
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\runtimes\com.ibm.ws.admin.client_7.0.0.jar
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\runtimes\com.ibm.ws.ejb.thinclient_7.0.0.jar
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\runtimes\com.ibm.ws.orb_7.0.0.jar
set CLASSPATH=%CLASSPATH%;%WAS_HOME%\java\lib\jconsole.jar

set URL=service:jmx:iiop://%HOST%:%PORT%/jndi/JMXConnector

@echo on

:: %WAS_HOME%\java\bin\
java -classpath %CLASSPATH% %PROPS% sun.tools.jconsole.JConsole %URL%

Если на целевом сервере отключена административная защита, закомментируйте строки CLIENTSAS и PROVIDER.

Если защита включена, вам также потребуется файл sas.client.props, который будет помещен в каталог THIS_DIR. Файл шаблона находится в каталоге WAS_profile \ properties. Вам придется сделать небольшую настройку. Вот выдержка из моего sas.client.props

com.ibm.CORBA.securityEnabled=true

com.ibm.CORBA.authenticationTarget=BasicAuth
com.ibm.CORBA.authenticationRetryEnabled=true
com.ibm.CORBA.authenticationRetryCount=3
com.ibm.CORBA.validateBasicAuth=true
com.ibm.CORBA.securityServerHost=
com.ibm.CORBA.securityServerPort=
com.ibm.CORBA.loginTimeout=300
com.ibm.CORBA.loginSource=prompt

com.ibm.CORBA.loginUserid=
com.ibm.CORBA.loginPassword=

com.ibm.CORBA.krb5ConfigFile=
com.ibm.CORBA.krb5CcacheFile=

com.ibm.CSI.performStateful=true

com.ibm.CSI.performClientAuthenticationRequired=false
com.ibm.CSI.performClientAuthenticationSupported=true

# SET ALL THE FOLLOWING VALUES TO FALSE

com.ibm.CSI.performTLClientAuthenticationRequired=false
com.ibm.CSI.performTLClientAuthenticationSupported=false

com.ibm.CSI.performTransportAssocSSLTLSRequired=false
com.ibm.CSI.performTransportAssocSSLTLSSupported=false

com.ibm.CSI.performMessageIntegrityRequired=false
com.ibm.CSI.performMessageIntegritySupported=false

com.ibm.CSI.performMessageConfidentialityRequired=false
com.ibm.CSI.performMessageConfidentialitySupported=false

# COMMENT THIS OUT
#com.ibm.ssl.alias=DefaultSSLSettings


com.ibm.CORBA.requestTimeout=180

ОК :)

После подключения появится всплывающее окно входа в систему. Введите имя пользователя и пароль администратора (user & pw не требуются в диалоговом окне подключения в JConsole)

Вы можете запустить JConsole из IBM JDK или Sun JDK. Для IBM никаких других настроек не требуется. Однако для Sun вам может понадобиться поместить файл orb.properties в ваш домашний каталог. Файл можно найти в com.ibm.ws.ejb.thinclient_7.0.0.jar.

5 голосов
/ 23 июля 2009

Я не мог заставить это работать. Все, что я получил, было

Соединение с именем пользователя @ service: jmx: iiop // localhost: 2809 / jndi / JMXConnector не удалось. Хотите попробовать еще раз?

Однако я заработал, выполнив следующее:

  1. Добавьте «-Djavax.management.builder.initial = -Dcom.sun.management.jmxremote» к универсальному аргументу JVM.
  2. Добавьте эти строки в WebSphere / AppServer / java / jre / lib / management / management.properties
com.sun.management.jmxremote.port=9999
com.sun.management.jmxremote.authenticate=false
com.sun.management.jmxremote.ssl=false

Но никто из полезных mbeans не появляется ..?

4 голосов
/ 09 октября 2009

Я обнаружил, что для подключения к WAS 6.1 с использованием JConsole Sun JDK, в дополнение к * JAR-файлу * 1001, мне нужно было также включить следующие 3 JAR-файла в путь загрузочного класса при запуске JConsole: -

ibmorbapi.jar
ibmorb.jar
ibmcfw.jar

Их можно найти в каталоге java \ jre \ lib веб-сферы.

Например, в Windows, если вы скопируете все четыре JAR, перечисленных выше, в каталог по вашему выбору (я скопировал их в C: \ packages \ was61-jmx в приведенном ниже примере), вы можете использовать командный файл например, чтобы запустить JConsole: -

set JAVA_HOME=C:\Progra~1\Java\jdk1.5.0_20
set WAS6.1_JARS=C:\packages\was61-jmx

set BOOTJARS=%WAS6.1_JARS%\ibmorbapi.jar
set BOOTJARS=%BOOTJARS%;%WAS6.1_JARS%\ibmorb.jar
set BOOTJARS=%BOOTJARS%;%WAS6.1_JARS%\ibmcfw.jar

set CLASSPATH=%WAS6.1_JARS%\com.ibm.ws.admin.client_6.1.0.jar
set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\tools.jar
set CLASSPATH=%CLASSPATH%;%JAVA_HOME%\lib\jconsole.jar


%JAVA_HOME%\bin\jconsole  -J-Xbootclasspath/p:%BOOTJARS% -J-Djava.class.path=%CLASSPATH%

Это сработало для меня в версиях Sun Jconsole jdk 1.5 и 1.6.

3 голосов
/ 07 сентября 2012

Я также несколько часов пытался заставить это работать, и я нашел решение. Ключевой вопрос здесь заключается в SSL - клиент должен использовать правильные ключи для установления SSL-соединения с сервером. Это включает указание на правильное расположение хранилища доверенных сертификатов и пароль хранилища доверенных сертификатов, как описано здесь . Лучший способ настроить среду - вызвать setupCmdLine.sh (в Windoze это setupCmdLine.bat) для соответствующего сервера и затем вызвать jconsole следующим образом:

#!/bin/bash

WAS_HOME=/opt/IBM/WebSphere/AppServer

# setup server-specific env variables
. $WAS_HOME/profiles/AppSrv01/bin/setupCmdLine.sh

HOST=localhost
PORT=9100

CLASSPATH=$JAVA_HOME/lib/jconsole.jar
CLASSPATH=$CLASSPATH:$WAS_HOME/runtimes/com.ibm.ws.admin.client_8.5.0.jar
CLASSPATH=$CLASSPATH:$WAS_HOME/runtimes/com.ibm.ws.ejb.thinclient_8.5.0.jar
CLASSPATH=$CLASSPATH:$WAS_HOME/runtimes/com.ibm.ws.orb_8.5.0.jar

$JAVA_HOME/bin/jconsole \
    -J-Djava.class.path=$CLASSPATH\
    -J$CLIENTSAS\
    -J$CLIENTSSL\
    service:jmx:iiop://$HOST:$PORT/jndi/JMXConnector
2 голосов
/ 19 июня 2013

от http://malliktalksjava.in/2010/07/26/enable-jmx-remote-port-in-websphere/

  1. Вход в Консоль администратора веб-сферы любого профиля (сервера), ярлыки будут доступны в программах меню Пуск.

    • Разверните приложение PerfServletApp.ear , если оно еще не развернуто.
    • Проверьте, развернуто ли PerfServletApp.ear :
      • Exapnd Приложения +> Типы приложений +> Приложения WebSphere Enterpise
      • Если нет, нажмите Новое приложение .
    • Просмотр из каталога WebSphere -> AppServer -> InstallableApps .
    • (СЛЕДУЙТЕ ШАГАМ.)
  2. Включить данные PMI и включить всю статистику.

    • На левой панели (внизу) перейдите к Мониторинг и настройка +> Инфраструктура мониторинга производительности (PMI)
    • На вкладке Конфигурация включите PMI .
    • В этой вкладке Configuration и вкладке Runtime установите Вся статистика . Затем Сохранить Изменения.
  3. Установить аргумент JVM

    • В Серверы +> Типы серверов +> Серверы приложений WebSphere , затем -> [имя сервера] +> Определение процесса -> Виртуальная машина Java
    • Установите общий аргумент jvm для включения

      -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote

    в показывает список серверов. щелкните по нужному серверу.

    • На правой панели -> Инфраструктура сервера -> Java и управление процессами щелкните определение Процесс , снова в разделе Дополнительные свойства Конфигурация * Вкладка 1111 * нажмите Виртуальная машина Java . поместите -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote в Универсальный аргумент Jvm и сохранить изменения.
  4. Чтобы включить удаленный порт JMX, откройте следующий файл свойств и добавьте следующий код. В [WebSphere-directory] \ AppServer \ java \ jre \ lib \ management \ management.properties добавьте:

    com.sun.management.jmxremote.port=9001
    com.sun.management.jmxremote.ssl=false
    com.sun.management.jmxremote.authenticate=false
    
  5. Сохраните основные данные, остановите сервер и запустите сервер для загрузки изменений.

2 голосов
/ 07 сентября 2011

Невозможно установить требуемые системные свойства через консоль WAS, поскольку она не позволяет указывать пустые значения. Вместо этого вы должны вставить следующее в конец server.xml:

<systemProperties xmi:id="Property_1315391623828" name="com.sun.management.jmxremote" value="" required="false"/>    <systemProperties xmi:id="Property_1315327918140" name="com.sun.management.jmxremote.port" value="1235" required="false"/>
<systemProperties xmi:id="Property_1315327935281" name="com.sun.management.jmxremote.authenticate" value="false" required="false"/>
<systemProperties xmi:id="Property_1315327948046" name="com.sun.management.jmxremote.ssl" value="false" required="false"/>
<systemProperties xmi:id="Property_1315390852859" name="javax.management.builder.initial" value="" required="false"/>
1 голос
/ 14 мая 2010

Вы можете найти правильный порт для подключения на сервере приложений WebSphere в разделе Связь -> Порты. Порт, связанный с BOOTSTRAP_ADDRESS, позволяет вам подключаться.

1 голос
/ 23 февраля 2009

Посмотрите на следующий простой способ подключения jconsole к Websphere 6.1

Это работает для меня (Solaris, Was 6.1, Sun JVM), также работает с Visual VM

Наслаждайтесь!

...