PromQL if then 语句等效

PromQL if then statement equivalent

我有一个执行计数的简单 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 所做的)并且用户选择了开发或集成环境时,这将 return 实例数量增加一。 or 将同时包含三个指标,但由于查询和用户选择,只能 returned 一个指标。