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 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:
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:
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.