Dmit 圣诞大促:美西 CN2 GIA / CMIN2 顶级路权,即刻上车!

新手也能上手的服务器监控方案:Docker 一键部署 Beszel

Beszel网站项目介绍
Beszel

目前手里有几台 VPS,我希望能在一个页面上,统一查看这些服务器的运行情况,比如磁盘占用、内存使用率、CPU 负载等信息。

起初,我采用的是一个比较“原始”的方式:
通过 Termius 同时打开四个窗口,每个窗口连接一台 VPS,然后手动运行 htop,用这种方式来查看各台服务器的实时状态。

这种方式的优点是确实足够实时,服务器的 CPU、内存变化几乎可以立刻看到。但问题也很明显。

通过 Termius 同时打开多个窗口,分别连接不同 VPS 并运行 htop 查看服务器实时状态的操作示意图。
使用 Termius 多窗口 + htop 查看多台 VPS 的实时运行状态

首先,这种方式非常不方便
每次开关电脑,都需要重新连接服务器,并手动执行 htop 命令。虽然我知道可以把它设置成登录后自动运行,但整体体验依然不算好。

其次,它还有一个更致命的问题:
只能在特定的一台电脑上查看
一旦换设备,或者不在这台电脑旁边,就没法随时了解这些 VPS 的运行状态。

也正因为这些原因,我开始考虑换一种方案:
在占用服务器性能尽量低的前提下,把所有 VPS 的运行状态,统一展示在一个网页上,这样无论用什么设备、在什么地方,都能随时查看。

至于“实时性”,我并没有特别苛刻的要求。
如果能做到秒级当然更好,但我也很清楚,实时数据传输必然意味着更高的资源占用。

所以我的取舍是:
优先低占用,其次是可视化,实时性可以适当让步。
哪怕有 10 秒左右的延迟,对我来说也是完全可以接受的。

在这个前提下,市面上其实已经有不少服务器监控方案,比如哪吒监控、Komari 等。这类方案往往能做到非常实时的监控,但相应地,也会占用更多的服务器资源。

而 Beszel 则是另一种思路。
它更偏向“轻量级服务器监控”,不追求秒级刷新,而是用更低的资源占用,换取一个清晰、直观的整体状态展示。

所以这件事本身没有对错,更多只是取舍问题:
如果你更看重实时性,那可以选择更重一点的监控方案;
如果你更在意轻量、低占用,那么 Beszel 可能会更适合。

其实在真正动手之前,我对 Beszel 多少有点顾虑。
因为只要是多台 VPS 统一监控,就意味着需要在每一台服务器上部署程序,还要进行连接配置,听起来就不像是一个“省事”的方案。

但真正研究了一下之后才发现,它的搭建过程比我想象中简单得多。
基本上只需要在每台 VPS 上安装 Docker,然后运行对应的容器,就可以完成部署。

接下来,就和大家分享一下,我是 如何搭建 Beszel – 这套轻量级服务器监控系统的。

Docker 一键部署 Beszel(面板端)

在开始之前,先简单说明一下我们的目标,避免后面操作时混乱。

部署目标说明

我们的目的很明确:

用 Beszel,在一台 VPS 上搭建监控面板,用来统一监控另外几台 VPS 的运行状态。

也就是说:

  • 只需要 一台服务器 负责展示监控页面(面板)
  • 每一台 VPS(包括面板那台)都运行一个 Agent

默认环境说明

下面的步骤基于一个最常见、也最容易复现的环境:

  • 一共 3 台 VPS
  • 系统为 Ubuntu 20.04 / 22.04 / 24.04
  • 拥有 root 权限,或可使用 sudo
  • 已经安装 Docker
    • 如果还没安装,可以用下面这条命令一键安装:curl -fsSL https://get.docker.com | sh

Beszel 的整体结构

在真正开始之前,先看一下 Beszel 的基本架构,有个整体概念会更清晰。

Beszel 采用的是 1 个面板 + N 个 Agent 的结构:

VPS-A(面板服务器)
├─ Beszel Dashboard(Web 页面)
├─ Beszel Agent
│
VPS-B
└─ Beszel Agent

VPS-C
└─ Beszel Agent

简单理解就是:

  • Dashboard(面板)
    • 你在浏览器里看到的页面
    • 只需要部署一次
  • Agent
    • 每台 VPS 都需要运行
    • 包括面板服务器本身

选择一台 VPS 作为面板服务器

面板服务器其实 任选一台即可,不需要特殊配置。

下面为了方便说明,统一假设:

  • 面板服务器:VPS-1
  • 被监控服务器:VPS-1 / VPS-2 / VPS-3

接下来的操作,全部在 VPS-1 上进行


第一步:创建 Beszel 项目目录

我个人习惯把 Docker 项目统一放在 /opt 目录下,方便管理。
如果你有自己的目录习惯,也可以自行调整。

mkdir -p /opt/beszel
cd /opt/beszel

第二步:新建 Docker Compose 文件

在当前目录下创建 docker-compose.yml 文件:

nano docker-compose.yml

将下面内容完整粘贴进去:

services:
  beszel:
    image: henrygd/beszel
    container_name: beszel
    restart: unless-stopped
    ports:
      - "8090:8090"
    volumes:
      - ./data:/beszel_data

保存文件:

  • Ctrl + O → 回车
  • Ctrl + X 退出编辑器

第三步:启动 Beszel 面板

/opt/beszel 目录下执行:

docker compose up -d

