30

JConsole を使用して Websphere アプリケーションを監視したいのですが、JMX を有効にする方法がわかりません。

4

12 に答える 12

33

以下の情報は、Windows上のWebsphere6.1に関するものです。

まず、MBeanサーバーに接続するための魔法のURLは次のとおりです。

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

デフォルトのWebsphereインストールがある場合、JNDIポート番号は2809、2810、...になります。これは、1つのシステムにインストールされているサーバーの数と、接続する特定のサーバーによって異なります。確かに、Websphereを起動するときは、ログを確認してください。次のような行がダンプされます。

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

この行が表示されない場合は、Websphere管理コンソールを開いて、

アプリケーションサーバー>server1>管理サービス>JMXコネクタ

構成を追加または変更する必要があるかどうかを確認します。

2つ目の重要な情報は、サーバーでJMXを実行する場合は、常に次のJARが必要になるということです。

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

このJARは、runtimesWebsphereのディレクトリーにあります。プログラムで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

次に、[詳細設定]タブに移動し、マジックJMXURLを入力します。接続を押すと、MBeanが表示されます。

Sun JDKの使用は、まったく別の問題です。IBM JDKのlibにはあるがSun(ibmorb.jar)にはない追加のJARが1つ必要です。おそらく、次のコマンドが機能する可能性があります。

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

多分、それは私にはうまくいかなかったので、私は言います。JMX URLでポート2810を正しく指定したにもかかわらず、Websphereインストールが2810でリッスンしているときに、ポート2809で何かが予期されていたため、jndiUnavailCommErrエラーメッセージが表示されました。ただし、Sun JDKを指すようにパスを調整すると、うまくいく可能性があります。これは、SunのJDKを使用してWebsphereに接続するのにこれまでで最も近いものです。

最後の注意:RMIに基づくソリューションを試しました。利用可能なSOAPコネクタもありますが、試していません。

J2EE、Websphereなどと同様に、幸運を祈ります。必要になります。

于 2008-12-11T09:43:40.010 に答える
9

簡単です。次の 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 の「概要タブ」から情報を投稿します。

ピッド: 12568
ホスト: ローカルホスト
メインクラス: <不明>
引数: <なし>
JVM: IBM J9 VM (2.3、J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20100808 (JIT 有効)
J9VM - 20100629_60535_lHdSMr
JIT-20100623_16197_r8
GC - 20100211_AA)
Java: バージョン 1.5.0、ベンダー IBM Corporation
Java ホーム: C:\Program Files\IBM\SDP\runtimes\base_v61\java\jre
JVM フラグ: <なし>
OOME のヒープ ダンプ: 無効
于 2011-03-28T08:09:31.780 に答える
6

少々的外れかもしれませんが、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 の接続ダイアログではユーザーとパスワードは必要ありません)。

JConsole は、IBM JDK または Sun JDK から実行できます。IBM の場合、その他のセットアップは必要ありません。ただし、Sun の場合は、ホーム ディレクトリに orb.properties ファイルを配置する必要がある場合があります。このファイルは、com.ibm.ws.ejb.thinclient_7.0.0.jar にあります。

于 2010-02-12T15:49:51.953 に答える
5

これを機能させることができませんでした。私が得たのは

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 のどれも表示されません..?

于 2009-07-23T14:51:47.757 に答える
4

Sun JDK JConsole を使用して WAS 6.1 に接続するには、com.ibm.ws.admin.client_6.1.0.jarJAR ファイルに加えて、JConsole の起動時に次の 3 つの JAR をブート クラス パスに含める必要があることがわかりました。

ibmorbapi.jar
ibmorb.jar
ibmcfw.jar

これらは、websphere の java\jre\lib ディレクトリにあります。

たとえば Windows では、上記の 4 つの 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 バージョンで機能しました。

于 2009-10-09T19:03:51.977 に答える
3

また、これを機能させるために数時間苦労し、解決策を見つけました。ここで重要な問題は 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
于 2012-09-07T06:27:00.377 に答える
2

