Class JMXCollector

  • All Implemented Interfaces:
    ServiceCollector
    Direct Known Subclasses:
    Jsr160Collector

    public class JMXCollector
    extends AbstractRemoteServiceCollector
    This class performs the collection and storage of data. The derived class manages the connection and configuration. The SNMPCollector class was used as the starting point for this class so anyone familiar with it should be able to easily understand it.

    The jmx-datacollection-config.xml defines a list of MBeans and attributes that may be monitored. This class retrieves the list of MBeans for the specified service name (currently jboss and jsr160) and queries the remote server for the attributes. The values are then stored in RRD files.

    Two types of MBeans may be specified in the jmx-datacollection-config.xml file. Standard MBeans which consist of and ObjectName and their attributes, and WildCard MBeans which performs a query to retrieve MBeans based on a criteria. The current implementation looks like: jboss:a=b,c=d,* Future versions may permit enhanced queries. In either case multiple MBeans may be returned and these MBeans would then be queried to obtain their attributes. There are some important issues then using the wild card approach:

    1. Since multiple MBeans will have the same attribute name there needs to be a way to differentiate them. To handle this situation you need to specify which field in the ObjectName should be used. This is defined as the key-field.
    2. The version of RRD that is used is limited to 19 characters. If this limit is exceeded then the data will not be saved. The name is defined as: keyField_attributeName.rrd Since the keyfield is defined in the Object Name and may be too long, you may define an alias for it. The key-alias parameter permit you to define a list of names to be substituted. Only exact matches are handled. An example is: key-alias="this-name-is-long|thisIsNot,name-way-2-long,goodName"
    3. If there are keyfields that you want to exclude (exact matches) you may use a comma separated list like: exclude="name1,name2,name3"
    4. Unlike the Standard MBeans there is no way (currently) to pre-define graphs for them in the snmp-graph.properties file. The only way you can create graphs is to create a custom graph in the Report section. The wild card approach needs to be carefully considered before using it but it can cut down on the amount of work necessary to define what to save.

    Author:
    Mike Jamison, OpenNMS
    • Constructor Detail

      • JMXCollector

        public JMXCollector()