Prometheus 普罗米修斯定制导出器:公制为滑动窗口计数,而不是昂贵的总计数

Prometheus 普罗米修斯定制导出器:公制为滑动窗口计数,而不是昂贵的总计数,prometheus,Prometheus,我正在为第三方系统编写一个Prometheus自定义导出器,该系统公开了RESTAPI 想象一下,它就像一个可以提交订单的网店。我想公开有关这些订单的指标,并将其分解为产品,如下所示: mysystem_order{product_id="soap", state="SHIPPED"} 25 mysystem_order{product_id="soap", state="PENDING"} 2 mysystem_o

我正在为第三方系统编写一个Prometheus自定义导出器,该系统公开了RESTAPI

想象一下,它就像一个可以提交订单的网店。我想公开有关这些订单的指标,并将其分解为产品,如下所示:

mysystem_order{product_id="soap", state="SHIPPED"} 25
mysystem_order{product_id="soap", state="PENDING"} 2
mysystem_order{product_id="shampoo", state="PENDING"} 4
RESTAPI允许我列出所有订单(
GET/orders
),并提供一些过滤/排序选项。 但是,它不会直接公开我想要的度量,而是将值作为顺序的属性返回:

[
{“orderid”:“1”,“产品”:“soap”,“状态”:“已装运”},
{“orderid”:“3”,“产品”:“洗发水”,“状态”:“加工”},
{“orderid”:“2”,“产品”:“soap”,“状态”:“待定”}
]
问题

要公开上述度量,我必须从API获取所有订单,按产品对它们进行解析和分组,然后公开这些值。这样做显然非常昂贵,而且数据越多速度越慢。 我们可以缓存已经解析的数据,然后只请求更改,但随后需要根据状态更改(订单已发货)更新缓存

相反,我们也可以只导出相同的指标,但只导出过去5分钟的订单:
mysystem\u order\u 5m{product\u id=“abc”,state=“SHIPPED”}3

问题

对于如此昂贵的指标,我应该使用滑动窗口吗?这符合普罗米修斯模型吗?还是有其他方法可以解决这个问题