Jenkins 节点离线显示 Offline 原因及怎么重新连接

文章导读
Jenkins 节点显示 Offline 通常是因为构建代理进程崩溃或 Master 与 Agent 之间的网络通信中断,最推荐的处理方向是先检查代理端系统日志再重启服务。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 常见问题
  7. G 参考来源
A A

Jenkins 节点显示 Offline 通常是因为构建代理进程崩溃或 Master 与 Agent 之间的网络通信中断,最推荐的处理方向是先检查代理端系统日志再重启服务。

先说结论:Jenkins 节点离线主要由网络波动、磁盘空间不足或 Agent 进程意外终止导致,恢复连接需确保网络端口通畅并重启 Agent 服务。

  • 先确认:检查 Jenkins Master 管理界面中的节点日志报错信息
  • 先处理:验证网络连通性并重启离线的 Agent 进程
  • 再验证:在 Master 界面确认节点状态恢复为在线且可执行构建

命令速用版

以下命令用于在 Agent 机器上快速检查进程状态和网络连通性。

Linux 系统检查进程:

ps -ef | grep jenkins

Linux 系统重启服务(systemd):

sudo systemctl restart jenkins-agent

网络连通性测试(从 Agent 到 Master):

telnet <jenkins-master-ip> <port>

Windows 系统检查服务:

Jenkins 节点离线显示 Offline 原因及怎么重新连接
Get-Service -Name "JenkinsAgent"

为什么会这样

Jenkins 节点离线本质是 Master 与 Agent 之间的心跳检测失败。

Jenkins 架构中,Master 节点需要定期接收 Agent 发送的心跳信号以确认存活状态。如果 Agent 进程崩溃、服务器重启、防火墙阻断通信端口(默认动态端口或 50000)或磁盘空间耗尽导致无法写入日志,心跳信号就会中断,Master 界面随即显示 Offline 状态。

分步处理

按以下顺序排查可覆盖大多数离线场景。

步骤 1:查看 Master 端节点日志

登录 Jenkins Master 网页,进入“系统管理” > “节点管理”,点击离线节点名称,查看“日志”链接。记录具体的异常堆栈,如 Connection refused 或 IOException。

Jenkins 节点离线显示 Offline 原因及怎么重新连接

步骤 2:检查 Agent 端磁盘空间

磁盘空间不足会导致 Agent 无法写入临时文件或日志而退出。在 Agent 机器执行 df -h(Linux)或查看磁盘属性(Windows),确保根目录和工作目录有剩余空间。

步骤 3:验证网络端口

确认 Agent 能访问 Master 的通信端口。Jenkins 默认使用 TCP 端口进行通信,若配置了固定端口通常为 50000,若为动态则需检查防火墙规则。使用 telnet 或 curl 测试连通性。

步骤 4:重启 Agent 服务

根据安装方式重启服务。Linux systemd 服务使用 systemctl restart,Windows 服务使用服务管理器重启,JAR 包启动方式需重新执行 java -jar agent.jar 命令。

Jenkins 节点离线显示 Offline 原因及怎么重新连接

怎么验证是否生效

回到 Jenkins Master 的“节点管理”页面,刷新浏览器。

若节点图标由红色离线状态变为绿色在线状态,且“构建执行器”显示空闲或正在构建,说明连接已恢复。尝试触发一个简单构建任务,确认日志能正常输出。

常见坑

  • 时间不同步:Agent 与 Master 系统时间偏差过大可能导致 SSL 握手失败或认证过期,需配置 NTP 同步。
  • Java 版本不匹配:Agent 运行的 Java 版本低于 Master 要求版本会导致启动失败,检查 java -version
  • 防火墙策略变更:网络团队更新防火墙规则可能意外阻断 Jenkins 通信端口,需确认安全组放行。

常见问题

节点显示 Offline 但进程还在运行怎么办?

这通常是网络单向中断或心跳包丢失,建议直接在 Master 界面点击“重新连接”按钮,若无效再重启 Agent 进程。

Jenkins Agent 日志在哪里查看?

Linux 系统通常位于 /var/log/jenkins/ 或启动脚本指定的输出文件,Windows 系统通常在服务日志或启动控制台输出中。

如何防止节点频繁离线?

建议配置进程守护工具(如 systemd 或 Windows 服务恢复选项),设置进程崩溃后自动重启,并监控磁盘空间和网络稳定性。

参考来源

  • Jenkins 官方文档 - Connecting agents: https://www.jenkins.io/doc/book/managing/connecting-agents/
  • Jenkins 官方文档 - Viewing logs: https://www.jenkins.io/doc/book/system-administration/viewing-logs/