Micrometer JMX
Micrometer 提供了一个层次化的映射到 JMX 的功能,主要是作为一种廉价且便携的方式来在本地查看指标。在生产环境中使用 JMX 导出时,通常会将相同的指标导出到另一个更适合的监控系统中。
1. 安装 micrometer-registry-jmx
建议使用由 Micrometer(或您的框架,如果有的话)提供的 BOM,您可以在此处查看如何配置它 here。以下示例假设您正在使用 BOM。
1.1. Gradle
在 配置 好 BOM 后,添加以下依赖:
implementation 'io.micrometer:micrometer-registry-jmx'
由于该依赖项的版本由 BOM 定义,因此不需要指定版本。
1.2. Maven
在 配置 了 BOM 之后,添加以下依赖项:
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-jmx</artifactId>
</dependency>
此依赖项的版本不需要指定,因为它由 BOM 定义。
Micrometer 有时也会从 JMX beans 中抓取数据以用于报告指标。对于这些用途,不需要此注册表实现。相反,此模块严格用于将数据导出到 JMX。
2. 层次化名称映射
Micrometer 提供了一个 HierarchicalNameMapper
接口,用于控制如何将维度化的仪表 ID 映射为扁平化的层次结构名称。
默认的 (HierarchicalNameMapper.DEFAULT
) 会按字母顺序对标签的键进行排序,并将标签的键值对附加到基础指标名称后,使用 '.' 作为分隔符 —— 例如,http_server_requests.method.GET.response.200
。名称和标签键首先会应用注册表的命名约定。
如果你的命名方案有特殊之处需要遵循,你可以提供自己的 HierarchicalNameMapper
实现。自定义映射器最常见的原因是需要为每个指标的前面添加前缀(通常类似于 app.<name>.http_server_requests.method.GET.response.200
)。
3. 计数器
JMX 计数器用于测量平均吞吐量以及一分钟、五分钟和十五分钟的指数加权移动平均吞吐量。
图 1. 随机游走计数器的 JMX 渲染值。