监控目标与总体架构
- 建议从四个维度建立监控:
- Jenkins 业务指标:节点在线状态、构建队列长度、Executor 使用率、构建成功率/耗时、失败趋势等。
- 操作系统资源:CPU、内存、磁盘 I/O、网络、文件句柄等。
- 日志:实时查看与集中化存储、检索、告警。
- 告警:基于阈值与异常趋势触发通知(如企业微信、钉钉、邮件)。
- 架构建议:在 CentOS 上以 Prometheus 采集指标、Grafana 展示面板,Jenkins 侧安装 Prometheus Metrics Plugin 暴露 /prometheus 端点;系统层面用 Node Exporter 采集主机指标;日志用 logrotate 管理并通过 ELK/Splunk 集中;告警在 Prometheus 或 Grafana 中配置。
Jenkins 业务指标监控 Prometheus + Grafana
- 安装与暴露指标
- 在 Jenkins 管理界面安装 Prometheus Metrics Plugin,安装完成后自动暴露 http://<jenkins_host>:8080/prometheus。
- 常用指标示例:
- 节点在线状态:
default_jenkins_nodes_online{node="agent1"} 1(1 在线,0 离线)
- 构建队列长度:
jenkins_queue_size
- Executor 使用:
jenkins_executor_usage
- 构建成功率/耗时:
jenkins_job_build_success_ratio、jenkins_job_duration_seconds
- Prometheus 抓取配置
- 在 prometheus.yml 增加 job:
- job_name: ‘jenkins’
scrape_interval: 15s
static_configs:
- targets: [‘jenkins.example.com:8080’]
metrics_path: /prometheus
- Grafana 面板与告警
- 导入 Jenkins 社区面板(如 ID 9964),或自建图表(节点在线、队列、成功率、耗时 P95/P99)。
- 示例告警规则(节点离线):
- alert: JenkinsNodeOffline
expr: default_jenkins_nodes_online == 0
for: 2m
labels:
severity: warning
annotations:
summary: “Jenkins 节点离线”
description: “Jenkins 节点 {{ $labels.node }} 已离线超过 2 分钟”。
系统与 JVM 监控
- 主机层面
- 部署 Node Exporter(默认端口 9100)采集 CPU、内存、磁盘、网络等,Prometheus 同样以 scrape 方式拉取。
- 在 CentOS 上可用 sysstat(如
sar)做细粒度性能回溯分析。
- JVM 层面
- 调整 JVM 参数(如在 Jenkins 启动脚本或 systemd 环境变量中设置
JAVA_ARGS="-Xmx4096m -Xms4096m"),避免频繁 Full GC 与 OOM。
- 使用 Java VisualVM / JConsole 远程连接观察堆内存、线程、类加载、GC 情况,辅助定位构建高峰期的性能瓶颈。
日志与告警实践
- 日志管理与检索
- 实时查看:
sudo tail -f /var/log/jenkins/jenkins.log
- 日志轮转:在 /etc/logrotate.d/jenkins 配置按日轮转、保留 7 天、压缩旧日志,并在轮转后发送 HUP 信号重载 Jenkins 日志句柄。
- 集中化:将日志接入 ELK(Elasticsearch/Logstash/Kibana) 或 Splunk,便于检索、可视化与统一告警。
- 告警渠道
- 在 Prometheus 配置告警规则后对接 Alertmanager,或在 Grafana 中配置 钉钉/企业微信/邮件 通知;结合业务阈值(如队列积压、节点离线、构建失败率突增)触发。
快速检查清单
| 监控项 |
采集方式 |
关键指标或动作 |
| Jenkins 节点在线 |
Prometheus + Prometheus Metrics Plugin |
default_jenkins_nodes_online{node="..."};离线即告警 |
| 构建队列与 Executor |
Prometheus |
jenkins_queue_size、jenkins_executor_usage;持续高队列提示扩容 |
| 构建成功率/耗时 |
Prometheus |
jenkins_job_build_success_ratio、jenkins_job_duration_seconds;P95/P99 趋势 |
| 主机资源 |
Node Exporter + sysstat |
CPU/内存/磁盘 IO/网络;异常时联动排查 |
| JVM 健康 |
JVisualVM/JConsole + 合理 Xmx/Xms |
堆内存、GC 次数/时间;避免 OOM 与长时间停顿 |
| 日志留存与检索 |
logrotate + ELK/Splunk |
轮转保留 7 天、压缩;关键字/错误堆栈告警 |
| 面板与告警 |
Grafana + Prometheus/Alertmanager |
导入 Jenkins 面板;配置节点离线、队列积压等告警规则 |