Domanda Come abilitare JMX in Websphere?


Vorrei utilizzare JConsole per monitorare la mia applicazione Websphere, ma non sono sicuro di come abilitare JMX.


29
2017-12-10 18:39


origine


risposte:


Le seguenti informazioni sono per Websphere 6.1 su Windows.

Prima di tutto, l'URL magico per connettersi al server MBean è:

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

Se si dispone di un'installazione di Websphere predefinita, il numero di porta JNDI sarà probabilmente 2809, 2810, ... a seconda del numero di server installati su un sistema e di quello specifico a cui si desidera connettersi. Per sicurezza, all'avvio di Websphere, controlla i log, dato che eseguirà il dump di una riga come

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

Se non si ottiene questa linea, aprire la console di amministrazione di Websphere e andare a

Server delle applicazioni> server1>   Servizi di amministrazione> JMX   connettori

per vedere se è necessario aggiungere o modificare la configurazione.

Il secondo importante bit di informazione è che il seguente JAR è sempre necessario quando si esegue JMX con il server:

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

Puoi trovare questo JAR nel the runtimes directory di Websphere. Qualunque cosa tu faccia, sia che acceda a livello di codice agli MBean su Websphere, sia che usi JConsole e così via, usa l'URL magico e sempre includi questo JAR.

Per il resto di questa risposta, supponiamo che Websphere sia installato in D: \ prog \ was61.

Per eseguire JConsole, digitare quanto segue:

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

Quindi vai alla scheda "Avanzate" e inserisci l'URL magico JMX. Premi Connetti e dovresti vedere apparire gli MBean.

Usare un Sun JDK è una questione completamente diversa. È necessario un JAR aggiuntivo che si trovi nella lib di IBM JDK ma non di Sun (ibmorb.jar), e forse il seguente comando potrebbe funzionare per voi:

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

Dico forse, perché non ha funzionato per me. Ho ricevuto un bel messaggio di errore jndiUnavailCommErr, dal momento che si aspettava qualcosa sulla porta 2809 mentre l'installazione di Websphere è in ascolto su 2810, anche se ho specificato correttamente la porta 2810 nell'URL JMX. Ma, se adotti i percorsi per puntare a Sun JDK, potrebbe funzionare per te. È il più vicino che abbia mai avuto a connettermi a Websphere usando il JDK di Sun.

Nota finale: ho provato una soluzione basata su RMI, c'è anche un connettore SOAP disponibile ma non l'ho provato.

Come sempre con J2EE, Websphere e altre cose: buona fortuna, ne avrai bisogno.


32
2017-12-11 09:43



È semplice. Basta avviare Websphere con i seguenti parametri 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

Quindi avviare JConsole o VisualVM e connettersi a localhost: 1099

Dal momento che non sono autorizzato a pubblicare uno screenshot di prova, pubblico le informazioni dalla "scheda panoramica" di visualvm.

PID: 12568
Host: localhost
Classe principale: <sconosciuto>
Argomenti: <nessuno>
JVM: IBM J9 VM (2.3, J2RE 1.5.0 IBM J9 2.3 Windows XP x86-32 j9vmwi3223-20100808 (abilitato JIT)
J9VM - 20100629_60535_lHdSMr
JIT - 20100623_16197_r8
GC - 20100211_AA)
Java: versione 1.5.0, fornitore IBM Corporation
Java Home: C: \ Programmi \ IBM \ SDP \ runtime \ base_v61 \ java \ jre
Flag JVM: <nessuno>
Dump heap su OOME: disabilitato

9
2018-03-28 08:09



Forse è un po 'fuori programma, ma ho trovato un modo per connettermi al server JMX di WAS 7.0 da JConsole. Non è richiesta alcuna configurazione del server, nessun AppClient, solo alcuni JAR e una piccola installazione client.

Usa il seguente script

@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%

Se il server di destinazione ha disabilitato la sicurezza amministrativa, commentare le linee CLIENTSAS e PROVIDER.

Se la sicurezza è abilitata, sarà necessario anche il file sas.client.props da inserire nella directory THIS_DIR. Il file modello può essere trovato nella directory WAS_profile \ properties. Dovrai fare un piccolo setup. Ecco un estratto dal mio 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

OK :)

Dopo la connessione, apparirà il popup di accesso. Digita il tuo utente amministratore e la tua password (utente e pw non sono richiesti nella finestra di dialogo di connessione in JConsole)

È possibile eseguire JConsole da IBM JDK o Sun JDK. Per IBM, non è richiesta alcuna altra configurazione. Tuttavia, per Sun potrebbe essere necessario inserire il file orb.properties nella home directory. Il file può essere trovato in com.ibm.ws.ejb.thinclient_7.0.0.jar.


6
2018-02-12 15:49



Non ho potuto farlo funzionare. Tutto quello che ho ottenuto è stato

