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

问题描述

我有一台Prometheus服务器,可以长期保留13个月。我想查找我的Web应用程序获得的注册数量异常。我的想法是看一下前几周的注册数量,这些数量根据工作日的不同而有所不同。

要在过去4周的值中比较我的当前值,需要我编写4个子查询

我的问题

是否有一种更简单的方法来使最近4周的前一个工作日平均增加1小时?为了更清楚一点,我想获得这四个查询的平均值,以便可以将其与我当前的web_registrations数量进行比较。

df_a = pd.DataFrame(range(10),columns=["a"])
df_b = pd.DataFrame(range(10,20),columns=["b"])
write_to_excel(df_a,"test.xlsx",sheet_name="Sheet a",columns=['a'],index=False)
write_to_excel(df_b,sheet_name="Sheet b",columns=['b'])

解决方法

尝试以下操作:

(
  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

它将返回过去4周中最后一小时的平均增长量。

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