云计算百科
云计算领域专业知识百科平台

多台服务器不想上重型监控?用 Beszel 搭一套轻量主机与 Docker 看板

多台服务器不想上重型监控?用 Beszel 搭一套轻量主机与 Docker 看板

前言

手里只有一两台服务器时,我通常不会一上来就搭很重的监控体系。真正麻烦往往发生在机器慢慢变多以后:极空间上跑着 Docker,旁边还有 Linux 主机和 Windows 电脑,平时没事各自安静运行,一旦 CPU、内存、磁盘或者容器出了问题,又得一台台登录查看。对我来说,这种规模更需要的是一个轻量、能快速集中看状态的入口,而不是为了监控几台机器,先给自己增加一套更难维护的监控平台。尤其是家里和小团队环境,监控本身最好别变成新的运维负担;我更希望打开一个页面就能先判断哪台机器有异常,再决定要不要继续 SSH 进去排查。

这次我在极空间上用 Docker 部署 Beszel Hub,把 Web 端口映射到 8091;随后分别演示 Docker 方式的 beszel-agent 和 Windows PowerShell 安装方式,让不同主机接进同一个看板,再实际查看主机指标、Docker 容器、日志和设备详情。局域网链路跑通以后,再安装 cpolar,把 Beszel 的 8091 页面提供到公网,先验证随机地址,再配置固定二级子域名 beszel。我更关心的是 Hub、Agent 和公网入口三层能不能各自跑通,而不是看到一个漂亮首页就直接把“多服务器监控”算作完成。

1. Beszel 适合什么样的监控场景?

Beszel 的定位比较直接:

用一个 Hub 集中看多台主机,再通过 Agent 把各台机器的数据送回来。

当前功能入口里包括:

  • CPU、内存、磁盘、网络等主机指标;
  • Docker 容器统计;
  • 历史数据;
  • 告警;
  • Web 管理界面;
  • 多用户、OAuth、API 和自动备份等能力。

这次真正动手跑的是更基础也更关键的一条链:

极空间 Beszel Hub → Linux / Windows Agent → 主机与容器信息 → Web 看板。

我更喜欢先把这条最基本的监控链跑稳,再去考虑更多扩展。

2. 先通过 SSH 登录极空间

先在极空间中开启:

SSH 服务

然后使用 Windows PowerShell 或 Mac Terminal 连接:

ssh root@IP

连接成功后继续后面的 Docker 操作。

957c00e3b3f0ce8aa95df96aa41b8715

如果极空间还没有开启 SSH,需要先把 SSH 这一层准备好。

3. 确认 Docker 环境

接着检查 Docker:

docker -v
systemctl status -v

image-20251017103712618

Beszel Hub 这次通过 Docker Compose 部署,所以在继续之前,至少先确认 Docker 环境已经可用。

4. 创建 Beszel 安装目录

创建目录并进入:

sudo mkdir -p /docker/beszel
cd /docker/beszel

81aa7f9e7409e2e5b1d2baf1dfab4cd7

这次把 Hub 的 Compose 文件和持久化目录都集中放在:

/docker/beszel

下面。

5. 用 Docker Compose 部署 Beszel Hub

创建:

docker-compose.yml

内容如下:

version: "3"
services:
beszel:
image: henrygd/beszel
container_name: beszel
restart: unless-stopped
ports:
8091:8090
volumes:
– ./beszel_data:/beszel_data
– ./beszel_socket:/beszel_socket

这里几个参数需要先看清:

  • 镜像:henrygd/beszel
  • 容器名:beszel
  • 重启策略:unless-stopped
  • 宿主机端口:8091
  • 容器端口:8090
  • 数据目录:./beszel_data
  • Socket 目录:./beszel_socket

然后启动:

docker-compose up -d

290150576c397f32f09152c55d9f2ab7

部署完成以后,在浏览器访问:

http://极空间IP:8091

44b2eff8966762aebf29a8d6cea189a1

页面能正常打开以后,Hub 这一层就已经跑起来。

6. 第一次进入 Beszel,先注册管理账号

第一次打开 Beszel,需要先注册账户和密码。

229f96fa53a5ce34c1a160ca5e0b23ab

完成注册以后进入主页。

image-20260414174623380

