如何过滤 label_values(label) 的结果以获取与正则表达式匹配的标签列表?

Posted

技术标签:

【中文标题】如何过滤 label_values(label) 的结果以获取与正则表达式匹配的标签列表?【英文标题】:How can I filter the result of label_values(label) to get a list of labels that match a regex? 【发布时间】:2019-09-21 08:10:51 【问题描述】:

我有几个带有“服务”标签的指标。我想获取以“abc”开头并以“xyz”结尾的所有“服务”级别的列表。这些将是 grafana 模板变量的值。

这是我尝试过的: label_values(service) =~ "abc.*xyz"

但是这会产生错误Template variables could not be initialized: parse error at char 13: could not parse remaining input "(service_name) "...

关于如何过滤标签值的任何想法?

【问题讨论】:

【参考方案1】:

这应该有效(用您提到的指标替换 up):

label_values(upservice=~"abc.*xyz", service)

或者,如果您确实需要查看多个指标(假设出于某种原因,某些指标具有某些服务标签值,而其他指标具有其他值):

label_values(__name__=~"metric1|metric2|metric3", service=~"abc.*xyz", service)

【讨论】:

如果您想要的过滤器是一个 grafana 图形变量怎么办 - 其中 abc.* 是 grafana 下拉列表中的过滤器。 PromQL 中的变量可以用作 $grafana_Var 还是 $grafana_Var.... 根据 Grafana 文档 (grafana.com/docs/reference/templating),$grafana_Var[[grafana_Var]] 都应该可以工作。虽然(在不相关的注释上)这个名字看起来很不寻常。我见过snake_case 名称和camelCase 名称,但从未见过snake_Camel_Case 名称。 (o:

以上是关于如何过滤 label_values(label) 的结果以获取与正则表达式匹配的标签列表?的主要内容,如果未能解决你的问题,请参考以下文章

Grafana 配置变量

Grafana 模板合并变量

Prometheus 基于 Labels 的过滤

堆叠直方图不会堆叠

基于Element UI select组件实现同时支持通过label和value过滤列表

如何过滤掉s-s-rS中的参数值