如何在jmx_exporter规则中处理可选connectionpool属性
解决JMX Exporter中可选标签的正则匹配问题
核心方案
要同时匹配带connectionpool标签和不带该标签的指标,且不生成冗余标签,你需要编写包含可选分组的正则表达式,配合JMX Exporter的标签提取规则即可实现。
具体配置示例
在你的JMX Exporter配置文件中,添加如下规则:
rules: - pattern: 'catalina_datasource_testonborrow\{host="([^"]+)",context="([^"]+)",class="([^"]+)",name="([^"]+)"(,connectionpool="([^"]+)")?\}' name: 'catalina_datasource_testonborrow' labels: host: "$1" context: "$2" class: "$3" name: "$4" connectionpool: "$6"
正则规则说明
(,connectionpool="([^"]+)")?是实现可选匹配的核心:?标记整个分组为可选,允许它出现0次或1次- 外层括号包裹
connectionpool标签的完整内容(包括前置的逗号),确保匹配时的语法一致性 - 内层括号捕获
connectionpool的具体取值,对应标签提取中的$6
- 对于不带
connectionpool的指标,$6会被解析为空字符串,JMX Exporter会自动忽略空值标签,不会生成冗余项
效果验证
应用该规则后:
- 带
connectionpool的指标会正常保留该标签,取值为"connections" - 不带
connectionpool的指标不会生成该标签,完全符合需求
内容的提问来源于stack exchange,提问作者grafra
相关产品推荐
相关产品推荐