La connessione al nome utente @ servizio: jmx: iiop // localhost: 2809 / jndi / JMXConnector non ha avuto esito positivo. Ti piacerebbe riprovare?

Tuttavia, l'ho fatto funzionare facendo quanto segue:

  1. Aggiungi "-Djavax.management.builder.initial = -Dcom.sun.management.jmxremote" all'argomento JVM generico.
  2. Aggiungi queste linee a 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

Ma nessuno degli utili bean si presenta ..?


5
2017-07-23 14:51



Ho trovato che per connettersi a WAS 6.1 utilizzando JCK JCK Sun, oltre al com.ibm.ws.admin.client_6.1.0.jar File JAR, ho dovuto includere anche i seguenti 3 JAR sul percorso della classe di avvio all'avvio di JConsole: -

ibmorbapi.jar
ibmorb.jar
ibmcfw.jar

Questi possono essere trovati nella directory java \ jre \ lib di websphere.

Ad esempio su Windows, se copi tutti e quattro i JAR elencati sopra in una directory a tua scelta (li ho copiati in C: \ packages \ was61-jmx nell'esempio seguente), puoi usare un file batch come il seguente per avviare 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%

Questo ha funzionato per me per le versioni jdk 1.5 e 1.6 di Sun Jconsole.


4
2017-10-09 19:03



Ho anche faticato per alcune ore per farlo funzionare e ho trovato la soluzione. Il problema chiave è qui SSL: il client deve utilizzare le chiavi appropriate per stabilire una connessione SSL al server. Ciò implica il puntamento alla posizione corretta dell'archivio di fiducia e la password dell'archivio di fiducia come descritto Qui. Il modo migliore per configurare l'ambiente è chiamare setupCmdLine.sh (su Windoze è setupCmdLine.bat) per il server pertinente, quindi richiamare jconsole in questo modo:

#!/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

3
2017-09-07 06:27



Non è possibile impostare le proprietà di sistema richieste tramite la console WAS, poiché non consente di specificare valori vuoti. Invece, devi inserire quanto segue nella parte inferiore di "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"/>

2
2017-09-07 12:41



Guarda quanto segue metodo semplice per connettere jconsole a Websphere 6.1

Funziona per me (Solaris, Was 6.1, Sun JVM), funziona anche con Visual VM

Godere !


1
2018-02-23 18:09



È possibile trovare la porta corretta a cui connettersi su WebSphere Application Server in Comunicazioni -> Porte. La porta associata a BOOTSTRAP_ADDRESS ti consente di connetterti.


1
2018-05-14 15:18



a partire dal http://malliktalksjava.in/2010/07/26/enable-jmx-remote-port-in-websphere/

  1. Accedere Console di amministrazione della sfera Web qualsiasi profilo (server), scorciatoia sarà disponibile nei programmi del menu di avvio.

    • Distribuire il PerfServletApp.ear applicazione se non già implementata.
    • Controlla se PerfServletApp.ear è schierato:
      • Exapnd applicazioni +> Tipi di applicazione +> Applicazioni WebSphere Enterpise
      • In caso contrario, fare clic su Nuova applicazione.
    • Sfoglia da Directory di WebSphere -> AppServer -> installableApps.
    • (SEGUI I PASSI.)
  2. Abilita i dati PMI e imposta tutte le statistiche abilitate.

    • Nel riquadro di sinistra (in basso), vai a Monitoraggio e ottimizzazione +> Performance Monitoring Infrastructure (PMI) 
    • In Configurazione scheda, abilitare il PMI.
    • In questo Configurazione scheda e il Runtime scheda, impostare Tutte le statistiche. Poi Salvare i cambiamenti.
  3. Imposta argomento JVM

    • In recide +> Tipi di server +> WebSphere Application Servers, quindi -> [nome del server] +> Definizione del processo -> macchina virtuale Java
    • Imposta l'argomento jvm generico da includere

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

    in mostra la lista dei server. clicca sul server che vuoi

    • Nel pannello di destra -> Infrastruttura server -> Java e gestione dei processi  clicca su Processi definizione, di nuovo in Proprietà aggiuntive di Configurazione linguetta clicca su macchina virtuale Java. metti il -Djavax.management.builder.initial= -Dcom.sun.management.jmxremote in Argomento generico di Jvm campo e salvare i cambiamenti.
  4. Per abilitare la porta remota JMX, aprire il seguente file delle proprietà e aggiungere il codice che segue. In [WebSphere-directory] \ AppServer \ java \ jre \ lib \ gestione \ management.properties, Inserisci:

    com.sun.management.jmxremote.port=9001
    com.sun.management.jmxremote.ssl=false
    com.sun.management.jmxremote.authenticate=false
    
  5. Salvare i dati master, arrestare il server e avviare il server per caricare le modifiche.


1
2018-06-19 07:08