通过Prometheus JMX导出器导出自定义指标

时间:2020-01-13 17:40:40

标签: jmx prometheus jmx-exporter

使用jmx_exporter时,我可以在/ metrics端点上看到jvm,process,java等指标,但不能查看通过JMX公开的自定义指标。
当我删除代理并添加jolokia代理时,我可以在Jolokia的公开端点上以JSON格式看到这些自定义指标,而不会出现问题。证明存在。

jmx出口商代理配置

sentence_translations

我通过stackoverflow和google组进行了搜索。许多人提出了类似的问题,但我看不到解决方案。 任何有关为何无法按预期工作的帮助。

1 个答案:

答案 0 :(得分:0)

您需要添加白名单条目,其中包含用于自定义JMX Bean对象名称的模式。


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

whitelist: ["foo:*"]

将打印foo域中Bean的所有度量标准。


边注:我发现处理规则集中的pattern项有点棘手,因此,如果您遇到后续问题,我将添加我的发现。

因此,pattern部分中rules项的模式字符串必须适用于bean度量标准(see documentation)的特定规范化表示形式:

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(或者适用于默认的博览会格式化程序)。

如果您允许JMXExporter使用默认格式设置器,请在HELP ...行中提供规范化的格式,以帮助您构建模式匹配器(通过 not rules部分)。如果不进行任何规则运行,则可以复制规范化的Bean度量表示形式,并使用它来定义匹配的模式。