Grafana没有“状态历史面板”,但可通过State Timeline面板、Time series+Value Mappings、叠加统计信息三类方式实现:一、用State Timeline直接展示布尔/枚举状态变化;二、用Time series退化为色块模拟状态条;三、添加Stat和Table面板量化可用率与变更记录。
Grafana 本身没有叫“状态历史面板”的内置面板类型,但用户常指的其实是 State Timeline 面板(状态时间线)或通过 Time series + Value Mappings + Thresholds 组合实现的服务可用性历史展示。这类面板的核心目标是:把离散的健康状态(如 1/0、up/down、healthy/unhealthy)按时间轴可视化,清晰呈现服务在一段时间内的可用性波动、中断时段和恢复节奏。
下面分三类实用方式说明:
一、用 State Timeline 面板直接展示状态变化
这是最贴近“状态历史”需求的原生方案(Grafana v9.0+ 默认支持):
probe_success{job="hunyuan-ocr"} = 1 表示存活,0 表示失败)probe_success{job="hunyuan-ocr", instance=~"ocr-prod-.*"})0 → "Down"(红色)1 → "Up"(绿色)二、用 Time series 面板 + Value Mappings 模拟状态历史
兼容旧版本 Grafana,且更灵活:
up{job="nginx"} or vector(1))None(禁用聚合)0 → ❌ Down
1 → ✅ Up
三、叠加统计信息强化可用性解读
光看状态还不够,需量化:
100 * avg_over_time(probe_success{job="hunyuan-ocr"}[1h])
单位设为 %,阈值标红(如 <99.5%)
probe_success unless probe_success offset 30s
配合 Sort by time descending,能快速定位最后一次宕机起止时间
注意:所有状态类指标必须由被监控服务主动暴露(如 Prometheus Exporter 的 /probe 端点),或通过 Blackbox Exporter 主动拨测生成。不建议用 absent() 或 count() 这类推断逻辑——它们反映的是“没数据”,而非“服务不可用”,容易误判。
本质上,服务可用性不是数字大小的问题,而是“是否在说话”的问题。State Timeline 把每一次心跳变成可视的刻度,让运维一眼看出:它刚才停跳了 47 秒,现在又稳住了。