prometheus - 基于正则表达式的 Prometheus 查询中的组标签
问题描述
想象一下,我有这样的指标:
sample_metric{type="some-type1-1234"} 2
sample_metric{type="some-type1-5678"} 1
sample_metric{type="some-type2-9876"} 4
sample_metric{type="some-type2-4321"} 3
现在我想根据遵循相同模式的类型对度量值求和。因此,对于上面的示例,期望的结果是有 2 个总和:
type1: 3
type2: 7
这个问题有点类似于这个问题,但是在我的情况下,我事先并不知道这些组。我只知道他们遵循的模式。有没有办法通过一个使用正则表达式的查询来实现这一点?
解决方案
在这篇文章中接受的答案的帮助下,我想出了如何做到这一点。为那些将来会遇到同样问题的人发布答案:
sum by (type_group) (
label_replace(
label_replace(sample_metric, "type_group", "$1", "type", ".+"),
"type_group", "$1", "type", "some-(\\w+(-\\w+)*)-.*"
)
)
因此,内部label_replace
引入了一个名为 的新标签type_group
,而外部在正则表达式的帮助下用从原始标签中提取label_replace
的值替换了值。type
因此,type_group
将包含值,例如type1
和type2
($1
指要拉取的正则表达式组)。内部组(-\\w+)*
表明您的组可能由几个部分组成,例如type1-type12
,它将把它视为另一个组。
推荐阅读
- php - VScode PHPCS 扩展错误:引用的嗅探“WordPress-Core”不存在
- azure-ad-b2c - Azure AD B2C 中的 strongAuthenticationEmail 和 strongAuthenticationPhoneNumber 属性
- laravel - 正确地将图像上传到数据库。Laravel vue.js
- c++ - 如何从文件读取信息到矩阵?
- java - Oauth ResourceServer 中的自定义 UserAuthenticationConverter
- python - 如何在python中对视频进行阈值处理?
- laravel - 获取输入值并将其传递给同一刀片文件 Laravel 5.7 中的路由
- scala - Scala 编译器是否有可能理解重写的抽象类型
- excel - 针对具有字符串数据的列(Excel、VBA、宏)循环和扫描例如 200 个字符串的列表
- android - 构建 Ionic React android 应用程序后卡在白屏