`label_replace` 引入的基于过滤向量的新标签

Vic*_*tor 8 grafana prometheus promql

在 Prometheus 中,我尝试使用label_replace.

http_requests_total{account_id="124",handler="AAAAAController"...}
http_requests_total{account_id="125",handler="BBBBBController"...}
http_requests_total{account_id="126",handler="CCCCCController"...}
http_requests_total{account_id="123",handler="XXXXXController"...}
Run Code Online (Sandbox Code Playgroud)

我写的查询是:

label_replace(http_requests_total, "class", "$1", "handler", "([a-zA-Z0-9]+)Controller.*") .

这可以正常工作并将class标签添加到 vector :"AAAA","BBBB" 等。此时我想删除某些类,例如 empty 和BBBB

如何使用{class~="BBBBB"}以下方法进一步过滤向量:

label_replace(http_requests_total, "class", "", "handler", "([a-zA-Z0-9]+)Controller.*"){class~="BBBBB"}

当我尝试这样做时,Prometheus 显示错误。

Len*_*016 1

我注意到这个问题下有一个grafana标签,所以如果你不介意使用grafana来实现这个目标,那么还有另一种方法。

通过使用 Grafana...7.x+ IIRC,您可以用来Transform重新处理原始结果集。

例如,我有一个这样的查询结果:

在此输入图像描述

添加Filter data by values插件。您可以Match any在其中设置,并添加正则表达式条件。设置字段Class匹配BBBBB或任何你想要的。

在此输入图像描述