温馨提示×

Jenkins Linux版如何进行性能监控

小樊
43
2025-12-14 05:25:17
栏目: 智能运维

Jenkins Linux版性能监控实践

一 监控体系总览

  • 建议采用分层监控:主机层(CPU、内存、磁盘、I/O、网络)、JVM与应用层(线程、队列、构建时长、插件健康)、可视化与告警层(Grafana/Prometheus 或厂商采集器)。
  • 典型组件与用途:
    • 主机层:sysstat(sar/iostat)、top/htopiftop/nethogsdf/du
    • Jenkins应用层:Metrics 插件(暴露 /metrics)、Monitoring 插件(JavaMelody)
    • 可视化与告警:Prometheus + Grafana,或第三方采集器(如 Datakit)。

二 快速上手步骤

  • 主机层监控
    • 安装并启用 sysstat:执行 sudo apt-get install -y sysstat 并在 /etc/default/sysstat 中将 ENABLED="false" 改为 ENABLED="true",随后使用 sar -u 1 60iostat -x 1 60df -htop/htop 等命令持续观测资源使用与瓶颈。
  • Jenkins应用层监控
    • 安装 Metrics 插件:在 Manage Jenkins → Plugins 搜索并安装,安装后在 Manage Jenkins → System Configuration → Metrics 点击 Generate 生成 Access Key,Jenkins 将暴露 /metrics 端点(供 Prometheus 或采集器拉取)。
    • 安装 Monitoring 插件(JavaMelody):在 Manage Jenkins 中可直接进入 Monitoring of Jenkins master 仪表盘,查看 内存、CPU、HTTP 响应时间、当前请求数 等核心指标。
  • 可视化与告警
    • 使用 Prometheus + Grafana:在 Prometheus 配置中新增 job 抓取 http:///metrics,在 Grafana 导入 Jenkins 概览面板进行可视化与阈值告警配置。
    • 使用 Datakit 采集:在 Jenkins → Metrics 生成 Access Key,在 Datakit 的 /usr/local/datakit/conf.d/jenkins/jenkins.conf 中配置 urlkey,重启 Datakit 后即可在平台查看 executor、queue、JVM、系统负载 等指标面板。

三 关键指标与阈值建议

  • 主机资源
    • CPU:持续高于 80% 需关注是否存在构建并发过多或 I/O 等待。
    • 内存:可用内存长期低于 10% 或频繁 swap,需优化构建机规格或限制并发。
    • 磁盘:构建工作空间与日志所在分区使用率超过 80% 需清理或扩容。
    • I/O:await、svctm 偏高且 iowait 上升,说明磁盘成为瓶颈。
  • Jenkins 队列与执行器
    • 关注 queue_size / queue_blocked / queue_pending / queue_stuck,队列持续增长或卡住表示资源不足或存在阻塞任务。
    • 关注 executor_free_count / executor_in_use_count / executor_count,空闲过少说明并发不足或存在长时任务。
  • JVM 与插件健康
    • 关注 vm_cpu_load、vm_blocked_count、vm_count、vm_memory_total_used,结合 GC 日志判断是否存在内存泄漏或线程阻塞。
    • 关注 plugins_active / plugins_failed,失败插件可能影响稳定性。

四 告警与排障

  • 告警配置
    • Prometheus:对关键指标(如 queue_size > 10system_cpu_load > 0.8executor_free_count == 0 持续 5 分钟)设置 Alertmanager 通知(邮件、企业微信、钉钉等)。
    • 邮件与扩展:在 Jenkins 中安装 Email ExtensionEmail Extension Template 插件,结合构建结果与监控阈值发送通知。
    • 第三方告警:可使用 ElastAlert 对日志或指标阈值进行规则化告警。
  • 快速排障命令
    • 资源与负载:top/htopfree -mdf -hiostat -x 1 60sar -u 1 60iftop/nethogs
    • Jenkins 状态与队列:通过 Jenkins REST API 获取节点与构建信息,例如 curl -u 用户名:密码 http://<jenkins>/job/<job_name>/lastBuild/api/json;结合 Monitoring 插件 仪表盘定位 HTTP 与线程问题。

0