How to monitor dashboard Java VM installed and running on Windows server as a service

  • 7011907
  • 11-Mar-2013
  • 11-Mar-2013

Environment

NetIQ Operations Center
Novell Operations Center 5.0
Novell Operations Center myMO 4.7
Novell Operations Center 5.0 Dashboard

Situation

Novell/NetIQ dashboard, as a part of Operations Center suite, is running on top of tomcat6 engine, which loads in its own Java virtual machine. When facing an issue with the dashboard, it is always useful to check how tomcat engine is doing within this Java VM, if it has enough memory resources, or if it is perhaps leaking memory, etc. In case the dashboard is installed on Windows server and started as a service, then it is rather difficult to reach dashboard/tomcat6 Java VM with standard Java troubleshooting tools like jconsole, or jvisualvm. The problem is that being loaded as a service the Java virtual machine is loaded into separate security context, and for an administrator on the server console GUI it remains hidden and inaccessible.

Resolution

The solution here is to use Java remote monitoring approach, namely the class sun.management.jmxremote, and try to monitor the hidden Java VM process "remotely". However, when you try to modify related windows service (created by the dashboard installation process), which is responsible for starting tomcat6, you will quickly find that for some reason jmxremote class as an additional Java parameter for this VM is simply being ignored.

It seems that the only way how to make java class for remote monitoring accepted by this specific service is to go into Windows registry database, and modify related registry entry directly. The registry entry path is this one:
HKLM\SOFTWARE\Apache Software Foundation\PRocrun 2.0\NOCDashboard\Parameters\Java
(It can slightly differ in reality, if you register your dashboard under different name.)
 
You have to add following four parameters:

-Dcom.sun.management.jmxremote
-Dcom.sun.management.jmxremote.port=8282
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=false






In the sample settings above we used port number 8282, and non-secure communication, without need to authenticate. For one time troubleshooting this security settings are acceptable, but if needed you can also make your communication secure, and you can request authentication.
After you restart your dashboard as the service, you can then connect with jconsole or jvisualvm tool to hidden Java VM over the given port.