Grafana 如何使用状态历史面板展示服务可用性

作者:袖梨 2026-08-17

Grafana没有“状态历史面板”,但可通过State Timeline面板、Time series+Value Mappings、叠加统计信息三类方式实现:一、用State Timeline直接展示布尔/枚举状态变化;二、用Time series退化为色块模拟状态条;三、添加Stat和Table面板量化可用率与变更记录。

Grafana 本身没有叫“状态历史面板”的内置面板类型,但用户常指的其实是 State Timeline 面板(状态时间线)或通过 Time series + Value Mappings + Thresholds 组合实现的服务可用性历史展示。这类面板的核心目标是:把离散的健康状态(如 1/0up/downhealthy/unhealthy)按时间轴可视化,清晰呈现服务在一段时间内的可用性波动、中断时段和恢复节奏。

下面分三类实用方式说明:

一、用 State Timeline 面板直接展示状态变化

这是最贴近“状态历史”需求的原生方案(Grafana v9.0+ 默认支持):

  1. 适用场景:服务探针返回布尔型或枚举型指标(如 probe_success{job="hunyuan-ocr"} = 1 表示存活,0 表示失败)
  2. 操作步骤:
    1. 新建面板 → 选择 State Timeline 类型
    2. 查询 PromQL,确保只返回单条时间序列(如 probe_success{job="hunyuan-ocr", instance=~"ocr-prod-.*"}
    3. Field options 中启用 Map numeric values,设置:
      1. 0"Down"(红色)
      2. 1"Up"(绿色)
    4. 可开启 Show legendFill gaps,让中断区间连续填充,便于识别宕机时长

二、用 Time series 面板 + Value Mappings 模拟状态历史

兼容旧版本 Grafana,且更灵活:

  1. 查询返回带时间戳的状态值(例如 up{job="nginx"} or vector(1)
  2. 在面板选项中:
    1. 设置 StatNone(禁用聚合)
    2. 开启 Value mappings
      1. 0❌ Down
      2. 1✅ Up
    3. 关闭 Show value,只保留图例和颜色标识
  3. 效果:折线图退化为垂直色块,横轴是时间,纵轴无意义数值,视觉上就是一段段彩色“状态条”

三、叠加统计信息强化可用性解读

光看状态还不够,需量化:

  1. 在同一仪表盘添加一个 Stat 面板,计算最近 1 小时可用率:
    100 * avg_over_time(probe_success{job="hunyuan-ocr"}[1h])

    单位设为 %,阈值标红(如 <99.5%

  2. 再加一个 Table 面板,列出最近 5 次状态变更:
    probe_success unless probe_success offset 30s

    配合 Sort by time descending,能快速定位最后一次宕机起止时间

注意:所有状态类指标必须由被监控服务主动暴露(如 Prometheus Exporter 的 /probe 端点),或通过 Blackbox Exporter 主动拨测生成。不建议用 absent()count() 这类推断逻辑——它们反映的是“没数据”,而非“服务不可用”,容易误判。

本质上,服务可用性不是数字大小的问题,而是“是否在说话”的问题。State Timeline 把每一次心跳变成可视的刻度,让运维一眼看出:它刚才停跳了 47 秒,现在又稳住了。

相关文章

精彩推荐