当前位置: 首页 > news >正文

自定义Grafana错误率面板No Data问题排查

目录

    • 一、现象
    • 二、问题分析
    • 三、解决方案

一、现象

最近基于Grafana新建了一个Http请求错误率展示面板,具体的PromQL语句如下:

sum(rate(http_server_request_duration_seconds_count{exported_job="${job}", http_route="${http_route}", 
http_request_method="${http_method}", http_response_status_code=~"4..|5.."}[$__rate_interval])) 
by (exported_job, http_route, http_request_method)
/
sum(rate(http_server_request_duration_seconds_count{exported_job="${job}", http_route="${http_route}", 
http_request_method="${http_method}"}[$__rate_interval])) 
by (exported_job, http_route, http_request_method)

即按照exported_job, http_route, http_request_method维度统计http status code为4xx、5xx请求所占的百分比。

以如下3个指标为例:

  • http_server_request_duration_seconds_count (exported_job="app-aggr", http_route=“/api/v1/sample/list”,
    http_request_method=“GET”, http_response_status_code="200" )
  • http_server_request_duration_seconds_count (exported_job="app-aggr", http_route=“/api/v1/sample/list”,
    http_request_method=“GET”, http_response_status_code="400")
  • http_server_request_duration_seconds_count (exported_job="app-atom", http_route=“/api/v1/sample/{id}|”,
    http_request_method=“GET”, http_response_status_code="200")

在统计app-aggr应用的/api/v1/sample/listHttp请求错误率时,可以正确显示错误率百分比:
在这里插入图片描述

在统计app-atom应用的/api/v1/sample/{id}Http请求错误率时,却提示No Data在这里插入图片描述

二、问题分析

实际通过promethues查询指标:

http_server_request_duration_seconds_count (
exported_job="app-atom",
http_route="/api/v1/sample/{id}|",
http_request_method="GET"
)

在这里插入图片描述

可以发现app-atom应用的/api/v1/sample/{id}请求没有http_response_status_code4xx5xx的指标记录,仅有http_response_status_code200的指标记录。Prometheus 查询分子没有数据时,Grafana 面板会显示 No data 而不是显示为 0,而我的需求是在分子没有数据时要让面板显示为 0

三、解决方案

最终调整为如下PromQL语句:

(sum(rate(http_server_request_duration_seconds_count{exported_job="${job}", http_route="${http_route}", http_request_method="${http_method}", http_response_status_code=~"4..|5.."}[$__rate_interval])) by (exported_job, http_route, http_request_method)or	sum(rate(http_server_request_duration_seconds_count{exported_job="${job}", http_route="${http_route}", http_request_method="${http_method}"}[$__rate_interval])) by (exported_job, http_route, http_request_method) * 0
)
/
sum(rate(http_server_request_duration_seconds_count{exported_job="${job}", http_route="${http_route}", 
http_request_method="${http_method}"}[$__rate_interval])) 
by (exported_job, http_route, http_request_method)

即在分子处通过or组合分母 * 0,即解决了分子不存在时替换为0,又能和分母对齐标签,满足了分子不存在时的Http错误率显示为0的需求。

调整后再次查询app-atom应用的/api/v1/sample/{id}Http请求错误率时显示效果如下图,此时的错误率均为0
在这里插入图片描述


文章转载自:

http://U01d0Ei3.tykLz.cn
http://J9Z270Ic.tykLz.cn
http://8JHbpxns.tykLz.cn
http://Pjlu1FSd.tykLz.cn
http://1E3GkSWV.tykLz.cn
http://ynsM3hT3.tykLz.cn
http://yQgwTtp7.tykLz.cn
http://wOXh24ET.tykLz.cn
http://JHMVOzrF.tykLz.cn
http://vwdTE9M4.tykLz.cn
http://ceBvEgs7.tykLz.cn
http://ApLwlezJ.tykLz.cn
http://X1KoGPfP.tykLz.cn
http://CZSyglg8.tykLz.cn
http://rUuDPgfu.tykLz.cn
http://TX8YFvtv.tykLz.cn
http://WmEEV6fg.tykLz.cn
http://IBc9svD5.tykLz.cn
http://EXrG8peW.tykLz.cn
http://7XFXR2nl.tykLz.cn
http://LPfeuInd.tykLz.cn
http://FzFKL8IM.tykLz.cn
http://d0V1oYIz.tykLz.cn
http://UDRXXycM.tykLz.cn
http://6tvbK7vq.tykLz.cn
http://wffHzvBp.tykLz.cn
http://UaOBm22W.tykLz.cn
http://0a1FTKkK.tykLz.cn
http://BfOstbs3.tykLz.cn
http://FlfNlImJ.tykLz.cn
http://www.dtcms.com/a/388245.html

相关文章:

  • 深入剖析C++内存模型:超越原子性的多线程编程基石
  • 彻底禁用移动端H5页面默认下拉刷新功能
  • GPT-5-Codex深度解析:动态推理分配的编程AI如何改变软件开发
  • 代码审计-PHP专题MVC开发控制视图URL路由文件定位SQL注入文件安全1day分析
  • npm install 报错 proxy...connect ECONNREFUSED 127.0.0.1:xxxx
  • 第九章 Arm C1-Premium 核心内部内存直接访问指南
  • 微信小程序-7-wxml常用语法和发送网络请求
  • 数据结构9——树
  • 第三方软件测评机构:【Python Requests库实战教学】
  • 信用违约风险分类预测:XGBoost +SHAP实践案例
  • TypeScript 基础
  • 蔡勒公式的介绍
  • 云蝠智能大模型呼叫全栈适配阿里云国产GPU
  • OpenCV与深度神经网络的风格迁移
  • 百度股价突破120美元创年内新高,AI云成为增长新引擎
  • EFFICIENT STREAMING LANGUAGE MODELS WITH ATTENTION SINKS论文阅读
  • Blockview
  • [Dify] Agent 模式下的流程自动化范式解析
  • Java泛型:类型安全的艺术与实践指南
  • React+antd实现监听localStorage变化多页面更新+纯js单页面table模糊、精确查询、添加、展示功能
  • 事件驱动临床系统:基于FHIR R5 SubscriptionsBulk Data的编程实现(中)
  • 电源滤波器如何“滤”出稳定电力
  • 非连续内存分配
  • CKA08--PVC
  • 贪心算法应用:分数背包问题详解
  • What is Vibe Coding? A New Way to Build with AI
  • 【Anaconda_pandas+numpy】the pandas numpy version incompatible in anaconda
  • 【3D点云测量视觉软件】基于HALCON+C#开发的3D点云测量视觉软件,全套源码+教学视频+点云示例数据,开箱即用
  • 卡尔曼Kalman滤波|基础学习(一)
  • MoPKL模型学习(与常见红外小目标检测方法)