到这里我只会确认:

Beszel Hub → 8091 → Web 页面

已经正常。

真正的监控数据还要等 Agent 接入以后才有意义。

7. 第一台主机:用 Docker 跑 beszel-agent

接下来开始添加被监控主机。

如果目标机器有 Docker,可以直接运行 Agent 容器:

docker run -d –name beszel-agent –network host –restart unless-stopped -v /var/run/docker.sock:/var/run/docker.sock:ro -v beszel_agent_data:/var/lib/beszel-agent -e KEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEVghS28S9ON4Ppffa2K2JgBiqSiSACPKk6GTYJwnfe/" -e LISTEN=45876 -e TOKEN="1380-d81b442ca4-2275-dfc4219154" -e HUB_URL="http://192.168.50.213:8091" henrygd/beszel-agent

20357ead5e44a64ddbe8d2463ffc2453

Agent 启动以后,页面会继续显示需要添加的主机信息。

a5fc7be5374a21cfe48f7c88acccf076

然后填写执行这条命令的主机 IP,再点击:

添加系统

8beb7e5e0244466f2bf4e88866f4040a

回到首页刷新。

80ace1048c580a5e998d524062bac617

这时已经可以看到新加入的监控主机。

这一层真正形成的是:

被监控主机 Agent → Beszel Hub → Web 看板。

这里的 KEY、TOKEN、HUB_URL 和 45876 都属于 Agent 接入参数。实际增加其他主机时,应使用对应系统添加流程里生成或要求的参数,不要把一台机器的接入信息当成所有主机的固定模板。

8. 没有 Docker 的 Windows 主机也能接入

如果目标机器没有 Docker,也可以走二进制 / 服务方式。

这里演示的是 Windows PowerShell:

& iwr -useb https://get.beszel.dev -OutFile "$env:TEMP\\install-agent.ps1"; & Powershell -ExecutionPolicy Bypass -File "$env:TEMP\\install-agent.ps1" -Key "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIEVghS28S9ON4Ppffa2K2JgBiqSiSACPKk6GTYJwnfe/" -Port 45876 -Token "1380-d81b442ca4-2275-dfc4219154" -Url "http://192.168.50.213:8091"

322062a7d5ec8be979623549597e434d

执行后继续完成 Agent 安装。

900424d32b9c5b8ca19a83fa0fea2c8c

回到 Beszel,添加 Windows 主机信息。

6f842fee964050633556ffdb6575c4e6

添加完成以后,Windows 主机已经出现在页面里。

420e937fa29e6f1916aafaba50129cbf

这一步说明 Beszel 的监控对象不必全部采用同一种 Agent 部署方式。

当前实际展示了两条:

Docker Agent → Linux / 服务器主机

以及:

PowerShell 安装 Agent → Windows 主机。

9. 主机接进来以后,实际能看到什么?

点击刚才添加的客户端,可以进入详细监控页面。

image-20260414175352808

这里才是我真正关心的部分:

Agent 有没有持续把主机状态送回来。

如果只是系统名称出现在列表里,但后面的 CPU、内存、磁盘和网络信息没有正常变化,我不会把它当成接入成功。

10. Docker 容器信息也能集中查看

点击右上角的容器入口。

image-20260414175435705

可以看到当前主机上 Docker 容器的详细信息。

image-20260414175504947

对于极空间这种本身就会跑很多容器的设备,这一块很实用。

至少不必为了确认某个容器的状态,再单独切回 Docker 管理界面。

11. 日志和设备详情

Beszel 页面里还可以继续查看日志。

image-20260414175532994

右上角还有更多设备操作入口。

image-20260414175601195

展开以后可以看到更多设备信息。

image-20260414175616029

界面语言也可以切换。

image-20260414175634114

到这里,这次真正展示出来的功能已经比较明确:

多主机列表 → 单机指标 → Docker 容器 → 日志 → 更多设备信息。

至于功能说明里提到的告警、多用户、OAuth、API、自动备份等能力,这次没有继续逐项做完整验证,所以我不会把“页面支持”直接写成“全部已经跑通”。

12. 局域网监控够用以后,再解决远程查看

如果 Beszel 只在家里或者公司内网使用,直接访问:

http://极空间IP:8091

