多台服务器不想上重型监控?用 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 连接:

shell 复制代码
ssh root@IP

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

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

3. 确认 Docker 环境

接着检查 Docker:

shell 复制代码
docker -v
systemctl status -v

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

4. 创建 Beszel 安装目录

创建目录并进入:

shell 复制代码
sudo mkdir -p /docker/beszel
cd /docker/beszel

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

/docker/beszel

下面。

5. 用 Docker Compose 部署 Beszel Hub

创建:

docker-compose.yml

内容如下:

shell 复制代码
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

然后启动:

shell 复制代码
docker-compose up -d

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

http://极空间IP:8091

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

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

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

完成注册以后进入主页。

到这里我只会确认:

Beszel Hub → 8091 → Web 页面

已经正常。

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

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

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

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

shell 复制代码
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

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

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

添加系统

回到首页刷新。

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

这一层真正形成的是:

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

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

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

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

这里演示的是 Windows PowerShell:

shell 复制代码
& 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"

执行后继续完成 Agent 安装。

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

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

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

当前实际展示了两条:

Docker Agent → Linux / 服务器主机

以及:

PowerShell 安装 Agent → Windows 主机。

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

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

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

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

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

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

点击右上角的容器入口。

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

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

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

11. 日志和设备详情

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

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

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

界面语言也可以切换。

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

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

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

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

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

http://极空间IP:8091

已经够了。

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

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

所以接下来再加入 cpolar。

cpolar 在这套方案里只负责:

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

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

所以职责可以拆成:

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

13. 安装 cpolar

执行:

shell 复制代码
sudo curl https://get.cpolar.sh | sh

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

shell 复制代码
sudo systemctl status cpolar

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

http://ip:9200

进入 cpolar Web UI。

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

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

进入:

隧道管理 → 创建隧道

当前参数为:

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

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

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

页面可以正常访问。

这一层验证的是:

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

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

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

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

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

进入预留页面,选择:

保留二级子域名

这里使用:

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

然后回到:

隧道管理 → 隧道列表

找到需要修改的 Beszel 隧道。

把域名类型修改成:

二级子域名

并填写:

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

点击更新。

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

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

最后继续从浏览器访问。

页面能够正常打开。

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

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

相关推荐
正经教主2 小时前
【FDE系列】阶段2:Day 47:对接企业系统 — 飞书 / 钉钉 API
人工智能·docker·fde
九皇叔叔13 小时前
Kubernetes 资源管理方式详解:命令式与声明式管理
docker·容器·k8s
程序猿小郑19 小时前
Docker Compose 构建完整服务实战指南:从入门到最佳实践
docker·容器
行百里er1 天前
5 分钟跑起 Redis(Docker 版)
redis·后端·docker
Mr.朱鹏1 天前
Docker三剑客实战指南:Docker、Dockerfile 和 Docker Compose
python·docker·devops·dockerfile
鬼先生_sir1 天前
Docker 完整教程
docker
java_logo1 天前
Docker 一键部署 Jellyfin:快速搭建私有化媒体服务器
docker·私有化部署·jellyfin·硬件加速·媒体服务器·轩辕镜像·影音库
jianpeng的工程笔记1 天前
WeKnora 搭建研发 EDA 知识库:Docker 部署、RAG 与 Wiki 实践
docker·知识库·eda·rag
ZeroNews内网穿透1 天前
内网部署 Halo 建站,用 ZeroNews 免费内网穿透安全发布到公网(无公网 IP 也能 HTTPS 访问)
docker·https·内网穿透·nas·反向代理·halo·zeronews