Linux下Jenkins怎样监控任务
小樊
37
2025-11-22 13:31:30
Linux下Jenkins任务监控实践
一 监控目标与总体架构
- 监控对象与指标
- 任务维度:构建状态(SUCCESS/FAILURE/ABORTED)、持续时间、队列等待时间、阶段耗时、失败原因与回溯。
- 系统维度:Jenkins Master/节点的CPU、内存、磁盘IO、网络,以及HTTP响应时间、当前请求数、线程数、JVM指标。
- 推荐架构
- 平台内置视图与告警(快速上手) → 指标时序化(Prometheus + Grafana) → 日志与链路(Loki/Tempo) → 命令行与API巡检(日常核查与自动化)。
二 内置与插件监控
- 控制台与构建历史
- 在 Manage Jenkins → Monitoring of Jenkins master 查看 JavaMelody 仪表盘(内存、CPU、HTTP 响应时间、当前请求数等),用于快速定位 Master 性能瓶颈。
- 在任务页面查看 构建历史、控制台日志、测试结果与失败堆栈,适合单次任务的细粒度排查。
- 通知与告警插件
- Email Extension Plugin:自定义邮件主题/内容,按结果(失败、不稳定、恢复)触发。
- Slack Notification Plugin:推送构建状态到 Slack 频道,便于团队即时响应。
- 任务结果持久化与趋势
- HTML Publisher Plugin:发布测试报告/覆盖率报告到任务页面,形成可视化趋势。
- InfluxDB Plugin:将构建与作业指标写入 InfluxDB,配合 Grafana 展示构建时长、成功率趋势等。
三 指标与日志的可观测性方案
- Prometheus + Grafana
- 在 Jenkins 安装 Prometheus metrics 插件,暴露 /prometheus 指标端点。
- Prometheus 配置抓取:
- job_name: ‘jenkins’
metrics_path: ‘/prometheus’
static_configs:
- targets: [‘<jenkins_ip>:<jenkins_port>’]
- Grafana 添加 Prometheus 数据源,导入 Jenkins 面板模板(如 ID 9964)快速获得概览与趋势。
- InfluxDB + Grafana
- 部署 InfluxDB,在 Jenkins 安装 InfluxDB Plugin,将作业与构建结果写入 InfluxDB;Grafana 配置 InfluxDB 数据源并构建趋势与对比面板。
- 日志与链路追踪
- 使用 Loki 聚合构建日志,配合 Grafana 做关键字/错误码检索与可视化。
- 使用 Tempo 采集执行链路,结合 Grafana 实现跨服务/阶段的调用关系追踪。
四 命令行与API巡检
- 快速查看任务状态
- 使用 curl 获取任务最新构建结果:
- curl -u : http://<jenkins_ip>:/job/<job_name>/lastBuild/api/json
- 使用 jenkins-cli.jar 查看控制台日志:
- java -jar jenkins-cli.jar -s http://<jenkins_url> console <job_name>/lastBuild
- 自动化巡检脚本思路
- 定期调用 API 获取最近 N 次构建结果,统计 失败率/平均耗时,当超过阈值时调用 Webhook 或邮件网关触发告警。
五 落地配置与告警示例
- Prometheus 抓取最小配置
- scrape_configs:
- job_name: ‘jenkins’
metrics_path: ‘/prometheus’
static_configs:
- targets: [‘192.168.1.10:8080’]
- Grafana 面板
- 数据源选择 Prometheus,导入 Jenkins 仪表盘模板(ID 9964),覆盖构建健康、节点资源、HTTP 性能等核心面板。
- 邮件告警示例
- 安装 Email Extension Plugin,在“构建后操作”添加 Editable Email Notification:
- 触发条件:仅当 构建失败 或 状态从失败变为成功(恢复)。
- 高级设置:自定义主题与内容,包含 构建编号、持续时间、变更集、控制台链接,并抄送团队。
- 节点与系统巡检
- 在节点上定期执行 top/htop、iostat、iftop/nethogs、sysstat,将资源异常与构建失败关联分析,避免单点资源瓶颈影响任务稳定性。