首页主机资讯Jenkins在Ubuntu上的监控与报警

Jenkins在Ubuntu上的监控与报警

时间2026-01-22 00:01:03发布访客分类主机资讯浏览348
导读:监控分层与总体架构 业务状态:关注部署是否成功、最近一次构建结果、失败趋势、部署耗时。 运行健康:关注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: ‘node’ static_configs:
        • targets: [‘< node_exporter_host> :9100’]
  • 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 ExtensionEmail 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
Jenkins在Ubuntu中的持续集成实践 Ubuntu部署Jenkins的网络设置

游客 回复需填写必要信息