Jenkins在Ubuntu上的监控与报警
导读:监控分层与总体架构 业务状态:关注部署是否成功、最近一次构建结果、失败趋势、部署耗时。 运行健康:关注Jenkins 节点(Master/Agent)在线、Executor 使用率、构建队列长度、HTTP 响应时间。 基础设施:关注CPU...
监控分层与总体架构
- 业务状态:关注部署是否成功、最近一次构建结果、失败趋势、部署耗时。
- 运行健康:关注Jenkins 节点(Master/Agent)在线、Executor 使用率、构建队列长度、HTTP 响应时间。
- 基础设施:关注CPU、内存、磁盘 I/O、网络、JVM GC 与堆使用。
- 告警处置:对构建失败、节点离线、队列积压、磁盘空间不足、响应超时等设定分级告警与通知渠道(邮件、IM、短信/电话)。
快速落地步骤
- 内置插件开箱即用
- 安装Monitoring 插件(JavaMelody):进入Manage Jenkins → Manage Plugins 安装后,访问 Manage Jenkins → Monitoring of Jenkins master 查看仪表盘,覆盖内存、CPU、HTTP 响应时间、当前请求数等,适合单体或快速起步。
- 安装Performance Plugin:用于分析构建耗时、测试用例通过率与构建步骤耗时,定位慢构建与性能退化。
- 构建过程与状态观测
- 通过 Jenkins Web 界面查看构建历史、日志与结果,快速定位失败阶段与根因。
- 通过 Jenkins REST API 获取构建结果,便于脚本化巡检与对接外部告警系统,例如:
- 最新构建结果:curl -u 用户名:密码 http://< jenkins_host> :8080/job/< job_name> /lastBuild/api/json
- 指定构建:curl -u 用户名:密码 http://< jenkins_host> :8080/job/< job_name> /< build_number> /api/json
- 命令行快速排查
- 服务与端口:systemctl status jenkins;ss -ltnp | grep 8080
- 资源与 I/O:top/htop、iostat -x 1、iftop/nethogs
- 日志定位:/var/log/jenkins/jenkins.log(启动失败、插件异常、部署脚本报错等)。
Prometheus Grafana 可观测性方案
- 指标采集
- 在 Jenkins 安装Prometheus Metrics Plugin,Jenkins 自动暴露 /prometheus 指标端点(如:http://< jenkins_host> :8080/prometheus),包含Job/构建、节点(Agent)、队列、Executor等 CI/CD 业务指标。
- 在主机安装Node Exporter(默认 :9100/metrics)采集CPU、内存、磁盘、网络等系统指标,与应用指标解耦。
- Prometheus 配置示例
- 抓取 Jenkins:
- job_name: ‘jenkins’
metrics_path: ‘/prometheus’
static_configs:
- targets: [‘< jenkins_host> :8080’]
- job_name: ‘jenkins’
metrics_path: ‘/prometheus’
static_configs:
- 抓取主机:
- job_name: ‘node’
static_configs:
- targets: [‘< node_exporter_host> :9100’]
- job_name: ‘node’
static_configs:
- 抓取 Jenkins:
- Grafana 可视化与告警
- 添加 Prometheus 为数据源,导入社区 Jenkins 仪表盘(ID:9964),展示构建成功率、构建耗时、队列长度、节点在线状态、Executor 使用率等。
- 典型告警规则示例(Prometheus/Alertmanager):
- 节点离线
- alert: JenkinsNodeOffline expr: default_jenkins_nodes_online == 0 for: 2m labels: { severity: warning } annotations: { summary: “Jenkins 节点离线”, description: “Jenkins 节点 { { $labels.node } } 已离线超过 2 分钟” }
- 构建失败
- alert: JenkinsJobFailed expr: jenkins_job_last_build_result{ result=“FAILURE”} == 1 for: 0m labels: { severity: critical } annotations: { summary: “Jenkins 任务失败”, description: “Job { { $labels.job } } 最近一次构建失败” }
- 队列积压
- alert: JenkinsQueueBacklog expr: jenkins_queue_size > 10 for: 5m labels: { severity: warning } annotations: { summary: “Jenkins 队列积压”, description: “当前队列长度 { { $value } } ” } 。
- 节点离线
告警渠道与配置
- 内置与插件告警
- 邮件告警:安装Email Extension 与 Email Extension Template 插件,在Manage Jenkins → Configure System 配置 SMTP(如端口 465/SSL),可用授权码替代密码;在任务“构建后操作”添加邮件通知,支持自定义模板(如 BUILD_STATUS、PROJECT_NAME、BUILD_NUMBER、BUILD_URL 等变量)。
- IM 通知:通过 Slack Notification 插件将构建失败、节点离线等事件推送到指定频道,便于团队即时响应。
- 第三方告警路由
- 使用 Prometheus Alertmanager 对接邮件、钉钉、企业微信、PagerDuty等渠道,统一管理告警分组、抑制、静默与路由,避免遗漏关键事件。
瓶颈定位与优化建议
- 系统资源不足
- 若 Jenkins 进程 CPU/内存 高企,考虑增加 CPU 核数或调整 JVM 堆内存(如在 /etc/default/jenkins 中设置 JAVA_OPTS=“-Xmx4g -Xms2g”);内存紧张时可启用 swap(如 swapon /dev/sdb1)。
- 构建队列过长
- 增加 Executor 数量(Manage Jenkins → Configure System → # of executors),或将大型 Job 拆分为并行子 Job,提升吞吐。
- 构建过程缓慢
- 使用 Build Time Analyzer 插件定位耗时步骤(如 mvn install),优化脚本(如跳过测试、缓存依赖、并行构建),并精简未使用插件以降低插件开销。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Jenkins在Ubuntu上的监控与报警
本文地址: https://pptw.com/jishu/789271.html
