温馨提示×

Linux下Jenkins配置怎样实现远程监控

小樊
31
2025-12-12 06:02:44
栏目: 智能运维

Linux下Jenkins远程监控配置指南

一、监控目标与总体架构

  • 监控对象分层:
    • Jenkins 应用层:Job 构建成功率/耗时、队列长度、Executor 使用、节点在线状态等。
    • 操作系统层:CPU、内存、磁盘、网络等资源使用。
  • 推荐架构:
    • 应用层指标用 Jenkins Prometheus Metrics 插件 暴露 /prometheus 端点,由 Prometheus 抓取,Grafana 可视化与告警。
    • 系统层指标用 Node Exporter 采集,Prometheus 一并抓取展示。
    • 若仅需轻量自检与健康探针,可使用 Metrics 插件/ping、/healthcheck、/threads、/metrics 端点。

二、快速落地 Prometheus Grafana 监控

  • 步骤1 安装插件并验证端点
    • 在 Jenkins 管理后台安装 Prometheus Metrics Plugin,安装完成后确认可访问 http://:8080/prometheus,能看到以 jenkins_ 为前缀的指标。
  • 步骤2 配置 Prometheus 抓取
    • prometheus.yml 增加抓取任务(示例):
      • job_name: ‘jenkins’ scrape_interval: 15s metrics_path: ‘/prometheus’ static_configs:
        • targets: [‘<jenkins_host>:8080’]
    • 重启 Prometheus,在 UI 的 Targets 页面确认 jenkins 任务状态为 UP
  • 步骤3 Grafana 可视化与告警
    • 添加 Prometheus 数据源,导入 Jenkins 官方或社区仪表盘(如 ID 9964 等),展示节点在线、构建成功率、队列与耗时等面板。
    • 在 Prometheus 配置告警规则示例(节点离线):
      • alert: JenkinsNodeOffline expr: default_jenkins_nodes_online == 0 for: 2m labels: severity: warning annotations: summary: “Jenkins 节点离线” description: “Jenkins 节点 {{ $labels.node }} 已离线超过 2 分钟”。

三、轻量替代 Metrics 插件与系统层监控

  • 轻量应用监控(无 Prometheus 时)
    • 安装 Metrics 插件,生成 Access Key,通过 /metrics/ 获取 JSON 指标;使用 /ping 做存活探测,用 /healthcheck 查看磁盘、插件等健康项,用 /threads 排查线程问题。
  • 系统资源监控
    • 在 Jenkins 所在主机部署 Node Exporter(默认端口 9100),Prometheus 同时抓取 Node Exporter :9100/metricsJenkins :8080/prometheus,实现“应用+系统”一体化观测。
  • 主机防火墙放行(示例)
    • Ubuntu/Debian:sudo ufw allow 8080,9100/tcp
    • CentOS/RHEL:sudo firewall-cmd --permanent --add-port=8080,9100/tcp && sudo firewall-cmd --reload。

四、远程访问与安全加固

  • 反向代理与 HTTPS
    • 使用 Nginx/Apache 反向代理 8080,启用 TLS/HTTPS 与强认证,避免在公网暴露明文端口。
  • 访问控制
    • Manage Jenkins → Security 中启用安全策略,禁用匿名访问,使用强密码/API Token;为 Prometheus 抓取创建只读账号或采用 IP 白名单。
  • 远程触发与自动化
    • 通过 Jenkins REST API 远程获取构建状态、触发任务等,例如:
      • curl -u : http://:8080/job/<job_name>/lastBuild/api/json
    • 如需从 Jenkins 主动远程执行命令/传输文件,可安装 Publish Over SSH 插件,在“系统配置”中添加目标主机 SSH 信息(密钥认证优先)。

0