Grafana图表Y轴不显示单位和数值,常见原因有三:一是面板设置中未启用Y轴(Axes → Y-Axis → Show 未勾选);二是数据源返回值为`null`、`NaN`或全零,导致Grafana自动隐藏坐标轴;三是单位(Unit)配置错误——如误选“none”或与数据类型不匹配(例如用“bytes”单位展示毫秒延迟),触发单位格式化失败而隐式禁用Y轴标签。此外,在使用Transform(如Reduce、Organize fields)后若未保留原始数值字段,或时间序列无有效采样点,也会造成Y轴空白。建议按顺序检查:① Axes 设置是否开启并启用Label;② Query返回数据是否非空且为数值型;③ Unit 是否设为合适选项(如“ms”、“percent”、“short”等);④ 浏览器控制台是否有`invalid unit`警告。该问题高频出现在Prometheus/Loki日志指标、自定义JSON数据源及旧版Grafana迁移场景中。
1条回答 默认 最新
白萝卜道士 2026-01-29 16:45关注```html一、表层现象:Y轴“消失”的视觉错觉
当Grafana面板中Y轴刻度、数值、单位全部不可见时,多数用户第一反应是“图表坏了”。但实质上,这并非渲染崩溃,而是Grafana基于数据语义与配置策略的主动隐藏行为。该现象在v8.0+版本中尤为显著——UI不再强制显示空轴,而是遵循“无有效数据则不干扰视图”的设计哲学。典型触发场景包括:新建面板未调优、迁移旧仪表盘(v6→v10)、或从Loki日志提取指标后未做类型校验。
二、配置层诊断:Axes与Unit的隐式耦合逻辑
- Axes → Y-Axis → Show:必须勾选,否则整个Y轴区域被CSS
display: none;更易忽略的是 Label 子项——即使Show开启,若Label为空或禁用,单位文字仍不渲染 - Unit配置陷阱:选择
none时Y轴数值显示但无单位;选择不兼容单位(如对http_request_duration_seconds{quantile="0.95"}强设bytes)将触发内部格式化器抛出invalid unit警告,导致Y轴标签静默失效 - 推荐单位组合:
ms(延迟类)、percent(利用率)、short(自动缩写数值)、locale(适配区域数字格式)
三、数据流溯源:从Query到Panel的全链路断点分析
Y轴依赖有效数值序列,任一环节中断即引发级联隐藏:
环节 典型故障 验证方式 Query返回 Prometheus返回 NaN或空向量;JSON数据源字段为字符串"null"点击 Explore→ 执行同查询 → 检查Raw JSON响应Transform处理 Reduce操作后仅保留 count字段,原始value丢失;Organize Fields误删数值列关闭所有Transform → 观察Y轴是否恢复 时间序列采样 查询时间范围过窄(<1个step),或指标无数据点(如新部署服务未打点) 扩大Time Range至24h,观察是否出现单点脉冲 四、深度机制解析:Grafana坐标轴渲染决策树
Grafana v9+ 内部采用声明式坐标轴引擎,其启用逻辑如下(Mermaid流程图):
flowchart TD A[Query执行完成] --> B{数据是否非空?} B -->|否| C[隐藏Y轴] B -->|是| D{所有值是否为数值型?} D -->|否|null/NaN/字符串 → C D -->|是| E{Unit是否可解析?} E -->|否| F[控制台报 invalid unit → 隐式禁用标签] E -->|是| G[计算min/max → 渲染刻度与单位]五、高阶排查:跨数据源与迁移场景的特异性对策
- Prometheus场景:检查
rate()/irate()函数在低频指标下是否产生NaN;建议改用increase()+scalar()兜底 - Loki日志指标:通过LogQL提取的
count_over_time若无匹配日志行,返回空向量——需在Query中添加| __error__ != ""过滤并设置默认值 - JSON数据源:确认JSONPath表达式返回
number而非string;必要时在Transform中添加Convert field type步骤 - 旧版迁移:v6/v7仪表盘中
unit字段存储为字符串(如"ms"),v10+要求严格枚举值,需批量替换为"milliseconds"
六、生产环境加固方案:防御性配置模板
为杜绝此类问题复发,建议在团队内推行标准化面板配置:
- 所有新面板强制启用:
Axes → Y-Axis → Show ✔+Label ✔+Unit设为auto(首次保存后手动微调) - 在Query末尾追加防御性Transform:
Filter data by query → WHERE value != null AND value != NaN AND value != 0 - CI/CD流水线中集成Grafana Dashboard Linter,扫描
unit字段合法性及transform链完整性 - 浏览器开发者工具中常驻监控:
console.warn拦截invalid unit,自动上报至前端监控平台
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- Axes → Y-Axis → Show:必须勾选,否则整个Y轴区域被CSS