Grafana多值变量和PromQL查询标签过滤器

时间:2020-01-09 20:42:17

标签: prometheus grafana

我需要查询我的Kubernetes吊舱的网络流量消耗,并在Grafana仪表板中绘制Prometheus时间序列。

基本表达如下:

sum by(pod) (rate(container_network_receive_bytes_total{}[1m]))

它将报告类似“ XXXX-57d84d77b7-px6g5”的Pod名称,其中XXXX是部署的名称,其余则由Kubernetes自动生成。

现在,我想为仪表板用户提供一个过滤器,以按部署进行查询(每个部署都有一个或一个模式Pod),所以我做了一个变量,并通过查询在其中拉出了部署名称,所以这里有XXXX或ZZZZ ,没有自动生成的pards(漂亮又花哨的),查询现在看起来像:

sum by(pod) (rate(container_network_receive_bytes_total{pod_name=~"$deployment.*"}[1m]))

我得到的结果很好,实际上是魔术。

现在,我启用“多值”和“所有值”(带有“。*”表达式),并且我的检查查询变为

sum by(pod) (rate(container_network_receive_bytes_total{pod_name=~"XXX|YYY|ZZZ.*"}[1m]))

很明显,我只会得到ZZZ结果,要获得其余结果,我的替代人必须变成pod_name=~"XXX.*|YYY.*|ZZZ.*"

到现在,我已经竭尽所能,想尽办法使它正确,但是这种多值案例对我来说不起作用。

还有其他想法吗?

1 个答案:

答案 0 :(得分:0)

尝试使用 v = abs(r.drate.iloc[:-1].mean()-r.drate.iloc[-1]) 作为正则表达式,以便正确分配后缀。