如果没有报错,说明容器已经成功启动。

你也可以用下面的命令确认一下状态:

docker ps

看到 beszel 容器处于 Up 状态即可。

通过执行 docker ps 命令确认 beszel 容器处于 Up 运行状态的终端界面示意图。
使用 docker ps 确认 beszel 容器正常运行(Up 状态)

第四步:访问面板页面

在浏览器中打开:

http://VPS-1的IP:8090

如果页面可以正常打开,并显示 Beszel 的界面,说明:

Beszel 面板已经部署完成

到这里,面板端的工作就结束了。

在浏览器中访问 beszel 面板页面,查看服务运行状态的界面示意图。
通过浏览器访问 beszel 面板页面

接下来要做的事情,就是在每一台 VPS 上部署 Beszel Agent,并将它们添加到面板中进行统一监控。
这一部分的操作,其实比你想象中还要简单。

在各台 VPS 上部署 Beszel Agent

在面板部署完成之后,接下来要做的事情就很清晰了:
在每一台需要被监控的 VPS 上运行 Beszel Agent。

这里需要注意一点:

包括面板服务器本身,也需要部署 Agent。

也就是说,如果你一共有 3 台 VPS,那么最终会有:

  • 1 个 Beszel 面板
  • 3 个 Beszel Agent

Agent 是做什么的?

简单说一句就够了:

  • Agent 负责采集这台 VPS 的运行状态
    (CPU、内存、磁盘、网络等)
  • 然后把这些数据发送给面板进行展示

Agent 本身非常轻量,不会常驻占用大量资源。


第一步:在面板中创建 Agent 信息

在真正到服务器上跑命令之前,先到 Beszel 面板里操作一次

  1. 打开 Beszel 面板页面 http://VPS-1的IP:8090
  2. 点击页面中的 Add System / Add Agent / 添加客户端(不同版本/语言文字可能略有不同)
  3. 选择 Docker 作为部署方式

这一步完成后,面板会自动生成一段 docker run 命令
里面会包含类似 KEY 之类的参数。

在面板中复制用于部署 Agent 的 docker run 命令文本的操作界面示意图。
复制用于部署 Agent 的 docker run 命令

👉 这一段命令非常重要,后面要直接用到。


第二步:在 VPS 上运行 Agent 容器

接下来,登录到你需要监控的 VPS(比如 VPS-2、VPS-3)。

如果你是第一次部署,建议直接复制面板生成的 docker run 命令,然后在服务器上回车执行(提前安装上docker)。

在 VPS 服务器上执行 docker run 命令,启动 Agent 容器的终端操作界面示意图。
在 VPS 上运行 Agent 容器

如果你想提前了解结构,大致会是下面这种形式:

docker run -d \
  --name beszel-agent \
  --restart unless-stopped \
  -v /:/host:ro \
  -p 45876:45876 \
  -e KEY="这里填写面板生成的 KEY" \
  henrygd/beszel-agent

其中几个关键参数简单说明一下:

  • -v /:/host:ro
    把宿主机的系统信息挂载给容器(只读)
  • 45876
    Agent 使用的监听端口,后面面板就是通过这个端口获取数据
  • KEY
    用来和面板进行身份校验
    没有这个参数,Agent 会直接启动失败

第三步:确认 Agent 是否正常运行

命令执行完成后,可以用下面的命令确认一下:

docker ps

如果看到类似:

beszel-agent   Up ...

说明 Agent 已经成功运行。

通过执行 docker ps 命令确认容器是否处于正常运行状态的终端界面示意图。
使用 docker ps 确认容器是否正常运行

第四步:在面板中添加这台 VPS

Agent 启动后,回到 Beszel 面板页面。

  1. 再次点击 Add System
  2. 填写信息:
    • Name:自定义,比如 VPS-2
    • AddressVPS-2 的 IP:45876
  3. 保存

如果一切正常,几秒钟后,这台 VPS 就会出现在面板中,并开始显示运行状态。

在 beszel 面板中添加一台新的 VPS 节点,用于接入并开始监控的操作界面示意图。
在面板中添加这台 VPS

重复以上步骤

按照同样的方法:

  • VPS-1(面板机)部署 Agent
  • VPS-2VPS-3 分别部署 Agent
  • 在面板中逐一添加

最终你会看到:

所有 VPS 的运行情况,都集中显示在同一个页面中。

在监控面板中集中展示所有 VPS 运行状态,包括 CPU、内存、磁盘等信息的总览页面示意图。
所有 VPS 的运行情况集中显示在同一个页面中

注意事项

在刚部署完成时,你可能会发现:

  • CPU / 内存变化不是“秒级跳动”
  • 数据会有几秒到十几秒的延迟

这是 Beszel 的设计取向,
它更关注 整体状态和趋势,而不是瞬时波动。

对我这种只是想随时看一眼服务器是否正常的人来说,已经完全够用了。

这篇文章对您有帮助吗?

点击星号为它评分!

读者们的评价 / 5. 投票数:

您是第一位评价者!快来分享您的看法吧

很抱歉这篇文章没能帮到您

一起让这篇文章变得更好!

请告诉我如何改进,让内容更好地帮助大家

免责声明: 本文基于个人经验分享,内容可能因时间、地区或个人情况而异。操作前请结合实际情况判断,必要时查询最新官方信息。如有疑问或建议,欢迎留言交流。

❤️ 支持作者

您的支持是我继续创作的动力

打赏二维码

扫描二维码支持

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注