如何在Prometheus中计算过去7天同一时段的流量平均值?
Prometheus计算过去7天同一时段流量平均值的优化方案
优化后的7天同一时段平均值查询语句
直接扩展你已有的offset拼接逻辑,即可实现过去7天同一时段的流量平均值计算:
(sum(rate(kong_http_requests_total{}[5m] offset 1d)) + sum(rate(kong_http_requests_total{}[5m] offset 2d)) + sum(rate(kong_http_requests_total{}[5m] offset 3d)) + sum(rate(kong_http_requests_total{}[5m] offset 4d)) + sum(rate(kong_http_requests_total{}[5m] offset 5d)) + sum(rate(kong_http_requests_total{}[5m] offset 6d)) + sum(rate(kong_http_requests_total{}[5m] offset 7d))) / 7
关键说明
- Prometheus目前没有内置函数直接实现"过去N天同一时段平均值"的计算,这种手动拼接
offset的方式是最直接的解决方案,能精准对齐每日相同时间窗口的流量数据,避免全局7天平均值的峰谷偏差问题。 - 若要直接判断当前流量是否下降,可以将当前RPS查询与上述平均值查询结合,设置合理阈值(比如以下降20%为触发条件):
sum(rate(kong_http_requests_total{}[5m])) < 0.8 * (sum(rate(kong_http_requests_total{}[5m] offset 1d)) + sum(rate(kong_http_requests_total{}[5m] offset 2d)) + sum(rate(kong_http_requests_total{}[5m] offset 3d)) + sum(rate(kong_http_requests_total{}[5m] offset 4d)) + sum(rate(kong_http_requests_total{}[5m] offset 5d)) + sum(rate(kong_http_requests_total{}[5m] offset 6d)) + sum(rate(kong_http_requests_total{}[5m] offset 7d))) / 7
内容的提问来源于stack exchange,提问作者Suren Raju
相关产品推荐
相关产品推荐

