如何在grafana中过滤变量查询?

问题描述 投票:0回答:2

我使用 Prometheus 作为数据源在 Grafana 仪表板中显示指标。我想过滤变量以返回特定的输出。我不确定是否应该使用正则表达式,或者过滤应该在查询本身内。这是我得到的输出:

Variable output

我只希望它返回包含“waves”的服务,因为我愿意向我的数据源添加其他服务。

我已经尝试过这些查询,但它们是否都返回 None 或错误

label_values(service{service=~"^waves$"}, service)

label_values(service{service="waves"}, service)

label_values(service{service=~"waves"}, service)

prometheus grafana
2个回答
1
投票

我认为无论是通过 Prometheus 端还是 Grafana 端的过滤来完成,没有任何明显的区别。

Prometheus 上的过滤会导致传输的数据略少,但差异可以忽略不计。

关于您的查询:您以错误的方式使用正则表达式选择器。您的选择器必须匹配标签的整个值。所以你的查询应该是这样的:

label_values(service{service=~".*waves.*"}, service)

此外,我建议您研究Prometheus 的命名最佳实践。也许考虑将您的指标更改为类似

mysystem_service_info{name="..."}


0
投票

正如 @markalex 已经说过的,你必须匹配标签的整个值,但要注意,如果你想匹配必须转义的特殊符号 - 你必须使用两个反斜杠,而不是一个。例如,要过滤掉所有以点开头的索引名称,您必须使用以下正则表达式:

label_values(elk_indices_some_metric{indice_name!~"^\\..*"},indice_name)
© www.soinside.com 2019 - 2024. All rights reserved.