簡體   English   中英

如何在Websphere中啟用JMX?

[英]How do you enable JMX in Websphere?

我想使用JConsole來監視我的Websphere應用程序,但我不知道如何啟用JMX。

以下信息適用於Windows上的Websphere 6.1。

首先,連接到MBean服務器的神奇URL是:

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

您可以在Websphere的runtimes目錄中找到此JAR。 無論您做什么,無論是以編程方式訪問Websphere上的MBean,還是使用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

然后轉到“高級”選項卡並輸入魔術JMX URL。 按連接,您應該看到MBean出現。

使用Sun JDK是一個完全不同的問題。 您需要一個額外的JAR,它位於IBM JDK的lib中,而不是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錯誤消息,因為當我的Websphere安裝正在監聽2810時,它期望端口2809上的某些內容,盡管我在JMX URL中正確指定了端口2810。 但是,如果您調整路徑以指向Sun JDK,它可能適合您。 這是我使用Sun的JDK連接到Websphere的最接近的。

最后說明:我嘗試了基於RMI的解決方案,還有一個SOAP連接器可用,但還沒有嘗試過。

和J2EE,Websphere一樣:好運,你需要它。

很簡單。 只需使用以下JMX參數啟動Websphere:

-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

由於我不允許發布證明屏幕截圖,我發布了visualvm“概述選項卡”中的信息。

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

也許它有點偏離主題,但我找到了一種從JConsole連接到WAS 7.0 JMX服務器的方法。 不需要服務器設置,沒有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

好 :)

連接后,將出現登錄彈出窗口。 輸入您的管理員用戶和密碼(JConsole中的連接對話框中不需要用戶和密碼)

您可以從IBM JDK或Sun JDK運行JConsole。 對於IBM,不需要其他設置。 但是,對於Sun,您可能需要將orb.properties文件放在主目錄中。 該文件可以在com.ibm.ws.ejb.thinclient_7.0.0.jar中找到。

我無法讓這個工作。 我得到的只是

與username @ 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出現..?

我發現為了使用Sun JDK JConsole連接到WAS 6.1,除了com.ibm.ws.admin.client_6.1.0.jar JAR文件之外,我還必須在引導類路徑中包含以下3個JAR啟動JConsole時: -

ibmorbapi.jar
ibmorb.jar
ibmcfw.jar

這些可以在websphere的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%

這適用於我的jdk 1.5和1.6版本的Sun Jconsole。

我也掙扎了幾個小時才能讓它工作,我找到了解決方案。 關鍵問題在於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

來自http://malliktalksjava.in/2010/07/26/enable-jmx-remote-port-in-websphere/

  1. 登錄到Web球體的管理控制台任何配置文件(服務器),快捷方式將在開始菜單程序中可用。

    • 如果尚未部署,則部署PerfServletApp.ear應用程序。
    • 檢查是否部署了PerfServletApp.ear
      • Exapnd Applications +> 應用程序類型 +> WebSphere Enterpise應用程序
      • 如果沒有,請單擊新建應用程序
    • WebSphere目錄 - > AppServer - > InstallableApps瀏覽
    • (按照步驟。)
  2. 啟用PMI數據並設置啟用的所有統計信息。

    • 在左窗格(底部)中,轉至監控和調優 +> 性能監控基礎架構(PMI)
    • 在“ 配置”選項卡中,啟用PMI
    • 在“ 配置”選項卡和“ 運行時”選項卡中,設置“ 所有統計信息” 然后保存更改。
  3. 設置JVM參數

    • Severs +> Server Types +> WebSphere Application Servers中 ,然后 - > [server-name] +> Process definition - > Java Virtual Machine
    • 將通用jvm參數設置為include

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

    in顯示服務器列表。 單擊您想要的服務器。

    • 在右側窗格 - > 服務器基礎結構 - > Java和進程管理中,單擊“ 進程定義”,再次在“ 配置的其他屬性”選項卡中單擊“ Java虛擬機” -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote放在Generic Jvm Argument字段中並保存更改。
  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. 保存主數據,停止服務器,然后啟動服務器以加載更改。

您無法通過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"/>

您可以在Communications - > Ports下的WebSphere Application Server上找到要連接的正確端口。 與BOOTSTRAP_ADDRESS關聯的端口允許您連接。

請查看以下將jconsole連接到Websphere 6.1的簡單方法

它適用於我(Solaris,Was 6.1,Sun JVM),它也適用於Visual VM

請享用 !

好。 有兩種方法可以做到這一點:一種使用SOAP連接器,一種使用RMi / IIOP連接器。

