温馨提示×

Ubuntu Jenkins如何实现远程监控

小樊
42
2025-11-22 19:27:40
栏目: 智能运维

Ubuntu 上实现 Jenkins 远程监控的可落地方案

一 监控目标与总体架构

  • 监控对象与指标
    • Jenkins 主节点CPU、内存、磁盘、HTTP 响应时间、在线用户、线程、构建队列/执行器等。
    • 构建与作业构建成功率、构建时长、队列等待时长、失败趋势等。
    • 节点与代理在线/离线状态、空闲/忙碌执行器数量、系统资源等。
  • 推荐架构
    • 主机与应用指标:Prometheus 抓取 /prometheus/metrics,Grafana 可视化与告警。
    • Jenkins 内部健康与性能:内置 Monitoring(JavaMelody) 插件仪表盘。
    • 任务与构建事件:Jenkins REST API 拉取构建结果与趋势。
    • 命令行与自动化jenkins-cli.jarSSH CLI 做远程巡检与批量操作。
    • 企业既有监控:Zabbix 通过脚本采集 /metrics 接口数据入库与告警。

二 快速落地步骤

  • 启用并验证内置监控
    • 安装插件:Manage Jenkins → Plugins → Monitoring(JavaMelody)。
    • 访问仪表盘:Manage Jenkins → Monitoring of Jenkins master,查看 内存、CPU、HTTP 响应时间、当前请求数 等。
  • 暴露指标给 Prometheus
    • 安装插件:Prometheus metrics(不同发行版插件名可能略有差异)。
    • 配置权限:为监控专用账号生成 API Token,并在 Manage Jenkins → Configure Global Security 中为该账号授予读取权限(至少 Overall/Read)。
    • 验证端点:浏览器访问 http://<JENKINS_URL>/prometheus(或 /metrics),应返回指标文本或 JSON。
  • 配置 Prometheus 抓取
    • prometheus.yml 增加抓取任务(示例):
      • job_name: “jenkins” metrics_path: “/prometheus/” scheme: http bearer_token: “<your_jenkins_token>” static_configs:
        • targets: [“<JENKINS_IP>:<JENKINS_PORT>”]
    • 热加载或重启 Prometheus,确认 Targets 页面状态为 UP
  • Grafana 可视化
    • 添加 Prometheus 数据源,导入 Jenkins 仪表盘模板(如 ID:9964),按需调整面板与告警阈值。

三 命令行与 API 远程巡检

  • 使用 jenkins-cli.jar
    • 下载:wget http://<JENKINS_URL>/jnlpJars/jenkins-cli.jar
    • 触发构建(API Token 认证更安全):
      • java -jar jenkins-cli.jar -s http://<JENKINS_URL> -auth :<API_TOKEN> build -f -v
    • 可将 用户名:API Token 写入文件(如 .jenkins-token),使用 -auth @.jenkins-token 引用。
  • 使用 SSH CLI
    • 启用 Jenkins SSH ServerManage Jenkins → Configure Global Security → SSH Server,可设置固定端口(如 8090)。
    • 获取监听端口:
      • curl -Lv http://<JENKINS_URL>/login 2>&1 | grep ‘X-SSH-Endpoint’
    • 添加公钥到目标 Jenkins 用户Public Keys,之后可远程执行命令:
      • ssh -l -p 8090 <JENKINS_HOST> who-am-i
      • ssh -l -p 8090 <JENKINS_HOST> help
      • ssh -l -p 8090 <JENKINS_HOST> build -f -v
  • 使用 REST API 获取构建状态
    • 示例:
      • curl -u :<API_TOKEN> http://<JENKINS_URL>/job//lastBuild/api/json
    • 可结合脚本定时拉取并推送到企业告警平台或写入时序库。

四 企业级监控集成 Zabbix

  • 部署 Metrics 插件 并生成 Access Key,验证 /metrics 接口返回 JSON 指标。
  • Zabbix Agent 主机放置采集脚本(Python/Shell),脚本通过 Access Key 请求 /metrics,按需扁平化并输出指定指标值。
  • Zabbix Server 创建 UserParameter,例如:
    • Key:jenkins.metrics[gauges.jenkins.node.count.value.value]
    • 更新间隔:如 30s
  • 创建 监控项、触发器与仪表盘,对 节点数、构建失败、线程死锁、磁盘空间 等关键指标进行告警。

五 安全与网络要点

  • 访问控制
    • 禁用匿名访问,使用 强密码/API Token;为 Prometheus 抓取与 Zabbix 采集创建最小权限专用账号。
    • 启用 CSRF 保护代理/反向代理白名单
  • 传输与端口
    • 优先使用 HTTPS 访问 Jenkins Web/APISSH CLI 默认使用 22 端口(或自定义端口),Jenkins SSH Server 端口(如 8090)需纳入防火墙策略。
    • 如需 JNLP 代理 通信,开放 50000/TCP(仅限受信网络)。
  • 合规与审计
    • 定期轮换 API Token/SSH 密钥,开启 构建日志保留策略审计日志,对敏感作业启用 参数化与凭据隔离

0