http://malliktalksjava.in/2010/07/26/enable-jmx-remote-port-in-websphere/から

  1. 任意のプロファイル (サーバー) の Web 球体の管理コンソールにログインすると、スタート メニュー プログラムでショートカットを使用できます。

    • まだデプロイされていない場合は、PerfServletApp.earアプリケーションをデプロイします。
    • PerfServletApp.earがデプロイされているかどうかを確認します 。
      • Exapndアプリケーション+>アプリケーション タイプ+> WebSphere Enterprise Applications
      • そうでない場合は、[新しいアプリケーション] をクリックします。
    • WebSphere ディレクトリ-> AppServer -> InstallableAppsからブラウズします。
    • (手順に従ってください。)
  2. PMI データを有効にし、すべての統計を有効に設定します。

    • 左ペイン (下) で、 [監視とチューニング] +> [パフォーマンス監視インフラストラクチャ (PMI)]に移動します。
    • [構成] タブで、 PMIを有効にします。
    • この「構成」タブと「ランタイム」タブで、「すべての統計」を設定します。次に、変更を保存します。
  3. JVM 引数の設定

    • Servers + > Server Types +> WebSphere Application Serversで、-> [server-name] +> Process definition -> Java Virtual Machine
    • 汎用 jvm 引数を include に設定します

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

    に、サーバーのリストを示します。目的のサーバーをクリックします。

    • 右側のペイン -> Server Infrastructure -> Java and Process ManagementでProcess definition を クリックし、再度、Additional Properties of ConfigurationタブでJava Virtual Machineをクリックします。-Djavax.management.builder.initial= -Dcom.sun.management.jmxremoteGeneric 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. マスター データを保存し、サーバーを停止し、サーバーを起動して変更を読み込みます。

于 2013-06-19T07:08:50.950 に答える
2

空の値を指定できないため、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"/>
于 2011-09-07T12:41:27.570 に答える
1

通信 -> ポートの下で、WebSphere Application Server に接続するための正しいポートを見つけることができます。BOOTSTRAP_ADDRESS に関連付けられたポートで接続できます。

于 2010-05-14T15:18:43.180 に答える
1

jconsole を Websphere 6.1 に接続する次の簡単な方法を見てください。

それは私にとってはうまくいきます(Solaris、Was 6.1、Sun JVM)、Visual VM でも動作します

楽しみ !

于 2009-02-23T18:09:02.237 に答える
0

次のことを試すことができます。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の功績(Hypericで動作することを期待してSOAPを試しています)

于 2011-10-04T14:01:17.123 に答える
0

Ok。これには 2 つの方法があります。1 つは SOAP コネクタを使用する方法、もう 1 つは RMi/IIOP コネクタを使用する方法です。

SOAP の場合、WAS セットアップを実行して、新しい PORT と上記のその他の JVM 引数を追加する必要があります。しかし、JConsole がサーバーに接続すると取得できるのは基本的な JVM メトリックだけです。

RMI を使用すると、WebSphere が公開するすべてのものを取得できます。すべての MBean です。唯一の注意点は、WAS JVM がファイアウォールの背後にある場合、デスクトップからアクセスするにはポートを開く必要があるということです。しかし、アプリ サーバー ホストから直接 X11 経由でこれを実行できます。

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という 2 つのサブディレクトリを作成しました。プロパティのサブディレクトリに、動作中の WAS7 セルからダウンロードした sas.client.props と ssl.client.props を配置しました (DM から削除しました)。キーストアのサブディレクトリに、同じく WAS7 セルからダウンロードした key.p12 および trust.p12 ファイルを配置しました。彼らが正しい証明書を持っていることを確認してください!WAS/etc のものでうまくいかない場合は、${CONFIG_ROOT}/cells/ のものを試してください。 ssl.client.props を変更して、p12 ファイルへのパスが正しいことを確認してください。

これを機能させるには、WAS バイナリから次のものもダウンロードする必要があります。

WAS_BIN_HOME/java/jre/lib/endorsed

このディレクトリ全体を SUN JDK のjre/libディレクトリの下に置きます。これにより、IBM JSSE2 プロバイダーのエラーなどが処理されます。また、WAS_BIN_HOME/java/jre/lib/securityから次の 3 つのファイルを取得します。

java.security
local_policy.jar
US_export_policy.jar

SUN の JDK に付属していたものを、IBM のもので上書きしただけです。

また、sas.client.propsでは、soap.client.propsで行うのと同様に、必ずユーザー ID とパスワードを入力してください。同じ方法でパスワードをエンコードできます。これは、Global Security の BasicAuth を通過するために必要です。

それだけだと思います。PS私はWindowsのプロではないので、これを行うためのよりクリーンな方法があれば共有してください.

于 2013-03-28T17:39:53.890 に答える