1

我有一个应用程序向普罗米修斯公开不同的指标。这个应用程序一开始非常具体,因此它公开了高度具体service_name_especific_event_processed{event_type="(type1|type2)", result="(acked|discarded)"}的指标,例如service_name_event_processed{event_type="one_of_a_range_of_types", result="(acked|discarded)"}.

如您所见,尽管它们是不同的指标,但它们共享相同的标签集[event_type, result],我们希望在 Grafana 中创建一个面板,将它们显示为聚合的,就好像它们是相同的指标一样,只需按event_type和对它们进行分组result,所以我们会有一个下拉选择器,其中填充了所有不同的事件类型,这将允许我们显示特定事件类型的指标。也就是说,我们仅针对其中一个指标的面板将由 promql 查询填充,例如sum(rate(service_name_event_processed{event_type=~"$event_type"}[1m])) by (result). 并且要将两个指标汇总并显示在同一个面板中,并且能够按 拆分event_type,我想到的查询类似于sum(rate(service_name_specific_event_processed{event_type=~"$event_type"}[1d])) by (result) + sum(rate(service_name_event_processed{event_type=~"$event_type"}[1d])) by (result). 该查询成功了,但它有一个问题,如果没有任何指标的值,它会返回一个空结果,因此它不会在图表中显示任何内容。

话虽如此,您知道实现我正在寻找的结果的任何替代方法吗?(当然我知道我可以更改特定指标的名称,只有一个指标通过其 event_type 和结果标签来区分,但目前这不是一个选项)

4

1 回答 1

0

正如@valyala 在评论中建议的那样,为了实现我想要的,我只需要用操作员+替换or。所以得到的查询如下

sum(rate(specific_event_processed{event_type=~"$event_type"}[1d])) by (result) or sum(rate(event_processed{event_type=~"$event_type"}[1d])) by (result)
于 2021-01-11T14:40:12.320 回答