Monday, February 8, 2010

Monitoring JVM (SunJDK)

There are two ways (that I know of) to enable a WebLogic application for monitoring using JMX.
• Enable IIOP and default user for the WebLogic server
• Use the Java 5 JMX remote capabilities
Enable IIOP and default user for the WebLogic server
Step 1: Enable Anonymous Admin Lookup
From the WebLogic documentation:
The Anonymous Admin Lookup Enabled option specifies whether anonymous, read-only access to WebLogic Server MBeans should be allowed from the MBean API. With this anonymous access, you can see the value of any MBean attribute that is not explicitly marked as protected by the Weblogic Server MBean authorization process. This option is enabled by default to assure backward compatibility. For greater security, you should disable this anonymous access.
To verify the setting of the Anonymous Admin Lookup Enabled option through the WebLogic Administration Console, see the Domain: Security: General page in the Administration Console or the SecurityConfigurationMBean.AnonymousAdminLookupEnabled attribute.
Step 2: Enable IIOP Protocol for Admin Server and Application Servers
• In the Server Settings' Protocol tab, check "Enable IIOP"
• Enter the Default IIOP Username and Default IIOP Password.
If you don't do this, you will get an error similar to the following when you try to establish an rmi connection:
org.omg.CORBA.NO_PERMISSION: User does not have permission on weblogic.management.mbeanservers to perform lookup operation. vmcid: 0 completed: No
Then you can use the JMX URL to connect to an individual application server:
service:jmx:rmi:///jndi/iiop://127.0.0.1:7001/weblogic.management.mbeanservers.runtime
or if you connect to the Admin server, you can view the MBeans for all the servers in the cluster using this URL:
service:jmx:rmi:///jndi/iiop://127.0.0.1:7001/weblogic.management.mbeanservers.domainruntime
See also: Enable and configure IIOP
Use Java 5 JMX remote
Add the following command-line options to the start script for the WebLogic server you want to monitor:
-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8888
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false
Then, you can connect using this JMX URL:
service:jmx:rmi:///jndi/rmi://127.0.0.1:8888/jmxrmi
and you will got not only the com.bea MBeans, but all of the Java 5 MBeans, also.

No comments: