Prometheus jmx 导出器属性和项目的模式匹配

Ber*_*rni 6 jmx mbeans mbeanexporter prometheus jmx-exporter

我正在尝试使用 jmx_exporter java 代理(https://github.com/prometheus/jmx_exporter)进行模式匹配和命名 prometheus 指标。

关于在处理CompositeType.

例如,我已经达到了以这种方式进行模式化的地步:

rules:
  - pattern: "java.lang<type=Memory><>HeapMemoryUsage"
    name: jmx_jvm_memory_HeapMemoryUsed
Run Code Online (Sandbox Code Playgroud)

但是如果你在 VisualVM 中查看HeapMemoryUsed属性。您还可以在以下内容Attribute Description中看到:openType

javax.management.openmbean.CompositeType(
    name=java.lang.management.MemoryUsage,
    items=(
            (itemName=committed,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),
            (itemName=init,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),
            (itemName=max,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long)),
            (itemName=used,itemType=javax.management.openmbean.SimpleType(name=java.lang.Long))
        )
    )
Run Code Online (Sandbox Code Playgroud)

我希望能够根据这些项目来命名指标。例如,我想要一个指标,例如:

  • jmx_jvm_memory_HeapMemoryUsed_used
  • jmx_jvm_memory_HeapMemoryUsed_max

ETC...

谢谢!

bri*_*zil 1

如果您查看HELP指标输出中的 ,这就是您要匹配的内容。但是,您无需担心任何 java.lang 指标,jmx 导出器 java 代理将在指标jvm_前缀下自动为您提供它们。

  • @Berni如果您不为一组bean提供任何模式,则应用默认格式化程序。在默认格式化程序的输出中,“# HELP ...”行将包含 JMXExporter 所需的 bean 模式,以匹配括号中的给定 bean。然而,对于标准 JMX beans(例如域“java.lang”),您不会看到这一点,因为它们似乎具有 JMXExporter 附带的格式。在您的情况下,这应该是“jvm_memory_bytes_used{area=”heap”,}”和”jvm_memory_bytes_max{area=”heap”,}”。 (2认同)