You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制Prometheus JMX Exporter暴露的指标

解决JMX Exporter仅保留指定指标的问题

你的配置逻辑存在两个核心问题:

  1. blacklistObjectNames: ["*:*"]仅排除了所有JMX MBean,但JMX Exporter默认会导出一批非MBean来源的内置指标(比如process_*、jmx_config_*这类),这些不受黑名单控制。
  2. 你试图用rules里的pattern匹配最终的Prometheus指标名,但这个pattern实际是用来匹配原始MBean的属性路径,而非转换后的指标名;同时黑名单已经排除了所有MBean,规则根本不会生效。

正确配置方案

要仅保留jvm_buffer_pool_used_bytes相关指标,需要结合白名单指定目标MBean+关闭默认内置指标+规则转换指标格式,配置示例如下:

lowercaseOutputLabelNames: true
lowercaseOutputName: true
# 关闭默认导出的process_*、jmx_config_*等非MBean指标
disableDefaultMetrics: true
# 只允许采集JVM BufferPool的MBean
whitelistObjectNames: ["java.lang:type=BufferPool,name=*"]
rules:
  # 匹配BufferPool的Used属性,转换为目标指标名
  - pattern: 'java.lang<type=BufferPool, name=(.+)><>Used'
    name: 'jvm_buffer_pool_used_bytes'
    labels:
      pool: "$1"

配置说明

  • disableDefaultMetrics: true:彻底关闭JMX Exporter自带的非MBean指标,避免无关数据干扰。
  • whitelistObjectNames: ["java.lang:type=BufferPool,name=*"]:仅允许采集JVM中管理缓冲区池的MBean,精准缩小采集范围。
  • 规则部分:通过匹配MBean的属性路径,将原始JMX数据转换为你需要的jvm_buffer_pool_used_bytes指标,并自动添加pool标签区分不同类型的缓冲区(比如direct、mapped)。

配置完成后重新启动应用,执行curl命令即可看到仅保留的目标指标:

$ k exec -it my-container -- curl localhost:5000 | grep -v '^#'
jvm_buffer_pool_used_bytes{pool="direct"} 123456.0
jvm_buffer_pool_used_bytes{pool="mapped"} 789012.0

内容的提问来源于stack exchange,提问作者brandizzi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 07:12:12