如何在Grafana State Timeline面板中用Prometheus标签值展示状态
这个需求完全可以实现,不需要依赖Prometheus的字符串指标能力,通过Grafana自带的转换功能和State Timeline面板配置即可完成,具体操作步骤如下:
操作步骤
1. 配置PromQL查询
直接查询目标指标即可,无需额外计算:
a_metric
查询返回的所有序列都会携带band和state标签,样本值固定为1。
2. 配置Grafana转换规则
进入面板的「转换」Tab,依次添加以下2个转换:
- 第一个转换选标签转字段(Labels to fields)
- 操作模式选择「将指定标签的值作为新字段添加」
- 选中
state标签,输出字段名可自定义为state - 勾选保留
band标签作为序列元数据
- 第二个转换选按字段分组(Group by)
- 分组字段选择
band - 对
state字段的聚合规则选择「Last(取最后一个值)」
- 分组字段选择
3. 配置State Timeline面板
- 进入面板设置的「字段」选项,将字段类型设置为「字符串」
- (可选)在「值映射」设置中,给不同的state值自定义显示颜色,即可实现你给出的示意图效果
- 根据你的状态切换频率调整查询步长,避免状态切换的时间点出现偏差
旧版本Grafana兼容方案
如果你使用的Grafana版本较低,State Timeline不支持字符串类型的值,可以用数值映射的替代方案实现:
- 将PromQL调整为按state映射不同的固定数值:
a_metric{state="A"} * 1 or a_metric{state="B"} * 2 or a_metric{state="C"} * 3 # 后续新增state取值时,按顺序新增对应规则即可
- 转换规则仅需添加「按标签分组」,分组字段选
band,聚合规则选「Last」或「Max」 - 在面板「值映射」中添加枚举映射:1对应A、2对应B、3对应C,同时配置对应颜色即可。
内容的提问来源于stack exchange,提问作者rookie099
相关产品推荐
相关产品推荐

