如何在Elasticsearch与Kibana中关联索引,可视化GitHub失败工作流任务
在Kibana中关联GitHub Actions Webhook数据实现失败任务统计可视化的方法
一、确认关联字段
先找到workflow_run和workflow_job之间的唯一关联键(比如GitHub Actions体系里,workflow_job中的run_id对应workflow_run里的id),这是数据关联的核心依据。
二、用Transform合并两个索引的数据(对应SQL的JOIN操作)
为了长期高效做统计分析,提前把关联数据合并成单个索引是最优方案:
- 打开Kibana左侧菜单→Stack Management→Transform→点击Create transform
- 选择源索引为
workflow_job,添加关联规则:基于确认好的关联字段,关联workflow_run索引 - 选择需要保留的字段:
workflow_job中的任务名称、状态(status),加上workflow_run中的path字段 - 设置定时更新(适配实时采集的Webhook数据),创建并启动Transform,生成新的合并索引(比如命名为
github_actions_combined)
三、创建合并索引的Data View
- 进入Stack Management→Data Views→Create data view
- 选择刚才生成的
github_actions_combined索引,确认status、任务名称、path等字段被正确识别,完成创建
四、构建失败任务统计可视化
- 进入Visualize Library→Create visualization,选择Horizontal Bar Chart(适合排序展示)
- Metrics配置:选择
Count作为统计指标,添加过滤条件status: failed(只统计失败任务) - Buckets配置:
- Y轴选择
Terms聚合,字段选任务名称(比如name),排序方式设为Descending,按Count排序,设置显示Top N(比如Top 10) - 可选添加子Bucket:比如
Split Bars,选择Terms聚合字段path,这样能同时展示每个失败任务对应的关联文件
- Y轴选择
- 调整图表标题、标签后保存,可添加到Dashboard中查看
类比SQL逻辑参考
如果用SQL实现相同需求,逻辑如下:
SELECT wj.name, wr.path, COUNT(*) AS fail_count FROM workflow_job wj JOIN workflow_run wr ON wj.run_id = wr.id WHERE wj.status = 'failed' GROUP BY wj.name, wr.path ORDER BY fail_count DESC LIMIT 10;
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

