Grafana时序面板转换:合并多序列展示Resilience4j断路器状态
Resilience4j断路器状态时序面板实现方案
Grafana原生Time series面板默认仅支持数值型Y轴渲染,针对断路器状态变更这类离散值场景,优先使用适配性更强的State timeline面板实现,也可以通过数值映射改造普通Time series面板,具体操作如下:
方案一:使用State timeline面板(推荐)
该面板原生支持离散状态值的时间区间展示,完全匹配状态变更点的展示需求,配置步骤:
- 面板类型选择
State timeline,替换默认的Time series面板 - 数据侧保留你已经通过过滤得到的
value=1的结果集即可,提前删除无用的value字段 - 进入Transform配置页,按顺序添加以下转换规则:
- 添加
Sort by转换,排序字段选Time,排序方式为升序,保证状态点按时间先后排列 - 添加
Add field from calculation转换,模式选择Concatenate,选中instance和name两个字段,分隔符填-,新字段命名为breaker_key,作为每个断路器的唯一时序标识 - 添加
Remove duplicates转换,去重判断字段选breaker_key+state,保留时间最早的记录,过滤掉连续相同状态的重复上报点(比如你数据里cb2连续两条closed、B实例cb连续两条closed的冗余数据) - 添加
Partition by values转换,分区字段选择刚创建的breaker_key,值字段选择state
- 添加
- 进入面板字段配置页:
- 将
state字段的展示类型设置为离散值(Discrete) - 通过值映射给三个状态配置固定颜色:
closed配绿色、open配红色、half_open配黄色 - Y轴配置关闭数值类自动缩放,直接展示状态文本标签,调整填充透明度、线宽即可得到清晰的状态时间条,每个断路器对应独立一行,状态切换时间点一目了然。
- 将
方案二:改造普通Time series面板(适配必须用折线图的场景)
如果必须使用标准Time series面板,需要先将文本状态映射为数值,再替换Y轴刻度为文本:
- 保留过滤后的
value=1数据集,先按Time升序排序 - 添加
Add field from calculation转换,新建数值型字段state_num,按枚举规则映射:closed→ 0half_open→ 1open→ 2
- 同方案一,拼接
instance和name得到breaker_key作为时序唯一标识,通过Partition by values按breaker_key拆分序列,值字段选择state_num - 进入面板坐标轴配置页:
- 将折线插值模式设置为
Step after,模拟状态持续保持、到时间点瞬间切换的效果,避免折线出现斜向过渡 - Y轴设置最小值为0、最大值为2、刻度间隔固定为1
- 配置Y轴值映射:0对应显示
closed、1对应显示half_open、2对应显示open,即可让Y轴展示状态文本而非原始数值。
- 将折线插值模式设置为
内容的提问来源于stack exchange,提问作者Tiago Donizete dos Santos
相关产品推荐
相关产品推荐

