You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

如何在Grafana中展示指定时间间隔内的请求接收速率(基于Prometheus直方图指标)

解决Grafana中用Prometheus Histogram指标展示请求速率的问题

你遇到的问题核心是用错了Prometheus Histogram指标的时间序列。咱们先拆解下这个get_tax_requests_seconds指标:它是一个Histogram类型,主要用来记录请求的延迟分布,默认会生成三类时间序列:

  • get_tax_requests_seconds_bucket{le="..."}:落在不同延迟区间的累计请求数
  • get_tax_requests_seconds_sum:所有请求的总延迟时间
  • get_tax_requests_seconds_count:累计处理的请求总数

你之前直接对get_tax_requests_seconds(带quantile的分位数指标)用rate函数,自然得不到请求速率——这个指标本身记录的是某个分位数的延迟值,不是请求计数。

正确的解决方案

  1. 选择正确的累计计数器指标
    要获取请求速率,必须用get_tax_requests_seconds_count这个指标,它才是从服务启动以来累计的请求总数。

  2. 用rate/irate计算请求速率
    在Grafana的PromQL查询框里,输入以下查询语句:

    rate(get_tax_requests_seconds_count{m_application="adapter-mvp",method="GetData",m_env="test"}[5m])
    
    • rate()函数会计算指定时间窗口(这里是5分钟)内的平均请求速率,适合看长期趋势
    • 如果需要更灵敏的瞬时速率展示(比如捕捉短时间内的请求波动),可以换成irate()
      irate(get_tax_requests_seconds_count{m_application="adapter-mvp",method="GetData",m_env="test"}[1m])
      
  3. Grafana图表配置调整
    把这个查询替换掉原来的查询后,图表就会展示非累计的请求速率波动了——比如10:00-16:00平均每秒X次请求,16:00-22:00平均每秒Y次请求,完全符合你要的效果。

额外小提示

如果你之后需要分析延迟分布的变化,才需要用到带bucketquantile的指标;而请求计数、速率这类需求,认准Histogram指标的_count后缀就不会错啦。

内容的提问来源于stack exchange,提问作者John

火山引擎 最新活动