You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Grafana官方.NET面板请求统计异常,求正确PromQL查询

问题解决:修复"Top 10请求端点"面板数据异常

原查询的问题分析

你当前的查询存在两个核心问题,导致数据异常:

  • 使用max_over_time取计数器的最大值,最终得到的是计数器的累计总值(从服务启动到当前的总请求数),而非指定时间范围内的新增请求数,所以数值会远高于实际请求量
  • $__rate_interval是用于速率计算的变量,不适合直接用来统计时间范围内的总请求数,这也是修改时间范围后数据无变化的原因

正确的查询语句

要实现"指定时间范围内总请求数排名前10的端点"需求,使用以下PromQL查询:

基础版(保留原标签分组)

topk(10,
  sum by (http_route, http_request_method) (
    increase(http_server_request_duration_seconds_count{job="$job", app_name="$appname"}[$__range])
  )
)

带合并标签版(和原面板展示格式一致)

如果需要像原查询一样合并请求方法和路由为单个标签,使用:

topk(10,
  label_join(
    sum by (http_route, http_request_method) (
      increase(http_server_request_duration_seconds_count{job="$job", app_name="$appname"}[$__range])
    ),
    "method_route", " ", "http_request_method", "http_route"
  )
)

为什么这个查询有效

  • $__range是Grafana内置变量,直接对应当前面板选择的时间范围(比如1小时、6小时),确保统计的是该时间段内的总请求增量
  • increase()是Prometheus专门为计数器设计的函数,自动处理服务重启导致的计数器归零(重置)问题,准确计算时间范围内的请求数增量
  • sum by()按请求端点和方法分组求和,再用topk(10)筛选出请求量最高的10个结果,完全匹配你的需求

额外注意事项

  • 确认你的OpenTelemetry采集器正确导出了http_server_request_duration_seconds_count计数器,且http_route、http_request_method标签没有缺失
  • 如果遇到数据仍不准确的情况,检查服务的计数器是否按规范实现(计数器只能递增,不能递减)

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 12:21:02