相当于SQL DISTINCT的Prometheus查询

时间:2018-11-07 16:14:25

标签: grafana prometheus

我有多个提供相同指标的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="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中导致“多个系列错误”。有没有办法告诉Prometheus / Grafana只使用第一个结果?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我不知道与众不同,但我认为这也可以:

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

在此处查看倒数第二个示例: https://prometheus.io/docs/prometheus/latest/querying/examples/