Linux 上监控 Jenkins 的实用方案
一 监控分层与总体思路
二 快速落地 Prometheus + Grafana
- job_name: 'jenkins'
scrape_interval: 15s
scrape_timeout: 10s
static_configs:
- targets: ['jenkins.example.com:8080']
metrics_path: /prometheus
- alert: JenkinsNodeOffline
expr: default_jenkins_nodes_online == 0
for: 2m
labels:
severity: warning
annotations:
summary: "Jenkins 节点离线"
description: "Jenkins 节点 {{ $labels.node }} 已离线超过 2 分钟"
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_sizejenkins_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/构建/节点/队列 等业务指标,二者配合可完整覆盖监控需求。 |
四 命令行与日志的即时排查
top、htopiostat -x 1iftop、nethogsjava -jar jenkins-cli.jar -s http://localhost:8080 console http://your_server_ip:8080/job/<job_name>/lastBuildcurl -u 用户名:密码 http://your_server_ip:8080/job/<job_name>/lastBuild/api/jsonjournalctl -u jenkins 查看 systemd 日志。五 存储与容量管理要点