JMX configuration optionsedit

capture_jmx_metrics ( [1.10.0] Added in 1.10.0. )edit

Report metrics from JMX to the APM Server

Can contain multiple comma separated JMX metric definitions:

object_name[<JMX object name pattern>] attribute[<JMX attribute>:metric_name=<optional metric name>]
  • object_name:

    For more information about the JMX object name pattern syntax, see the ObjectName Javadocs.

  • attribute:

    The name of the JMX attribute. The JMX value has to be either a Number or a composite where the composite items are numbers. This element can be defined multiple times. An attribute can contain optional properties. The syntax for that is the same as for ObjectName.

    • metric_name:

      A property within attribute. This is the name under which the metric will be stored. Setting this is optional and will be the same as the attribute if not set. Note that all JMX metric names will be prefixed with jvm.jmx. by the agent.

The agent creates labels for each JMX key property such as type and name.

The JMX object name pattern supports wildcards. In this example, the agent will create a metricset for each memory pool name (such as G1 Old Generation and G1 Young Generation)

object_name[java.lang:type=GarbageCollector,name=*] attribute[CollectionCount:metric_name=collection_count] attribute[CollectionTime]

The resulting documents in Elasticsearch look similar to these (metadata omitted for brevity):

{
  "@timestamp": "2019-08-20T16:51:07.512Z",
  "jvm": {
    "jmx": {
      "collection_count": 0,
      "CollectionTime":   0
    }
  },
  "labels": {
    "type": "GarbageCollector",
    "name": "G1 Old Generation"
  }
}
{
  "@timestamp": "2019-08-20T16:51:07.512Z",
  "jvm": {
    "jmx": {
      "collection_count": 2,
      "CollectionTime":  11
    }
  },
  "labels": {
    "type": "GarbageCollector",
    "name": "G1 Young Generation"
  }
}

The agent also supports composite values for the attribute value. In this example, HeapMemoryUsage is a composite value, consisting of committed, init, used and max.

object_name[java.lang:type=Memory] attribute[HeapMemoryUsage:metric_name=heap]

The resulting documents in Elasticsearch look similar to this:

{
  "@timestamp": "2019-08-20T16:51:07.512Z",
  "jvm": {
    "jmx": {
      "heap": {
        "max":      4294967296,
        "init":      268435456,
        "committed": 268435456,
        "used":       22404496
      }
    }
  },
  "labels": {
    "type": "Memory"
  }
}
DefaultTypeDynamic

<none>

List

true

Java System PropertiesProperty fileEnvironment

elastic.apm.capture_jmx_metrics

capture_jmx_metrics

ELASTIC_APM_CAPTURE_JMX_METRICS