Jolokia jmx 指标集
编辑Jolokia jmx 指标集编辑
jmx
指标集从 Jolokia 代理 收集指标。
功能和配置编辑
已在 Jolokia 1.5.0 上测试。
要从 Jolokia 实例收集指标,请定义一个映射部分,该部分指定 MBean ObjectName
,后跟要获取的属性数组。对于数组中的每个属性,指定返回的值将保存到的 Elastic 字段名称。
例如,要从 java.lang:type=Runtime
MBean 获取 Uptime
属性并将其映射到名为 jolokia.testnamespace.uptime
的事件字段,请配置以下映射
- module: jolokia metricsets: ["jmx"] hosts: ["localhost:8778"] namespace: "testnamespace" http_method: "POST" 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"
|
|
|
|
将保存返回值的字段。此字段将在输出事件中称为 |
|
|
如果基础属性是对象(例如 java.lang:type=Memory
中的 HeapMemoryUsage
属性),则其结构将按原样发布到 Elastic。
您可以通过在映射名称中使用点来配置嵌套指标别名(例如,gc.cms_collection_time
)。有关更多示例,请参阅 /jolokia/jmx/test/config.yml。
来自单个映射的所有指标都将被 POST 到定义的主机/端口,并作为单个事件发送到 Elastic。为了能够区分在同一主机上运行的多个类似应用程序的指标,您应该配置多个模块。
当使用通配符时,会为每个匹配的 MBean 向 Elastic 发送一个事件,并且事件中会添加一个 mbean
字段。
通过 POST 或 GET 方法访问 Jolokia编辑
默认情况下,所有对 Jolokia 的请求都使用 HTTP POST 方法。但是,在部署 Jolokia 代理的环境中,存在某些特定情况,POST 方法可能不可用。在这种情况下,您可以通过定义 http_method
属性来使用 HTTP GET 方法。通常,您可以使用 POST 或 GET,但 GET 具有以下缺点
- 代理请求 不允许。
- 如果定义了多个
jmx.mappings
,则 Metricbeat 将执行与定义的映射一样多的 GET 请求。例如,以下具有 3 个映射的配置将创建 3 个 GET 请求,每个 MBean 一个。相反,如果您使用 HTTP POST,Metricbeat 将仅创建一个对 Jolokia 的请求。
- module: jolokia metricsets: ["jmx"] enabled: true period: 10s hosts: ["localhost:8080"] namespace: "jolokia_metrics" path: "/jolokia" http_method: 'GET' jmx.mappings: - mbean: 'java.lang:type=Memory' attributes: - attr: HeapMemoryUsage field: memory.heap_usage - attr: NonHeapMemoryUsage field: memory.non_heap_usage - mbean: 'Catalina:name=*,type=ThreadPool' attributes: - attr: port field: catalina.port - attr: maxConnections field: catalina.maxConnections - mbean: 'java.lang:type=Runtime' attributes: - attr: Uptime field: uptime
限制编辑
- 所有 Jolokia 请求都将
canonicalNaming
设置为false
。有关此参数的更多详细信息,请参阅 Jolokia 协议 文档。 - 如果
http_method
设置为GET
,则 代理请求 不允许。因此,将值设置为target
部分将导致错误。
公开字段、仪表板、索引等编辑
由于此模块非常通用,可以针对通过 Jolokia 公开指标的任何应用程序进行定制,因此它不带任何公开字段描述、仪表板或索引模式。
有关指标集中每个字段的描述,请参阅 导出字段 部分。
以下是由此指标集生成的示例文档
{ "@timestamp": "2017-10-12T08:05:34.853Z", "event": { "dataset": "jolokia.testnamespace", "duration": 115000, "module": "jolokia" }, "jolokia": { "testnamespace": { "memory": { "heap_usage": { "committed": 514850816, "init": 536870912, "max": 7635730432, "used": 42335648 }, "non_heap_usage": { "committed": 32243712, "init": 2555904, "max": -1, "used": 29999896 } }, "uptime": 70795470 } }, "metricset": { "name": "jmx" }, "service": { "address": "127.0.0.1:8778", "type": "jolokia" } }