我需要查询我的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.*"
到现在,我已经竭尽所能,想尽办法使它正确,但是这种多值案例对我来说不起作用。
还有其他想法吗?
答案 0 :(得分:0)
尝试使用 v = abs(r.drate.iloc[:-1].mean()-r.drate.iloc[-1])
作为正则表达式,以便正确分配后缀。