avg_over_time(rate()) 相对于 rate() 本身的优势?
Advantage of avg_over_time(rate()) over rate() by itself?
通常我的计数器指标查询如下所示:
rate(metric_total[5m])
rate(metric_total[$__interval])
但是在查看使用 Prometheus 和 Grafana 的各种公司/团队(例如 GitLab 基础架构团队)时,我遇到了以下结构:
avg_over_time(recording_rule:rate_5m[$__interval])
所以我想知道:第二种方法有优势吗?
这是一个具体的例子:https://dashboards.gitlab.com/d/frontend-main/frontend-overview?orgId=1&viewPanel=23
第二种方法不需要您为每个可能的时间间隔制定记录规则,您希望在该时间间隔内获得平均速率,从而节省资源。
avg_over_time(rate(metric_total[5m])[$__interval:])
计算平均速率的平均值。这不是一个好的指标,因为 average of averages doesn't equal to average。因此,更好的方法是计算 rate(metric_total[$__interval])
- 它 returns metric_total
在给定的回顾 window $__interval
上的实际平均 per-second 增长率.
通常我的计数器指标查询如下所示:
rate(metric_total[5m])
rate(metric_total[$__interval])
但是在查看使用 Prometheus 和 Grafana 的各种公司/团队(例如 GitLab 基础架构团队)时,我遇到了以下结构:
avg_over_time(recording_rule:rate_5m[$__interval])
所以我想知道:第二种方法有优势吗?
这是一个具体的例子:https://dashboards.gitlab.com/d/frontend-main/frontend-overview?orgId=1&viewPanel=23
第二种方法不需要您为每个可能的时间间隔制定记录规则,您希望在该时间间隔内获得平均速率,从而节省资源。
avg_over_time(rate(metric_total[5m])[$__interval:])
计算平均速率的平均值。这不是一个好的指标,因为 average of averages doesn't equal to average。因此,更好的方法是计算 rate(metric_total[$__interval])
- 它 returns metric_total
在给定的回顾 window $__interval
上的实际平均 per-second 增长率.