You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kibana中关联Jenkins构建失败与错误日志并制作仪表盘?

解决方案:在Kibana中关联Jenkins构建失败与错误根源并统计

1. 给所有日志条目添加唯一构建标识

首先要确保每个Jenkins构建的所有日志条目都带有同一个build_id(比如Jenkins原生的BUILD_ID),这是关联分散日志与构建状态的核心:

  • 如果用Filebeat采集日志文件:可从日志文件名或内容中提取BUILD_ID,通过filebeat.yml的processors模块(dissect或grok)添加为自定义字段。
  • 如果用Logstash处理:用grok模式匹配Jenkins日志中的BUILD_ID(例如日志行含BUILD_ID=%{NUMBER:build_id}),将其设为全局字段,确保该构建下所有日志条目都携带这个build_id。

2. 用Elasticsearch Transform聚合构建状态与错误

利用Elasticsearch的Transform功能,将分散的日志条目按build_id聚合,把构建最终状态(仅最后一行的build_failure)与该构建下的错误信息关联起来:

  1. 进入Kibana的「Stack Management」→「Transform」,创建连续Transform(支持实时更新数据)。
  2. 选择Jenkins日志的源索引,设置分组字段为build_id。
  3. 添加以下聚合规则:
    • 构建状态:用last聚合字段build_failure,命名为build_status(取每个构建最后一条记录的失败状态)。
    • 错误ID集合:用terms聚合字段error.id,命名为error_ids,设置足够大的size确保捕获所有错误。
    • 错误消息集合:用terms聚合字段error.message,命名为error_messages。
  4. 设置目标索引(例如jenkins_builds_aggregated),保存并启动Transform。

3. 在Kibana中创建可视化与仪表盘

基于聚合后的索引创建数据视图,然后构建所需的统计可视化:

统计Top失败错误类型

  • 创建水平条形图:
    • X轴:选择「Count」聚合,添加过滤器build_status: true(仅统计失败构建)。
    • Y轴:选择error_ids.key或error_messages.key(对应错误ID或错误消息)。
    • 添加分面(Facet):选择jenkins_instance或job_name,即可按实例/任务分组展示各错误类型的失败次数。

其他可选可视化

  • 饼图:展示不同错误类型在总失败构建中的占比。
  • 指标卡片:展示单实例/任务的总失败构建数。

替代方案:直接在Kibana Lens中用嵌套聚合

如果不想提前聚合数据,可在Lens中使用嵌套聚合:

  1. 选择源日志索引,添加第一层聚合:按build_id分组,使用Latest函数取build_failure字段,过滤出值为true的构建。
  2. 添加第二层聚合:按error.id或error.message分组,统计符合条件的build_id数量。

注:这种方式在数据量较大时性能可能不如Transform预处理,建议优先使用Transform方案。

内容的提问来源于stack exchange,提问作者Nico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 01:01:28