gpt4 book ai didi

prometheus - 是否可以通过 prometheus 获取准确的每分钟请求指标

转载 作者:行者123 更新时间:2023-12-05 01:50:38 30 4
gpt4 key购买 nike

目标

通过 grafana 和 prometheus 跟踪 RPM 和正常运行时间

情况

我们正在使用

django-prometheus -> To emit metrics 
fluent-bit -> Scrapes django metrics every 15s and pushes to prometheus
prometheus -> 2 shards running via prometheus operator on k8s

问题

当我们将 Grafana 仪表板与 AWS 目标组请求指标进行比较时,它不匹配。尝试了以下所有选项

Expr: sum by(service) (irate(django_http_requests_before_middlewares_total{namespace="name"}[5m]))
Expr: sum by(service) (increase(django_http_requests_before_middlewares_total{namespace="name"}[5m]))
Expr: sum by(service) (rate(django_http_requests_before_middlewares_total{namespace="name"}[5m]))
django_http_requests_before_middlewares_total -> This is Counter data type.
This counter never resets because we have unique dimension
- container_id
- service_name
- namespace

问。是否可以在 grafana 上创建类似于 aws 目标组指标的仪表板?

理想情况下,increase 应该可以工作,但它会连续进行 diff,这可能会给出不正确的结果。

提前致谢。

最佳答案

tl;dr - 不,普罗米修斯没有保留足够的数据来提供完全精确的值。

要了解原因,我们假设 1 分钟前 Prometheus 已抓取指标 http_requests 的值 10,而现在它已更新为 40.

很明显,通过 1m 采样,您无法确切知道这 30 个请求在最后一分钟内何时发生。是短峰值还是均匀分布?不管怎样,rate(http_requests[1m]) 每秒都会为您提供 (40-10)/60s = 0.5 个请求。 Increase() 的工作方式相同,它是 rate()*interval0.5*60 = 30

虽然上面的示例显示了精确的值,但很明显,您将无法通过此数学运算获得完美的精度。除非您正在处理缓慢移动的计数器(每几分钟更新一次),否则该错误通常是微不足道的。

关于prometheus - 是否可以通过 prometheus 获取准确的每分钟请求指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72904912/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com