This is the `jmx` metricset of the Jolokia module.

[float]
=== Features and configuration
Tested with Jolokia 1.3.4.

Metrics to be collected from each Jolokia instance are defined in the mapping section with an MBean ObjectName and
an array of Attributes to be requested with Elastic field names under which the return values should be saved.

For example: to get the "Uptime" attribute from the "java.lang:type=Runtime" MBean and map it to something like
"uptime" (actually "jolokia.jmx.uptime", the prexif is added by beats framework) you have to configure following
mapping:

[source,yaml]
---
- module: jolokia
  metricsets: ["jmx"]
  hosts: ["localhost:8778"]
  namespace: "metrics"
  jmx.mappings:
    - mbean: 'java.lang:type=Runtime'
      attributes:
        - attr: Uptime
          field: uptime
          event: uptime
      target:
          url: "service:jmx:rmi:///jndi/rmi://targethost:9999/jmxrmi"
          user: "jolokia"
          password: "s!cr!t"
---

In case the underlying attribute is an object (e.g. see HeapMemoryUsage attribute in java.lang:type=Memory) its
structure will be published to Elastic "as is".

It is possible to configure nested metric aliases by using dots in the mapping name (e.g. gc.cms_collection_time). For examples please refer to the
https://github.com/elastic/beats/blob/{doc-branch}/metricbeat/module/jolokia/jmx/_meta/test/config.yml[/jolokia/jmx/test/config.yml].

All metrics from a single mapping will be POSTed to the defined host/port and sent to Elastic as a single event.
To make it possible to differentiate between metrics from multiple similar applications running on the same host,
please configure multiple modules.

When wildcards are used, an event will be sent to Elastic for each matching mbean, in that case a `mbean` field is added.

Optionally, an `event` name can be added to each attribute, this makes all metrics with the same `event`
to be grouped in the same event when being sent to Elastic.

It is required to set a namespace in the general module config section.

[float]
=== Limitations
No authentication against Jolokia is supported yet.
All Jolokia requests have canonicalNaming set to false (details see here: https://jolokia.org/reference/html/protocol.html).


[float]
=== Exposed fields, dashboards, indexes, etc.
Since this is a very general module that can be tailored for any application that exposes its metrics over Jolokia, it
comes with no exposed fields description, dashboards or index patterns.
