温馨提示×

如何在Linux上监控Jenkins

小樊
43
2026-01-04 18:48:36
栏目: 智能运维

Linux 上监控 Jenkins 的实用方案

一 监控分层与总体思路

  • 建议将监控分为三层:
    1. 主机层(CPU、内存、磁盘 I/O、网络),用 Node Exporter 采集;
    2. Jenkins 应用层(构建成功率、耗时、队列与 Executor、节点在线状态),用 Jenkins Prometheus Metrics Plugin 暴露 /prometheus 指标;
    3. 可视化与告警层,用 Prometheus + Grafana 展示与告警。两者分工明确:Node Exporter 看机器资源,Jenkins 插件看 CI/CD 业务指标。

二 快速落地 Prometheus + Grafana

  • 安装与启用指标
    • 在 Jenkins 插件管理中安装 Prometheus Metrics Plugin;安装后自动暴露 http://<jenkins_host>:8080/prometheus
  • Prometheus 抓取配置 prometheus.yml
    • 示例:
      - job_name: 'jenkins'
        scrape_interval: 15s
        scrape_timeout: 10s
        static_configs:
          - targets: ['jenkins.example.com:8080']
        metrics_path: /prometheus
      
  • 常用告警规则 Prometheus
    • 节点离线(示例阈值 2 分钟):
      - alert: JenkinsNodeOffline
        expr: default_jenkins_nodes_online == 0
        for: 2m
        labels:
          severity: warning
        annotations:
          summary: "Jenkins 节点离线"
          description: "Jenkins 节点 {{ $labels.node }} 已离线超过 2 分钟"
      
  • Grafana 展示
    • 添加 Prometheus 数据源,导入 Jenkins 相关面板(可搜索社区面板),常用查询:
      • 节点在线状态:max by (node) (default_jenkins_nodes_online)
      • 构建成功率:sum(rate(jenkins_job_build_status{result="SUCCESS"}[1h])) / sum(rate(jenkins_job_build_status[1h]))
      • 队列长度:jenkins_queue_size
      • Executor 使用:jenkins_executor_in_use / jenkins_executor_total
        以上步骤即可在数分钟内完成从指标暴露、抓取到可视化与告警的闭环。

三 主机与应用指标对照采集

维度 推荐工具 关键指标 典型查询或路径
主机 CPU/内存/磁盘/网络 Node Exporter cpu_usage_seconds_total、mem_available_bytes、node_disk_read_bytes_total、node_network_receive_bytes_total 在 Prometheus 查询对应指标,或用 Node Exporter 默认 :9100/metrics
Jenkins 节点在线 Jenkins Prometheus Metrics Plugin default_jenkins_nodes_online{node=“…”} max by (node)(default_jenkins_nodes_online)
构建成功率/耗时 Jenkins Prometheus Metrics Plugin jenkins_job_build_status、jenkins_job_duration_seconds 成功率:sum(rate(jenkins_job_build_status{result="SUCCESS"}[1h]))/sum(rate(jenkins_job_build_status[1h]))
队列与 Executor Jenkins Prometheus Metrics Plugin jenkins_queue_size、jenkins_executor_in_use、jenkins_executor_total 队列:jenkins_queue_size;利用率:jenkins_executor_in_use/jenkins_executor_total
说明:Node Exporter 与应用解耦,采集系统层面;Jenkins 插件运行在 JVM 内,采集 Job/构建/节点/队列 等业务指标,二者配合可完整覆盖监控需求。

四 命令行与日志的即时排查

  • 实时资源查看
    • CPU/内存:tophtop
    • 磁盘 I/O:iostat -x 1
    • 网络:iftopnethogs
  • Jenkins 任务与日志
    • 查看最近一次构建日志:java -jar jenkins-cli.jar -s http://localhost:8080 console http://your_server_ip:8080/job/<job_name>/lastBuild
    • 通过 REST API 获取构建结果:curl -u 用户名:密码 http://your_server_ip:8080/job/<job_name>/lastBuild/api/json
  • 系统日志定位服务异常
    • Jenkins 服务日志常见路径:/var/log/jenkins/jenkins.log(Debian/Ubuntu 常见),结合 journalctl -u jenkins 查看 systemd 日志。

五 存储与容量管理要点

  • 工作空间与构建产物是容量大头,建议:
    • 定期清理旧构建与制品(如按天数/次数保留策略);
    • JENKINS_HOME 放在 SSD 上以缓解 I/O 瓶颈;
    • 监控 /var/lib/jenkins 所在磁盘使用率,及时扩容或归档历史数据;
    • 做好备份:主目录、配置文件、日志与插件的定期归档与异地保存。上述做法可显著降低因磁盘耗尽导致的故障概率。

0