PromQL if then语句等价



我有一个执行计数的简单PromQL查询:

sum(up{container_name="my-container",environment_name="$env"})

这是Grafana仪表板的一部分,允许从下拉菜单中选择${env}。

我想根据环境执行不同的查询。

如何在PromQL中构造这样的东西:

if ${env} == 'dev' or ${env} == 'integration':
if sum(up{container_name="my-container",environment_name="$env"}) == 1:
sum(up{container_name="my-container",environment_name="$env"}) + 1
else:
sum(up{container_name="my-container",environment_name="$env"})
else:
sum(up{container_name="my-container",environment_name="$env"})

目的是在运行单个容器的环境中错误地增加计数,以在RAG状态面板中触发健康阈值。

您可以这样查询:

(
sum(up{container_name="my-container", environment_name=~"dev|integration", environment_name="$env"}) + 1 
AND
(sum(up{container_name="my-container", environment_name=~"dev|integration", environment_name="$env"} == 1)
)
OR
sum(up{container_name="my-container", environment_name=~"dev|integration", environment_name="$env"}) != 1
OR
sum(up{container_name="my-container", environment_name="prod", environment_name="$env"})
OR
on() vector(0)
当实例数量为1 (and

就是这样做的)并且用户选择了开发环境或集成环境时,将返回增加1的实例数量。or会一次返回三个指标,但是由于查询和用户选择的关系,只能返回一个指标。

最新更新