Linux 上监控 Jenkins 的可落地方案
一 监控目标与分层
- 建议将监控分为两层:
- Jenkins 业务层(Job/构建、队列、Executor、节点在线状态等);
- 操作系统层(CPU、内存、磁盘 I/O、网络等)。
- 典型关注点:
- 节点健康:是否有 Agent 离线、Executor 是否耗尽;
- 队列与吞吐:构建排队时长、失败趋势、构建耗时 P95/P99;
- 资源瓶颈:Master/Agent 的 CPU/内存/磁盘/网络 使用是否异常。
- 方案选型建议:
- 业务层用 Prometheus + Grafana(配合 Jenkins Prometheus 插件);
- 系统层用 Node Exporter 采集主机指标;
- 快速自检用 Monitoring(JavaMelody)插件 与 Jenkins REST API。
- 指标示例:
- 节点在线状态:
default_jenkins_nodes_online{node="agent1"} 1(1=在线,0=离线);
- 用途:节点掉线告警、构建健康度、资源与队列趋势分析。
二 方案一 Prometheus + Grafana 监控 Jenkins 业务层
- 步骤 1 安装插件
- 在 Manage Jenkins → Plugins 安装 Prometheus Metrics Plugin。安装后 Jenkins 会在 /prometheus 暴露指标端点(如:http://:8080/prometheus)。
- 步骤 2 配置 Prometheus 抓取
- 步骤 3 Grafana 可视化
- 添加 Prometheus 数据源,导入 Jenkins 相关面板(可自建或使用社区面板)。
- 节点在线状态示例查询:
- 最新在线状态:
max by (node) (default_jenkins_nodes_online)(Table/Instant 视图便于看最新值)。
- 步骤 4 常用告警规则
三 方案二 主机与 JVM 层监控
- 主机层(Linux 资源)
- 部署 Node Exporter(默认端口 9100),采集 CPU、内存、磁盘、网络 等系统指标;
- 与 Jenkins 指标分离:Node Exporter 关注“机器”,Jenkins 插件关注“CI/CD 业务”。
- JVM 与应用层(Master 进程)
- 安装 Monitoring 插件(JavaMelody),在 Manage Jenkins → Monitoring of Jenkins master 查看 内存、CPU、HTTP 响应时间、当前请求数 等;
- 适合快速洞察 Master 负载与健康,但不提供强大的告警能力。
四 快速自检与 API 集成
- REST API 获取状态
- 获取某 Job 最新构建结果:
curl -u 用户名:密码 http://<jenkins>:8080/job/<job_name>/lastBuild/api/json
- 可用于外部系统做健康检查、状态看板或二次告警。
- 命令行巡检
- 在 Master/Agent 上用 top/htop、iostat、iftop/nethogs 等排查资源瓶颈;
- 在 Jenkins 任务中以 Shell 执行
top、free、df 等命令收集系统信息,做趋势记录或阈值判断。
五 告警与通知实践
- 在 Prometheus 中配置 节点离线、队列积压、构建失败率上升 等告警规则,结合 Alertmanager 发送到企业微信/钉钉/邮件。
- 在 Jenkins 内使用 Email Extension 等插件做构建结果通知与日报;
- 如需更丰富的可视化与统一告警视图,可引入 Grafana 展示与 ElastAlert 等日志告警工具联动。