1152 字
6 分钟
Beszel 两台机器掉线排查记录

一句话结论:Beszel agent 连不上 hub 时,docker-compose 部署优先重置 fingerprint 和 hub token;二进制部署如果经过反向代理仍失败,可以先绕过域名,直接使用 hub IP 验证链路。

1. 问题背景#

我部署了 Beszel,后面发现有两台机器挂了:

  1. A 服务器:使用 docker-compose 部署
  2. B 服务器:使用二进制方式部署

虽然表面现象都像是 agent 没有正常连上 hub,但最终根因并不一样。

2. A 服务器排查过程#

A 服务器是之前已经跑起来过的,后面状态异常。

2.1 先查资料#

我先搜了一下 Google,找到一篇和我遇到的问题比较接近的讨论:

2.2 先检查 fingerprint 和 token#

根据这篇讨论,我先看了 A 服务器的 fingerprint,发现它和 hub 里 /settings/tokens 看到的不一致。

一开始我的思路很直接:既然两边不一致,那先改成一致再说。

但改完之后问题依旧,agent 还是没有恢复。

2.3 最终修复方式#

后面我直接把 agent 本地的 fingerprint 删掉,同时把 hub 里的 token 清空,再重新启动 docker,结果就恢复了。

我这里实际做的事情是:

  1. 删除 /var/lib/beszel-agent/fingerprint
  2. 清空 hub 里 /settings/tokens
  3. 重启 docker 对应服务

最终 A 服务器恢复正常。

2.4 小结#

对于 docker-compose 部署的 Beszel agent,如果已经出现 fingerprint / token 状态不一致,并且单纯改成一致仍然无效,那更直接的做法是:重置 fingerprint 和 token,让 agent 重新建立关系。

3. B 服务器排查过程#

B 服务器不是掉线,而是第一次部署就一直没成功

3.1 一开始的怀疑点#

B 服务器走的是二进制安装方式。排查时我注意到安装脚本里会涉及一个具体域名,也就是 Beszel hub 的域名。

而我的 hub 前面套了 Nginx Proxy Manager,所以我当时的怀疑是:

  • agent 到 hub 的连接过程里可能依赖 websocket
  • Nginx Proxy Manager 这层代理没有把 Beszel hub 的 websocket 正确处理好

这一步我没有继续先深挖代理配置,而是先做了一个更直接的验证:绕过域名和代理链路,看 agent 能不能直接连上 hub。

3.2 最终修复方式#

所以我把二进制安装脚本里的 hub 地址改成了 Beszel hub 的 IP 地址,然后卸载后重新安装,最后启动成功。

这部分我参考的是官方文档:

3.3 小结#

对于二进制部署的 Beszel agent,如果首次安装一直失败,而 hub 前面又套了反向代理,那应该优先排除这些问题:

  • 域名解析
  • 代理转发
  • websocket 链路

这种场景下,先把 hub 地址改成 IP 做验证,是一个很快的排查办法。

4. 两个问题的区别#

虽然表面现象都是 agent 没起来,但本质上这两个问题并不一样:

服务器部署方式问题类型最终处理方式
A 服务器docker-compose运行一段时间后异常删除 fingerprint,清空 hub token,重启服务
B 服务器二进制部署首次安装失败将 hub 地址改为 IP,卸载后重新安装

所以这次排查里我最大的体会是:不要因为现象一样,就默认根因一样。

5. 这次排查的经验#

  1. 先看已有案例。 遇到这类比较新的工具,GitHub discussion 往往比零散博客更有效。
  2. 先做最短链路验证。 如果怀疑代理有问题,就先绕过代理;如果怀疑身份信息异常,就先重置本地状态。
  3. 先区分“掉线”还是“首次部署失败”。 这两个场景的排查方向完全不一样。
  4. 表面同类问题,不代表根因一致。 A 服务器更像状态异常,B 服务器更像接入链路异常。

6. 总结#

这次 Beszel 的问题,A 服务器最终是通过 重置 fingerprint 和 token 解决的,B 服务器最终是通过 绕过域名代理,直接使用 hub IP 重装 解决的。

如果后面再遇到类似问题,我会优先按这个顺序排查:

  1. 先区分是老机器掉线,还是新机器首次接入失败
  2. 老机器优先检查 fingerprint / token
  3. 新机器优先检查域名、代理和 websocket 链路
  4. 先用最短路径验证,再决定要不要继续深挖代理配置
Beszel 两台机器掉线排查记录
https://www.hzhi.top/posts/beszel-agent-troubleshooting/
作者
Jim的独立博客
发布于
2026-03-18
许可协议
CC BY-NC-SA 4.0