2

使用 jmx_exporter 时,我可以在 /metrics 端点上看到 jvm、进程、java 等指标,但看不到我通过 JMX 公开的自定义指标。
当我删除代理并添加 jolokia 代理时,我可以在 Jolokia 的暴露端点上以 JSON 格式毫无问题地看到这些自定义指标。这证明它存在。

jmx 出口商代理配置

rules:
- pattern: ".*"

我已经浏览了 stackoverflow 和 google 组。许多人提出了类似的问题,但我看不到解决方案。关于为什么这不能按预期工作的任何帮助。

4

1 回答 1

0

您需要为自定义 JMX Bean 的对象名称添加一个带有模式的白名单条目。


示例:假设域foo,然后将以下内容添加到顶层的 JMXExporter 配置 YAML

whitelist: ["foo:*"]

将打印foo域中 bean 的所有指标。


旁注:我发现使用pattern规则集中的条目有点棘手,所以我将添加我的发现,以防你遇到这个后续问题。

pattern因此,该部分中条目的模式字符串rules必须适用于 bean 度量的特定规范化表示(请参阅文档):

domain<beanpropertyName1=beanPropertyValue1, beanpropertyName2=beanPropertyValue2, ...><key1, key2, ...>attrName: value

如果您pattern在规则项中提供条目,则在JMXCollector.java(第 174-175 行)中使用该条目来创建正则表达式模式,如下所示

if (yamlRule.containsKey("pattern")) {
    rule.pattern = Pattern.compile("^.*(?:" + (String)yamlRule.get("pattern") + ").*$");
}

JMXCollector使用它来检查您的规则集是否适用于给定的 bean(或以其他方式应用默认的说明格式化程序)。

HELP ...如果您让它使用默认格式化程序(rules向该部分添加条目), JMXExporter 将通过在该行中提供规范化格式来帮助您构建模式匹配器。如果您在没有规则的情况下运行,您可以复制规范化的 bean 度量表示并使用它来定义匹配模式。

于 2020-03-14T18:09:07.383 回答