From: http://www.performanceengineer.com/blog/monitoring-weblogic-using-jmx/
Monitoring WebLogic using JMX
March 16, 2007 – 1:29 pm
It’s not as straightforward as you might think or expect, but once setup, gives a lot more insight into the behavior of your applications. Use your favorite JMX client (jconsole, jManage, SiteScope, MC4J, etc.) to monitor thread pools, database connections, memory usage and any other MBean attributes.
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 serverStep 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.
Troubleshooting
If there are a large number of MBeans in your monitored application, you may run into a problem using Windows where the IIOP connection will timeout. You may see an error like this:
Internal communication failed. (in getResults) org.omg.CORBA.COMM_FAILURE:
vmcid: SUN minor code: 208 completed: Maybe
In this case you can set the com.sun.CORBA.transport.ORBTCPReadTimeouts property to adjust the transport read tcp timeout property, which is a colon separated property with the following syntax.
<initial time to wait: max read giop header time to wait: max read message time to wait: backoff factor>
If you are getting this error, then you can add this option to the jconsole command line, adjusting the 2nd value higher as needed. This example sets the timeout to 30 seconds:
jconsole -J-Dcom.sun.CORBA.transport.ORBTCPReadTimeouts=10:30000:500:10
Incorporating into LoadRunner
Once you have enabled the JMX monitors, you can then incorporate this data into your LoadRunner test scenarios using SiteScope. SiteScope is an agent-less monitoring tool that actually comes bundled with LoadRunner and is free (up to 500 monitoring "points") for non-production use.