首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能通过prometheous获得每分钟精确的请求?

是否有可能通过prometheous获得每分钟精确的请求?
EN

Stack Overflow用户
提问于 2022-07-07 22:34:43
回答 2查看 522关注 0票数 3

目标

通过grafana & prometheus跟踪RPM和启动时间

Situation

我们用的是

代码语言:javascript
复制
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目标组请求度量时,它是不匹配的。尝试了以下所有选项

代码语言:javascript
复制
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]))
代码语言:javascript
复制
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应该可以工作,但它需要持续的差异,这可能会导致错误的结果。

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-07-10 07:38:11

理论上,以下查询应该在最后一分钟返回每个服务请求的确切数量:

代码语言:javascript
复制
sum(
  increase(django_http_requests_before_middlewares_total[1m])
) by (service)

但是实际上,Prometheus可能会为这个查询返回意想不到的结果:

  • 由于外推,它可以在整数计数器上返回分数的结果。详情请参见本期
  • 它返回的结果可能低于预期,因为Prometheus忽略了在方括号中指定的查找窗口(例如,上面的查询中的[1m] )之前的最后一个原始样本与后视窗口中的第一个原始样本之间的计数器增量。
  • 如果方括号中指定的查找窗口包含的原始样本少于两个,则可以返回空结果。例如,如果原始样本之间的间隔不超过一分钟,那么increase(m[d])将返回d <= 1m的空结果。

Prometheus开发人员意识到了这些问题,并将修复它们--参见这个设计博士

同时,您可以尝试在increase()中使用VictoriaMetrics函数--这是我工作的类似Prometheus的监视解决方案。它的增加函数不存在上述问题。

一个重要的注意事项: Prometheus和VictoriaMetrics都根据图表上显示的每个点独立计算查询结果。因此,如果需要使用上面的查询显示每分钟的请求数,则需要将图上各点之间的间隔(也称为step)设置为1分钟。

票数 2
EN

Stack Overflow用户

发布于 2022-07-08 07:19:44

普罗米修斯没有保存足够的数据来给出精确的数值。

为了了解原因,让我们假设1分钟前Prometheus已经为度量10提取了一个http_requests值,而现在它已经被更新为40

已经很清楚的是,通过1m抽样,您不知道在最后一分钟这30个请求是什么时候发生的。是短穗还是均匀分布?尽管如此,rate(http_requests[1m])将每秒为您提供(40-10)/60s = 0.5请求。Increase()以同样的方式工作,它是rate()*interval0.5*60 = 30

尽管上面的例子显示了精确的值,但是很明显,用这个数学不能达到完美的精度。除非您正在处理缓慢移动的计数器(这些计数器每隔几分钟更新一次),否则此错误通常是无关紧要的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72904912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档