PromQL如何简化多匹配规则嵌套调用label_replace替换标签的写法
优化方案
可以利用PromQL正则的或匹配特性,把4种后缀规则合并为单条label_replace语句,无需多层嵌套:
label_replace( rate(spring_integration_send_seconds_count{result!="success", application="MyApplicationName"}[1m]), "service", "$1", "name", "(.*)\\.(ConsumerEndpointFactoryBean|[Cc]hannel|handler)\\..*" )
规则说明
- 正则中用
|实现多模式匹配,把4种需要跳过的后缀合并为3个分支:ConsumerEndpointFactoryBean匹配第一种后缀规则[Cc]hannel同时覆盖小写开头的.channel.和大写开头的.Channel.两种场景handler匹配第四种.handler.后缀规则
- PromQL的正则需要用双反斜杠
\\转义特殊字符.,避免和正则通配符逻辑混淆 - 最终直接提取第一个分组
$1赋值给service标签,一次调用完成所有替换逻辑,可读性和可维护性远高于多层嵌套写法。如果后续新增需要跳过的后缀,直接在正则的或分支中追加对应规则即可。
内容的提问来源于stack exchange,提问作者Jaanus Miemis
相关产品推荐
相关产品推荐

