Ubuntu Jenkins如何进行资源监控
导读:Ubuntu 上 Jenkins 资源监控实操指南 一 监控分层与关键指标 业务状态:最近一次构建结果、失败趋势、构建耗时、部署成功率。 运行健康:Jenkins 节点(Master/Agent)在线、Executor 使用率、构建队列长...
Ubuntu 上 Jenkins 资源监控实操指南
一 监控分层与关键指标
- 业务状态:最近一次构建结果、失败趋势、构建耗时、部署成功率。
- 运行健康:Jenkins 节点(Master/Agent)在线、Executor 使用率、构建队列长度、HTTP 响应时间。
- 基础设施:CPU、内存、磁盘 I/O、网络、JVM 堆与 GC 情况。
- 告警处置:构建失败、节点离线、队列积压、磁盘空间不足、响应超时等需及时通知与处置。
二 快速上手内置插件 Monitoring(JavaMelody)
- 安装:进入 Manage Jenkins → Manage Plugins,搜索并安装 Monitoring 插件(基于 JavaMelody)。
- 查看:进入 Manage Jenkins → Monitoring of Jenkins master,可查看 CPU、内存、HTTP 响应时间、当前请求数 等,并支持历史趋势与 HTML 报告,适合“开箱即用”的基础监控。
三 生产级方案 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 可视化与告警
- 在 Grafana 添加 Prometheus 数据源(URL:http://:9090),导入官方/社区 Jenkins 仪表盘(如 ID:9964),可查看 构建成功率、构建耗时、队列长度、节点在线状态、Executor 使用率 等。
- 典型告警规则示例(Prometheus):
- 节点离线
- 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 } } ” }
- 节点离线
四 命令行与 API 巡检与自动化
- 服务与端口
- 检查服务存活:systemctl is-active --quiet jenkins
- 检查端口监听:ss -ltnp | grep 8080
- 构建状态与日志
- 最新构建结果:curl -u 用户名:API_TOKEN http://< jenkins_host> :8080/job/< job_name> /lastBuild/api/json
- 指定构建:curl -u 用户名:API_TOKEN http://< jenkins_host> :8080/job/< job_name> /< build_number> /api/json
- 日志定位:/var/log/jenkins/jenkins.log
- 一键健康检查脚本示例(可按需调整阈值与通知)
- 检查项:服务存活、端口可达、最近一次构建结果、节点在线、磁盘空间、JVM 堆使用。
- 用法:chmod +x jenkins_health.sh & & ./jenkins_health.sh
- 示例脚本:
- #!/usr/bin/env bash
set -Eeuo pipefail
JENKINS_URL=“http://localhost:8080”
USER=“admin”
TOKEN=“your_api_token”
JOB=“your-deploy-job”
1) 服务与端口
systemctl is-active --quiet jenkins || { echo “Jenkins service DOWN”; exit 1; } ss -ltnp | grep -q :8080 || { echo “Port 8080 not listening”; exit 1; }2) 最近一次构建
LAST=$(curl -s -u “$USER:$TOKEN” “$JENKINS_URL/job/$JOB/lastBuild/api/json” | jq -r ‘.result // “UNKNOWN”’) [[ “$LAST” == “SUCCESS” ]] || { echo “Last build result: $LAST”; exit 2; }3) 节点在线(示例阈值:期望至少 1 个在线 Agent)
ONLINE=$(curl -s -u “$USER:$TOKEN” “$JENKINS_URL/computer/api/json” | jq ‘[.computer[] | select(.offline==false)] | length’) (( ONLINE > = 1 )) || { echo “Online agents: $ONLINE”; exit 3; }4) 磁盘空间(阈值:根分区 < 10% 空闲告警)
DF=$(df / | tail -1) USE=$(echo “$DF” | awk ‘{ print $5} ’ | tr -d ‘%’) (( USE < 90 )) || { echo “Root disk usage: ${ USE} %”; exit 4; } echo “Jenkins health check OK”
- #!/usr/bin/env bash
set -Eeuo pipefail
JENKINS_URL=“http://localhost:8080”
USER=“admin”
TOKEN=“your_api_token”
JOB=“your-deploy-job”
- 建议将脚本纳入 cron(如每 5 分钟),并结合 企业微信/钉钉/Slack Webhook 或 Prometheus Alertmanager 发送告警。
五 已有监控体系的集成与优化要点
- 第三方监控集成
- Zabbix:通过 HTTP Agent 或 JMX 采集 Jenkins 指标,配置触发器(如“JVM 内存使用率 > 80% 持续 5 分钟”)实现告警。
- Datadog:安装 Datadog Agent,开启 Jenkins 的 HTTP 指标接口 或 JMX,收集 构建成功率、队列时长 等并自定义 Dashboard 与告警。
- 故障排查与优化要点
- 连通性与端口:确认 8080 未被防火墙阻断(如 ufw allow 8080),必要时排查云安全组/本机防火墙。
- 服务与监听:使用 systemctl status jenkins、ss -ltnp | grep 8080 确认进程与端口正常;异常时查看 /var/log/jenkins/jenkins.log 定位插件/脚本/权限问题。
- JVM 与资源:检查 Java 版本兼容 与 堆内存 配置(如 -Xmx4g),必要时增大堆;结合 GC 日志 分析长时间 GC 导致的卡顿或失败;关注 磁盘空间 与 I/O 瓶颈。
- 节点与队列:在 Prometheus/Grafana 观察 节点在线、Executor 使用率、队列长度,节点掉线或队列长期积压时优先 扩容 Agent 或 优化 Pipeline 并发。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Jenkins如何进行资源监控
本文地址: https://pptw.com/jishu/784042.html
