如何在普罗米修斯中对多值状态进行建模/查询

问题描述 投票:1回答:1

我想在标签中导出状态,如下所示:

my_status{group="xx",partition="1",status="ERROR"} 1
my_status{group="xx",partition="1",status="OK"} 1
my_status{group="xx",partition="1",status="STALL"} 1

我读过Brian的https://www.robustperception.io/exposing-the-software-version-to-prometheus我想要做的就是非常相似。

并在给定组和分区的Grafana中查询状态。但我不能做如示例中所示的查询

my_status{group="xx",partition="1"} 
* on (partition, group) group_left(status) 
my_status{group="xx",partition="1"}

这给了我一个错误,因为它们现在是两个不同的时间序列,这导致了

执行查询时出错:不允许多对多匹配:匹配标签在一侧必须是唯一的

我不想通过将枚举映射到值来导出枚举。 (例如OK = 1,ERROR = 2),因为我必须不断更新它们。有什么指针吗?谢谢。

prometheus
1个回答
0
投票

这里的问题是您报告了三种状态。如果只有一个具有1的值,你可以做到

  up
* on (partition, group) group_left(status)
  (my_status{group="xx",partition="1"} == 1)
© www.soinside.com 2019 - 2024. All rights reserved.