VMware vSphere

 View Only
Expand all | Collapse all

JMX AutoDiscover

guss201110141

guss201110141Feb 22, 2011 09:21 AM

  • 1.  JMX AutoDiscover

    Posted Feb 22, 2011 08:38 AM
    Hi,
    I'm new to HypericHQ and i'm currently in the process of comparing it to Nagios.

    Our application is java based, and we have few components.
    Some are tomcat based the others are standard JVM.

    All expose application metrics and actions using JMX.

    Currently i don't even trying to monitor the non tomcat JVM's (i guess it will be complicated than monitoring tomcat, will get to it once tomcat will work)

    I'm trying to make hypericHQ descover our JMX metrics. in tomcat we are using spring to expose all jmx metrics and actions. so it should be pretty much out of the box.
    we are able to view the metrics using remote jmx with jconsole.

    hyperichq autodiscover the tomcat jvm. and does show jmx metrics from the catalina level (like servlet monitoring, cache, jsp, etc...)

    but it doesn't discover our application metrics.

    i will be happy to provide additional information if needed.

    any lead will be great.

    Thanks,
    Oded.


  • 2.  RE: JMX AutoDiscover

    Posted Feb 22, 2011 09:07 AM
    Hi,

    I am using tomcat and monitoring, in my case it was necessary to add in the tomcat service line:

    JAVA_OPTS = "$ JAVA_OPTS-Dcom.sun.management.jmxremote-Dcom.sun.management.jmxremote.port = 6969-Dcom.sun.management.jmxremote.ssl = false-Dcom.sun.management.jmxremote.authenticate = false "

    Could this be your help?

    Squintana.


  • 3.  RE: JMX AutoDiscover

    Posted Feb 22, 2011 09:21 AM
    Thanks, but no.
    already have it set...


  • 4.  RE: JMX AutoDiscover

    Posted Feb 22, 2011 09:11 AM
    I also I have the servers remotely and they are behind a firewall, this had to open port 6969, you have it in mind.


  • 5.  RE: JMX AutoDiscover

    Posted Feb 22, 2011 09:26 AM
    Can you tell us how you solved the problem? Maybe other users can help;).

    Thanks.


  • 6.  RE: JMX AutoDiscover

    Posted Feb 22, 2011 09:53 AM
    hi,
    Sorry, i confused you.
    i didn't meant that i fixed it :) i meant that i already have the parameters you suggested set , and it doesn't work :)

    regarding the firewall, iptables is disabled and the hyperic server and the hyperic agent are on the same switch + i'm able to view the mbeans using jconsole..


  • 7.  RE: JMX AutoDiscover

    Posted Feb 22, 2011 10:29 AM
    I think I'm missing something very basic..

    can someone refer me to the right manual for:
    configuring my application, deployed at tomcat to work with hyperichq?
    is there something special i need to expose in my JMX attributes?

    (it killing me.. it should be basic..it must be something that i'm missing here...)

    Thanks.


  • 8.  RE: JMX AutoDiscover

    Posted Feb 22, 2011 10:54 AM
    The problem is the configuration properties in Hyperic on Apache tomcat, apache tomcat if it has been detected by Hyperic, you must click on the service, and select "Configuration Properties. " These are my values:

    jmx.url: service:jmx:rmi:///jndi/rmi://localhost:6969/jmxrmi
    jmx.username: system
    ptql: State.Name.eq=java,Args.*.ct=catalina.home
    server.log_track.files: logs/catalina.out
    program: /opt/apache-tomcat-6.0.29/bin/catalina.sh

    Can you check your values? Maybe you should adapt to new parameters.


    Can you check your values? Maybe you should adapt to new parameters.

    With this configuration I can see the full service of Apache-Tomcat, ie, Cache, global request processor, Monitor JSP, Servlet monitor, Thread pools, etc..


    Best Regards,


  • 9.  RE: JMX AutoDiscover

    Posted Feb 22, 2011 11:01 AM
    Hi,
    My issue is not with the default tomcat/catalina jmx's (cache, servlet, jsp), this works.

    My issue is with my application JMX's... my application expose many attributes and action via JMX, and i want to be able to monitor them from hyperic...

    thanks


  • 10.  RE: JMX AutoDiscover

    Posted Feb 22, 2011 11:02 AM
    Hi,
    My issue is not with the default tomcat/catalina jmx's (cache, servlet, jsp), this works.

    My issue is with my application JMX's... my application expose many attributes and action via JMX, and i want to be able to monitor them from hyperic...

    thanks


  • 11.  RE: JMX AutoDiscover

    Posted Feb 23, 2011 07:06 AM
    Hi,
    Is there any other tip here?
    did any one tried to monitor application jmx's with hyperic and it did work ?

    thanks


  • 12.  RE: JMX AutoDiscover

    Posted Feb 24, 2011 01:59 AM
    Sounds like you want monitor your own custom application metrics via JMX. Hyperic HQ needs to be configured to tell it what the Metrics are, what to do with them, which are indicators etc.

    The first step is to use JConsole to understand your applications metrics and ensure you can connect to it remotely, not just locally.

    Then create a XML-plugin which configures the metrics to be gathered:
    http://support.hyperic.com/display/DOC/JMX+Plugin

    Some links to get you on your way:
    http://support.hyperic.com/display/DOC/Plugin+XML+Descriptor

    I recently created a plugin so that we can monitor JBoss HornetQ in a standalone configuration via JMX. It is a good example to get you going:
    https://github.com/ClarityServices/hyperic-hornetq

    In building your XML plugin, it is best to start testing at the command line:
    http://support.hyperic.com/display/DOC/Running+and+Testing+Plugins+from+Command+Line


  • 13.  RE: JMX AutoDiscover

    Posted Feb 25, 2011 01:58 AM
    I have just got this working myself so here's all I know.

    The long answer is to check out these pages
    http://support.hyperic.com/display/EVO/Model+MBean+Naming+and+Descriptor+Data
    http://support.hyperic.com/display/EVO/Instrumenting+Java+Applications+for+Management

    The quick answer is:
    Normal JMX beans WON'T automatically appear in Hyperic
    To have a JMX bean appear in Hyperic as a service is has to
    1) Have an ObjectName that conforms to

    spring.application:application=%application%,type=%type%,name=%name%

    The type= part of the name will correspond to a Service in Hyperic. So a JMX bean of

    spring.application:application=MyApp,type=DataBaseMonitor,name=db1

    will add a Service in Hyperic to your Tomcat server of type DataBaseMonitor with a name of MyApp db1.

    If you have another DB in your application you export another JMX bean like

    spring.application:application=MyApp,type=DataBaseMonitor,name=db2


    2) The following JMX descriptor field for each numeric attribute of the JMX bean must be set

    ModelMBeanAttributeInfo.getDescriptor().getField("metricType")

    There are more descriptor fields you can set to change the type of metric created, just read the two pages above.


    The easiest way to do all of this is to use Spring 3.0 and the @ManagedResource and @ManagedMetric annotations along with the AnnotationMBeanExporter. See the Spring reference documentation for more on this.

    e.g.

    @ManagedResource(objectName="spring.application:application=MyApp,type=DataBaseMonitor,name=db1")
    class DataBaseMonitor {

    @ManagedMetric
    public int getConnectionCount() {}

    }


  • 14.  RE: JMX AutoDiscover

    Posted Mar 13, 2011 07:18 AM
    Ok.. thanks for all the help, I was able to understand the jmx plugin format thanks to all the links you've sent and now it works.