對於SOAP,您需要進行WAS設置以添加上面描述的新PORT和其他JVM參數。 但是,一旦JConsole連接到服務器,您獲得的只是基本的JVM指標。

使用RMI,您可以獲得WebSphere公開的所有內容。 所有MBeans! 唯一需要注意的是:如果您的WAS JVM位於防火牆后面 - 您需要打開一個端口才能從桌面訪問它。 但你可以通過X11直接在app服務器主機上運行它!

我在Windows XP桌面上使用JDK7連接到啟用了全局安全性的WAS 7.0。 我從上面的答案#4中獲取了一個腳本並將其用作起點。 這是我的版本:

@echo off 
set HOST=<put hostname here>
set PORT=<put JVM's BOOTSTRAP_PORT here>

set WAS_HOME=C:\jconsole
set JAVA_HOME=C:\glassfish3\jdk7
set PROPS_DIR=C:\jconsole\properties

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

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

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

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

@echo on

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

WAS_HOME只是一個目錄,其中包含我從WebSphere二進制文件(Solaris之外)下載的那些IBM JAR。 我還在那里創建了兩個子目錄: propertieskeystore 在屬性subdir我把我的sas.client.props和ssl.client.props,也從一個工作的WAS7單元格下載(我把它從DM中取出)。 在密鑰庫子目錄中,我放了key.p12和trust.p12文件,也是從WAS7單元下載的。 確保他們擁有正確的證書! 如果來自WAS / etc的那些不起作用 - 嘗試來自$ {CONFIG_ROOT} / cells /的那些。 修改ssl.client.props以確保p12文件的路徑正確!

現在,為了使其工作,您還必須從WAS二進制文件中下載以下內容:

WAS_BIN_HOME/java/jre/lib/endorsed

將整個目錄放在SUN JDK的jre / lib目錄下。 這會處理IBM JSSE2 Provider錯誤等。 另外,從WAS_BIN_HOME / java / jre / lib / security獲取以下三個文件:

java.security
local_policy.jar
US_export_policy.jar

我剛剛用IBM的那些來覆蓋SUN的JDK附帶的那些。

此外,在sas.client.props中,請務必輸入用戶ID和密碼,類似於您在soap.client.props中的操作方式。 您可以用相同的方式對密碼進行編碼。 這需要通過Global Security的BasicAuth。

我想就是這樣。 PS我不是Windows專業版,所以如果有更簡潔的方法 - 請分享。

您可以嘗試以下操作,它使用SOAP協議適配器。 我認為這可能是精益配置。

#!/bin/sh 
current_dir=`dirname "$0"`

HOSTNAME=host.fqdn
PORT=2809

WAS_HOME=/opt/IBM/WebSphere/AppServer
WAS_PROFILE=$WAS_HOME/profiles/AppSrv01
WAS_RUNTIMES=$WAS_HOME/runtimes

WAS_LIB=$WAS_HOME/java/lib
JAVA_HOME=$WAS_HOME/java



CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/jconsole.jar:$WAS_RUNTIMES/com.ibm.ws.admin.client_7.0.0.jar:$WAS_LIB/ibmcfw.jar 

TARGET=service:jmx:soap://$HOSTNAME:$PORT/jndi/JMXConnector

CP="-J-Djava.class.path=$CLASSPATH"
SSL_SERVER_KEY="-J-Djavax.net.ssl.keyStore=$WAS_PROFILE/etc/DummyServerKeyFile.jks -J-Djavax.net.ssl.keyStorePassword=WebAS"
SSL_TRUST_STORE="-J-Djavax.net.ssl.trustStore=$WAS_PROFILE/etc/DummyServerTrustFile.jks -J-Djavax.net.ssl.trustStorePassword=WebAS"
SSL_OPTS="-J-Dcom.ibm.SSL.ConfigURL=file:$WAS_PROFILE/properties/ssl.client.props"
SOAP_OPTS="-J-Dcom.ibm.SOAP.ConfigURL=file:$WAS_PROFILE/properties/soap.client.props"
WAS_OPTS="-J-Dwas.install.root=$WAS_HOME -J-Djava.ext.dirs=$WAS_HOME/plugins:$WAS_HOME/lib:$WAS_HOME/plugins/com.ibm.ws.security.crypto_6.1.0:$WAS_HOME/lib:$JAVA_HOME/jre/lib/ext"

COMMAND="$JAVA_HOME/bin/jconsole $CP $SSL_SERVER_KEY $SSL_TRUST_STORE $SSL_OPTS $SOAP_OPTS $WAS_OPTS $TARGET"

exec $COMMAND

使用IIOP向我的同事Jeroen致信腳本的初始版本(我正在嘗試使用SOAP,希望它可以與Hyperic一起使用)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM