在同一张图中聚合不同的普罗米修斯指标
Aggregate different prometheus metrics in same graph
我有一个应用程序向普罗米修斯公开不同的指标。这个应用程序一开始是非常具体的,因此,它公开了高度具体的指标,如 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
对它们进行分组,因此我们将有一个下拉选择器,其中包含所有不同的事件类型,这将使我们能够显示特定事件类型的指标。也就是说,我们的面板中只有一个指标将由像 sum(rate(service_name_event_processed{event_type=~"$event_type"}[1m])) by (result)
这样的 promql 查询填充。为了将两个指标聚合并显示在同一个面板中,并能够按 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)
。该查询可以解决问题,但它有一个问题,如果没有任何指标的值,它 returns 一个空结果,因此它在图表中不显示任何内容。
话虽这么说,您是否知道实现我正在寻找的结果的任何替代方法? (当然我知道我可以更改特定指标的名称,只有一个指标通过其 event_type 和结果标签来区分,但现在不是一个选项)
正如@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)
我有一个应用程序向普罗米修斯公开不同的指标。这个应用程序一开始是非常具体的,因此,它公开了高度具体的指标,如 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
对它们进行分组,因此我们将有一个下拉选择器,其中包含所有不同的事件类型,这将使我们能够显示特定事件类型的指标。也就是说,我们的面板中只有一个指标将由像 sum(rate(service_name_event_processed{event_type=~"$event_type"}[1m])) by (result)
这样的 promql 查询填充。为了将两个指标聚合并显示在同一个面板中,并能够按 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)
。该查询可以解决问题,但它有一个问题,如果没有任何指标的值,它 returns 一个空结果,因此它在图表中不显示任何内容。
话虽这么说,您是否知道实现我正在寻找的结果的任何替代方法? (当然我知道我可以更改特定指标的名称,只有一个指标通过其 event_type 和结果标签来区分,但现在不是一个选项)
正如@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)