CentOS 环境下 Jenkins 性能监控实操指南
一 监控体系总览
- 建议采用分层监控:系统层(CPU、内存、磁盘 I/O、网络)、JVM 与应用层(Jenkins 主进程、构建队列、节点在线状态)、构建过程层(作业耗时、测试通过率、步骤瓶颈)。
- 工具选型建议:
- 快速上手:Monitoring 插件(含 JavaMelody),开箱即看 CPU、内存、HTTP 响应时间、当前请求数等。
- 可视化与告警:Prometheus + Grafana,采集 Jenkins 暴露的指标并做趋势与阈值告警。
- 已有监控平台:Zabbix,通过 Metrics 插件或接口采集指标并配置触发器。
- 临时排查:Linux 原生命令(top/htop、iostat、iftop/nethogs)与 Jenkins API 脚本化巡检。
二 快速落地步骤
- 内置插件 Monitoring(JavaMelody)
- 安装:进入 Manage Jenkins → Manage Plugins → Available,搜索并安装 Monitoring 插件。
- 查看:进入 Manage Jenkins → Monitoring of Jenkins master(或“系统管理 → Monitoring”),查看 CPU、内存、HTTP 响应时间、当前请求数 等仪表盘与 HTML 报告。适合快速评估与日常巡检。
- Prometheus + Grafana
- Jenkins 端:安装 Prometheus 插件,启用 /prometheus 指标端点(默认与 Jenkins 同端口,常见为 8080)。
- Prometheus 端:在 prometheus.yml 增加抓取任务:
- job_name: ‘jenkins’
metrics_path: ‘/prometheus’
static_configs:
- targets: [‘<jenkins_ip>:<jenkins_port>’]
- Grafana 端:添加 Prometheus 数据源,导入 Jenkins 仪表盘模板(如 ID 9964),即可查看主机的 CPU/内存、构建队列长度、最近 1 小时构建成功率 等。
- Zabbix 集成
- Jenkins 端:安装 Metrics 插件 并生成 Access Key,启用 /metrics 接口。
- Zabbix 端:创建监控模板,采集 JVM 堆内存使用率、构建任务数 等,设置触发器(如“JVM 内存使用率 > 80% 持续 5 分钟”)并配置告警通道。
三 命令行与 API 巡检
- 系统资源
- 进程与资源:top/htop 定位 java -jar jenkins.war 的 CPU/内存占用;iostat -x 1 检查磁盘 %util/await;iftop/nethogs 排查与 Git/Docker Registry 的网络流量异常。
- 服务状态:systemctl status jenkins 查看是否 active (running);journalctl -u jenkins -f 实时跟踪启动错误与构建异常日志。
- Jenkins API
- 节点在线状态:curl -u : “http://<jenkins_host>:/computer/<node_label>/api/json?pretty” 检查 idle/offline 字段判断节点是否掉线。
- 流水线阶段耗时:访问 /job////wfapi/ 获取各阶段耗时,定位慢步骤。
四 告警与通知配置
- Jenkins 内置
- 邮件告警:安装 Email Extension 插件,在 Manage Jenkins → Configure System 配置 SMTP,按“构建失败”“节点离线”等条件触发邮件。
- 即时通讯:安装 Slack Notification 插件,配置 Webhook URL 与频道,推送构建与健康告警。
- 平台化告警
- Prometheus Alertmanager:基于指标阈值与持续时间配置规则(如“构建失败数突增”“队列过长”),通过 邮件/钉钉/企业微信/PagerDuty 多渠道通知。
五 常见瓶颈与优化建议
- 资源不足
- 调整 JVM 堆内存:编辑 /etc/sysconfig/jenkins(或 /etc/default/jenkins)中的 JAVA_OPTS,如 -Xmx4g;必要时增加 CPU/内存 或启用 swap。
- 磁盘瓶颈:关注 iostat 的 %util 与 await,清理工作空间、归档旧构建、使用更快的存储。
- 队列与并发
- 增加 执行器数量(Manage Jenkins → Configure System → # of executors),或将巨型 Job 拆分为并行子 Job,降低 构建队列长度。
- 构建过程慢
- 使用 Build Time Analyzer 插件定位耗时步骤;优化脚本(如 mvn install -DskipTests 在合适场景)、减少不必要的插件调用与 SCM 轮询频率。
- 日志与配置
- 定期检查 /var/log/jenkins/jenkins.log 与构建日志;审查 Jenkins 配置、线程池与队列设置,避免不合理参数。
- 版本与依赖
- 升级 Jenkins 与插件 获取性能修复;若使用外部数据库(如 PostgreSQL/MySQL),同步评估 查询性能、索引与锁等待。