使用偏移量避免 PromQL 中的多个子查询以获得历史平均值

Avoiding multiple subqueries in PromQL with offset to get historic averages

我有一个 prometheus 服务器,可以提供 13 个月的长期保留。我想查找我的 Web 应用程序获得的注册数量的异常情况。我的想法是查看前几周的注册数量,因为它们因工作日而异。

要将我的当前值与前 4 周的值进行比较,我需要编写 4 个子查询。

我的问题:

有没有更简单的方法来获取过去 4 周中前一个工作日增加 1 小时的平均值?为了更清楚,我想获得这 4 个查询的平均值,以便我可以将它与我当前的 web_registrations.

数量进行比较
sum(increase(web_registrations[1h] offset 1w))
sum(increase(web_registrations[1h] offset 2w))
sum(increase(web_registrations[1h] offset 3w))
sum(increase(web_registrations[1h] offset 4w))

尝试如下操作:

(
  sum(increase(web_registrations[1h] offset 1w)) +
  sum(increase(web_registrations[1h] offset 2w)) +
  sum(increase(web_registrations[1h] offset 3w)) +
  sum(increase(web_registrations[1h] offset 4w))
) / 4

它将return过去 4 周最后一小时的平均增幅。

https://about.gitlab.com/blog/2019/07/23/anomaly-detection-using-prometheus/ 上查看有关此类查询类型的更多详细信息。