Grafana Prometheus查询等价于SQL DISTINCT

Grafana Prometheus查询等价于SQL DISTINCT,grafana,prometheus,Grafana,Prometheus,我有多个普罗米修斯实例提供相同的度量,例如: my_metric{app="foo", state="active", instance="server-1"} 20 my_metric{app="foo", state="inactive", instance="server-1"} 30 my_metric{app="foo", state="active", instance="server-2"} 20 my_metric{app="foo", state="inactiv

我有多个普罗米修斯实例提供相同的度量,例如:

my_metric{app="foo", state="active",   instance="server-1"}  20
my_metric{app="foo", state="inactive", instance="server-1"}  30
my_metric{app="foo", state="active",   instance="server-2"}  20
my_metric{app="foo", state="inactive", instance="server-2"}  30
现在我想在Grafana singlestat小部件中显示这个度量。当我使用以下查询时

sum(my_metric{app="foo", state="active"})
…当然,它将所有值相加并返回
40
。所以我告诉普罗米修斯用实例求和

sum(my_metric{app="foo", state="active"}) by (instance)

…这导致Grafana出现“多系列错误”。有没有办法告诉普罗米修斯/格拉法纳只使用第一个结果?

我刚刚发现的一种方法是对所有值进行额外的平均:

avg(sum(my_metric{app="foo", state="active"}) by(instance))

我不知道有什么不同的方法,但我认为这也会起作用:

topk(1, my_metric{app="foo", state="active"} by (instance))
查看此处倒数第二个示例:

当我在普罗米修斯的图形用户界面中执行此操作时,只得到一个结果。看起来不错。但当我将相同的字符串传递给Grafana Singlestat时,它仍然会告诉我“多序列错误”。令人困惑。这很奇怪。它在普罗米修斯有效,但在格拉法纳无效。能否尝试删除“按(实例)”部分?不要认为这是有效的查询。如果不使用任何聚合函数,例如
sum
avg
max
、min`等,您就不能使用
by
。。。