在 CentOS 上用 Jenkins 监控项目进度的落地方案
一 监控目标与总体架构
- 监控对象与指标
- 项目维度:构建成功率、构建时长、失败趋势、队列长度、Executor 占用、变更关联构建数量。
- 环境维度:Jenkins 节点(Agent)在线/离线、系统资源(CPU、内存、磁盘、网络)。
- 推荐架构
- 采集:Jenkins 通过插件暴露指标(如 Prometheus Metrics Plugin 的 /prometheus 端点),主机层面用 Node Exporter 采集。
- 存储与展示:用 Prometheus 存储,用 Grafana 做可视化与看板。
- 告警:在 Prometheus 中配置规则,结合 Alertmanager 或外部通知(邮件、企业微信、Slack 等)。
二 快速落地步骤
- 安装与启用指标采集
- 在 Jenkins 管理界面安装并启用 Prometheus Metrics Plugin,确认可访问 http://<jenkins_host>:8080/prometheus。
- 在 CentOS 安装 Node Exporter(默认端口 9100),用于采集主机资源指标。
- 配置 Prometheus 抓取
- 在 Prometheus 配置中添加两个 job:一个抓取 Jenkins 的 /prometheus,另一个抓取 Node Exporter 的 /metrics。
- 配置 Grafana 可视化
- 在 Grafana 导入官方或社区仪表板(如 Jenkins 仪表板模板 ID:9964),即可查看 Job、构建、节点、队列、资源等多维指标。
- 验证
- 在 Grafana 中确认有 Jenkins 相关面板数据(如构建成功率、构建时长、节点在线状态、队列长度等)。
三 关键监控面板与告警规则示例
- 建议面板
- 项目健康度:近 7/30 天构建成功率、不稳定率、失败趋势。
- 交付效率:平均构建时长、P95/P99 构建时长、排队时间、Executor 利用率。
- 稳定性:失败原因 TopN(配合失败分析插件)、不稳定测试趋势。
- 资源与容量:节点在线/离线、CPU/内存/磁盘使用率、构建并发趋势。
- Prometheus 告警规则示例
- 节点离线
- 规则:Jenkins 节点在线指标为 0 持续 2 分钟 即告警
- expr: default_jenkins_nodes_online == 0
for: 2m
labels: severity: warning
annotations:
summary: “Jenkins 节点离线”
description: “Jenkins 节点 {{ $labels.node }} 已离线超过 2 分钟”
- 队列积压
- 规则:构建队列长度长时间大于阈值(示例阈值 10)
- expr: jenkins_queue_size > 10
for: 5m
labels: severity: warning
annotations:
summary: “Jenkins 队列积压”
description: “构建队列长度 {{ $value }} 超过阈值 10,持续 5 分钟”
- 构建成功率下降
- 规则:近 1 小时 成功率低于阈值(示例阈值 90%)
- expr: 1 - (sum(rate(jenkins_builds_failed_total[1h])) / sum(rate(jenkins_builds_total[1h]))) < 0.9
for: 10m
labels: severity: critical
annotations:
summary: “Jenkins 成功率下降”
description: “近 1 小时构建成功率低于 90%”
- 说明
- 指标名以实际插件导出为准(如节点在线指标示例为 default_jenkins_nodes_online),可在 /prometheus 端点或通过 Grafana 探索界面确认。
四 团队协作与可视化增强
- 大屏可视化
- 使用 Build Monitor Plugin 创建全屏“构建监视器”,实时展示关键作业状态、当前阶段、责任人、失败分析等,适合 DevOps 看板/作战室 场景。
- 进度与流程可视化
- 使用 Build Pipeline Plugin 将多阶段流水线串联展示,清晰呈现从代码提交到部署的端到端进度与卡点。
- 与需求/缺陷系统联动
- 使用 JIRA Plugin 将 Jenkins 构建结果与 JIRA 需求/缺陷关联,便于管理层从项目维度查看进度与质量趋势。
五 命令行与 API 的轻量监控
- 获取项目最新构建状态
- 示例:curl -u : http://:8080/job/<job_name>/lastBuild/api/json
- 用途:在脚本或外部系统中拉取构建结果、耗时、变更集等信息,做二次统计或集成到自有门户。
- 轮询等待构建结束
- 示例思路:触发构建后,循环获取最新构建的控制台或历史页面,检查状态字段(如 In progress、Success、Failed、Aborted),直至完成或超时。
- 安全建议
- 优先使用 API Token 而非明文密码;为只读监控创建最小权限的 Jenkins 用户。