已经够了。

但监控最尴尬的场景往往恰恰是:

人不在服务器旁边的时候,才最想看服务器现在怎么样。

所以接下来再加入 cpolar。

cpolar 在这套方案里只负责:

把 Beszel Hub 的 8091 Web 页面提供到公网。

它不采集 CPU、内存和磁盘数据,也不替 beszel-agent 上报。

所以职责可以拆成:

Agent 负责采集 → Beszel Hub 负责集中展示 → cpolar 负责远程 Web 入口。

13. 安装 cpolar

执行:

sudo curl https://get.cpolar.sh | sh

image-20250725104019896

安装完成以后查看服务状态:

sudo systemctl status cpolar

22e5adfaf290a17fc3384bb296055259

服务正常后,在浏览器打开:

http://ip:9200

进入 cpolar Web UI。

8a6698b1bf26d64ba3645827fbfb1c29

登录以后开始配置 Beszel 隧道。

14. 给 Beszel 的 8091 创建随机公网地址

进入:

隧道管理 → 创建隧道

当前参数为:

  • 隧道名称:beszel
  • 协议:http
  • 本地地址:8091
  • 域名类型:随机域名
  • 地区:China Top

image-20260415104916552

创建完成以后打开在线隧道列表。

image-20260415105011667

从其他电脑或者移动设备打开公网地址。

image-20260415105053112

页面可以正常访问。

这一层验证的是:

Beszel Hub 8091 → cpolar HTTP 公网地址 → 外部浏览器。

至于 Agent 数据是否正常,仍然要回到 Beszel 自己的主机状态里确认。

15. 长期查看再换固定二级子域名

随机公网地址适合先测试。

如果以后准备把这个监控页面长期收藏,我更希望入口固定下来。

进入预留页面,选择:

保留二级子域名

image-20250918151358733

这里使用:

  • 地区:china Top
  • 二级子域名:beszel

image-20260415105444740

然后回到:

隧道管理 → 隧道列表

找到需要修改的 Beszel 隧道。

image-20260415105550851

把域名类型修改成:

二级子域名

并填写:

  • Sub Domain:前面保留成功的二级子域名
  • 地区:China Top

点击更新。

image-20260415105621894

更新以后进入在线隧道列表。

image-20260415105637089

此时随机地址已经切换成固定二级子域名。

最后继续从浏览器访问。

image-20260415105712165

页面能够正常打开。

到这里,Beszel 的固定公网 Web 入口就跑通了。

总结

Beszel 对我来说最合适的地方,不是去替代所有 Prometheus、Grafana 或 Zabbix 场景,而是在主机数量还不算特别多、又希望快速集中看状态的时候,把监控先搭得足够简单。

这次实际跑通的主线是:

极空间 → SSH → Docker → Beszel Hub → 8091:8090 → 注册管理账号 → Docker beszel-agent → Linux / 服务器主机 → Windows PowerShell Agent → 主机指标 → Docker 容器 → 日志 → cpolar → 随机公网 → 固定二级子域名 beszel。

几个边界需要一直分清:

  • Hub 负责集中展示,Agent 负责被监控主机的数据采集;
  • 当前 Docker Agent 使用 45876、KEY、TOKEN 和 HUB_URL 完成接入;
  • Windows 示例使用 PowerShell 脚本安装 Agent;
  • 这次真正展示了主机指标、Docker 容器、日志和设备信息,告警、多用户、OAuth、API、自动备份等功能没有逐项完整测试;
  • Hub 容器实际是宿主机 8091 映射到容器 8090;
  • cpolar 只负责 Beszel 8091 Web 页面的公网入口,不参与 Agent 数据采集;
  • 固定二级子域名 beszel 解决的是远程入口变化问题,不会替代 Beszel 自己的账号和监控逻辑。

如果只是管理几台机器,我更愿意先把“谁在线、资源怎么样、容器有没有异常、日志能不能直接看到”这些基础问题解决。监控平台轻不轻,最后不是看安装包多小,而是日常使用时有没有让我少登录几次服务器、少开几个后台。

赞(0)
未经允许不得转载:网硕互联帮助中心 » 多台服务器不想上重型监控?用 Beszel 搭一套轻量主机与 Docker 看板
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!