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

Grafana中Django面板PromQL查询解析及相关问题咨询

Django Grafana仪表盘问题解答

Q1:是否因为所有数据均生成于最近一天,且查询在整个时间范围取最大值,导致面板无变化?

是的。该查询核心依赖max_over_time和present_over_time函数,二者均基于选中的整个$__range时间范围计算:

  • max_over_time提取时间范围内指标的最大值(对请求计数类指标而言,最大值等同于该时间段的累计总量)
  • present_over_time统计时间范围内有数据的样本点数量

如果所有数据都集中在最近一天,那么无论选择“最近一天”还是“最近一年”,$__range都包含了全部有效数据,计算结果不会发生变化,因此条形仪表的展示内容也不会改变。

Q2:能否帮忙解析该PromQL查询,它是否返回指定时间范围内最慢的视图?

这个PromQL不是直接返回“最慢的视图”,而是返回延迟超过指定阈值的请求占比最高的前20个(请求方法+视图)组合,具体逻辑拆解如下:

topk(20, 
    (1 - 
        (sum(max_over_time(django_http_requests_latency_seconds_by_view_method_bucket{app=~"^$application$",le="$threshold"}[$__range]) 
                        / ignoring(le) max_over_time(django_http_requests_latency_seconds_by_view_method_count{app=~"^$application$"}[$__range])) 
        by (method, view) / count(present_over_time(django_http_requests_latency_seconds_by_view_method_count{app=~"^$application$"}[$__range])) by (method, view))) > 0.0099)
  1. 基础指标计算

    • max_over_time(django_http_requests_latency_seconds_by_view_method_bucket{...}[$__range]):获取时间范围内,延迟≤$threshold的请求累计数最大值(即该时间段内所有延迟达标请求的总量)
    • max_over_time(django_http_requests_latency_seconds_by_view_method_count{...}[$__range]):获取时间范围内,对应视图+方法的总请求数最大值(即该时间段内的总请求总量)
    • 两者相除(ignoring(le)忽略桶的阈值标签),得到单段时间内延迟≤阈值的请求占比
  2. 聚合与平均处理

    • sum(...) by (method, view):聚合同一视图+方法下的占比数据
    • count(present_over_time(...)) by (method, view):统计该视图+方法在时间范围内有数据的样本点数量
    • 两者相除,得到时间范围内延迟≤阈值的请求占比平均值
  3. 最终筛选与排序

    • 1 - 平均值:计算出延迟超过阈值的请求占比
    • > 0.0099:筛选出占比超过0.99%的视图+方法组合
    • topk(20, ...):取占比最高的前20个组合

Q3:面板标题栏中的“>1s”是什么含义?

表示该面板统计的是延迟超过1秒的请求相关数据,对应PromQL中的$threshold变量被设置为1s,标题直接展示当前面板关注的延迟阈值,方便快速识别统计核心维度。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 20:40:32