温馨提示×

Jenkins在CentOS上的监控与告警如何设置

小樊
33
2025-12-31 10:36:37
栏目: 智能运维

Jenkins在CentOS上的监控与告警实践

一、监控方案总览

  • 建议采用分层监控:系统层用 Node Exporter + Prometheus/Grafana 观测 CPU、内存、磁盘、网络;应用层用 Jenkins Prometheus Metrics Plugin 暴露 /prometheus 指标(如 Job、构建、节点、队列、Executor 等),在 Grafana 做可视化与阈值告警。该组合覆盖节点健康、任务执行、资源使用与趋势分析,适合在 CentOS 上长期稳定运行。

二、系统层监控与告警 Prometheus + Grafana

  • 安装与暴露指标
    • CentOS 安装并启动 Node Exporter(默认端口 9100),确认可访问 http://:9100/metrics
    • Jenkins 安装 Prometheus Metrics Plugin,确认可访问 http://:8080/prometheus
  • Prometheus 抓取配置示例 prometheus.yml
    • 抓取系统层
      • job_name: ‘node’ static_configs:
        • targets: [‘:9100’]
    • 抓取 Jenkins 应用层
      • job_name: ‘jenkins’ scrape_interval: 15s metrics_path: ‘/prometheus’ static_configs:
        • targets: [‘:8080’]
  • Grafana 可视化与告警
    • 添加 Prometheus 数据源,导入官方或社区 Jenkins 面板(如 ID 9964 等),展示 构建成功率、耗时、队列长度、Executor 使用、节点在线状态 等。
    • Grafana Alerting 中创建规则,例如:
      • 节点离线:expr: up{job=“jenkins”} == 0 for: 2m;严重度 warning;注解说明节点不可达。
      • 构建失败率上升:expr: increase(jenkins_job_build_failed_total[1h]) / increase(jenkins_job_build_total[1h]) > 0.1;严重度 critical;提示检查不稳定测试或代码回退。
      • 队列积压:expr: jenkins_queue_size > 10;严重度 warning;提示扩容 Executor 或优化作业。
  • 说明
    • Node Exporter 负责主机指标,Jenkins Prometheus 插件 负责 CI/CD 业务指标,二者互补,建议同时启用。

三、Jenkins 内建与插件监控

  • Monitoring 插件(JavaMelody)
    • 安装 Monitoring 插件后,访问 Manage Jenkins → Monitoring of Jenkins master 查看 内存、CPU、HTTP 响应时间、当前请求数 等,适合快速洞察 Master 健康状态与性能瓶颈。
  • Metrics 插件(可选,供外部采集)
    • 安装 Metrics 插件可暴露 /metrics 端点,便于 Zabbix 或自研采集器拉取 Jenkins 指标,实现统一监控平台接入。

四、构建结果通知与即时告警

  • 邮件通知(Email Extension Plugin)
    • 安装 Email Extension Plugin,在 Manage Jenkins → Configure System → Extended E-mail Notification 配置 SMTP(服务器、端口、SSL/TLS、认证),发送测试邮件验证。
    • 在任务配置的 Post-build Actions 选择 Editable Email Notification,设置收件人、主题、内容模板与触发条件(如 Failure、Unstable、Success、Fixed),可使用变量如 $PROJECT_NAME、$BUILD_NUMBER、$BUILD_STATUS、$BUILD_URL 丰富内容。
  • 钉钉通知(DingTalk 插件)
    • Jenkins 系统配置 添加 钉钉机器人(Webhook、关键词),或在 Pipeline 中使用 dingtalk 步骤发送 Markdown 消息。
    • 示例(Jenkinsfile post 块):
      • post { success { dingtalk( robot: ‘Jenkins_Dingding’, type: ‘MARKDOWN’, title: “成功: ${JOB_NAME}”, text: [“- 成功构建: ${JOB_NAME}\n- 版本: ${version}\n- 持续时间: ${currentBuild.durationString}\n- 详情: ${env.BUILD_URL}”] ) } failure { dingtalk( robot: ‘Jenkins_Dingding’, type: ‘MARKDOWN’, title: “失败: ${JOB_NAME}”, text: [“- 构建失败: ${JOB_NAME}\n- 版本: ${version}\n- 持续时间: ${currentBuild.durationString}\n- 详情: ${env.BUILD_URL}”] ) } }
    • 也可在任务配置里直接选择 钉钉通知时机机器人,快速启用。

五、落地检查清单

  • 确认 Jenkins URL系统管理员邮箱 正确,避免通知发不出去。
  • Prometheus 的 Targets 页面确认 nodejenkins 均为 UP,Grafana 面板能正常出图。
  • 邮件与钉钉均做一次“测试”或“模拟失败构建”,验证收件与内容模板。
  • 为关键告警设置 收敛与升级策略(如重复抑制、升级联系人、值班表),避免告警风暴。

0