Linux下Jenkins监控实践
一 监控体系总览
- 建议采用分层监控:系统层用Node Exporter采集CPU、内存、磁盘、网络等主机指标;应用层用Jenkins Prometheus Metrics Plugin暴露Job、构建、节点、队列、Executor等CI/CD指标;可视化与告警用Grafana + Prometheus Alertmanager;构建结果通知用Email Extension、Slack Notification等插件。这样既能看到机器健康,也能衡量流水线效率与稳定性。
二 快速落地步骤 Prometheus Grafana
- 安装插件:在Jenkins“插件管理”安装Prometheus Metrics Plugin,安装后Jenkins会在**/prometheus**路径暴露指标,例如:http://<jenkins_host>:8080/prometheus。
- 配置抓取:在Prometheus的prometheus.yml增加Job(示例抓取间隔5m,可按需调整):
- job_name: ‘jenkins’
scrape_interval: 5m
scrape_timeout: 3m
static_configs:
- targets: [‘jenkins.example.com’]
metrics_path: /prometheus
- 常用告警示例(PromQL):节点离线告警
- alert: JenkinsNodeOffline
expr: default_jenkins_nodes_online == 0
for: 2m
labels:
severity: warning
annotations:
summary: “Jenkins 节点离线”
description: “Jenkins 节点 {{ $labels.node }} 已离线超过 2 分钟”
- Grafana展示:添加Prometheus数据源,导入或自建面板;如需展示节点在线状态的最新值,可用查询:max by (node) (default_jenkins_nodes_online),面板选择Table + Instant模式便于查看最新状态。
三 主机与应用指标对照
| 维度 |
指标示例 |
采集方式 |
主要用途 |
| 主机资源 |
CPU、内存、磁盘IO、网络 |
Node Exporter :9100/metrics |
发现宿主机瓶颈、容量规划 |
| Jenkins节点 |
default_jenkins_nodes_online(1在线/0离线) |
Jenkins /prometheus |
及时发现Agent掉线 |
| 队列与执行器 |
Queue长度、Executor使用情况 |
Jenkins /prometheus |
判断是否需要扩容构建资源 |
| 构建健康 |
构建成功率、构建耗时、失败趋势 |
Jenkins /prometheus |
定位不稳定测试或问题代码 |
| 说明:Node Exporter与应用解耦,专注系统层;Jenkins Prometheus插件运行在JVM内,专注CI/CD业务层,两者互补。 |
|
|
|
四 告警与通知配置
- 构建结果通知:在Jenkins中安装Email Extension与Slack Notification等插件,按“失败/不稳定/恢复”等状态触发邮件或Slack消息,适合团队即时响应构建异常。
- 指标告警:使用Prometheus + Alertmanager对关键指标(如节点离线、队列积压、构建失败率突增)配置分级告警,结合路由与抑制减少告警风暴,保障SRE可观测性。
五 进程守护与应急
- 简单自愈脚本:通过Shell定时检查jenkins进程,若进程不存在则自动启动并记录时间,示例循环间隔60s;用于临时兜底,生产环境建议配合systemd或专业的进程管理/容器编排方案使用。
- 系统级监控补充:在Linux上启用sysstat(如sar)收集历史性能数据,用于容量分析与问题回溯,与Jenkins指标结合能更快定位根因。