轻量简洁,开源可控:一款专为个人服务器和 Homelab 设计的自托管监控解决方案。

一、引言:痛点与场景

管理一两台个人服务器时,你是否面临过这些困扰?

服务器的 CPU 偶尔飙升,却找不到元凶;Docker 容器跑了一周内存持续上涨,无从排查;磁盘快满了,但不知道是哪个目录在蚕食空间;安装了 Zabbix 或 Prometheus,却发现这些"企业级"工具本身就要占用大量资源,小机器根本撑不住……

Beszel 正是为解决这些痛点而生。它定位清晰:轻量到可以忽略资源占用,简洁到 5 分钟就能跑起来,功能足够覆盖个人开发者和小型团队的日常监控需求。在 GitHub 上斩获 21,627 颗星,是近年来监控领域增长最快的开源项目之一。

二、项目简介

Beszel 是一个基于 Go 语言开发的轻量级服务器监控平台,核心特性包括:实时指标采集(CPU、内存、磁盘、网络)、Docker/Podman 容器监控历史数据保留、以及灵活告警。项目由开发者 henrygd 创建并维护,采用 MIT 许可证,完全开源。

Beszel 采用经典的 Hub + Agent 架构:Hub 端(PocketBase)负责 Web 界面、数据存储和告警管理;Agent 端以轻量级 Go 二进制程序(仅约 5MB)部署在每台被监控服务器上,通过 HTTP 协议主动上报指标数据。

指标 数值
GitHub Stars 21,627
Fork 769
最新版本 v0.18.7(2026-04-05)
License MIT
主要语言 Go + TypeScript
提交数 1,450+
架构 Hub + Agent

三、系统架构

Beszel 的架构设计极为精简,核心组件只有两个:

Hub(中心节点):基于 PocketBase 框架构建,内嵌 SQLite 数据库,提供 Web 管理界面、用户认证、告警引擎和 REST API。Hub 本身就是一个约 20MB 的二进制文件,无需安装任何运行时,开箱即用。

Agent(采集代理):部署在被监控服务器上的轻量进程(~5MB),通过系统调用采集 CPU、内存、磁盘、容器等指标,默认每 10 秒通过 HTTP POST 将数据上报给 Hub。Agent 支持 Linux、Windows、macOS 多平台,以及 ARM64 架构。

数据流向清晰:Agent 轮询系统指标 → HTTP POST 加密传输到 Hub → PocketBase 解析验证写入 SQLite → Web UI 轮询 REST API 渲染图表 → 告警引擎根据阈值触发通知。

系统架构图
▲ 图1:Beszel 系统架构图(Hub + Agent 模式)

监控数据流
▲ 图2:Beszel 监控数据流(采集 → 传输 → 存储 → 展示)

四、核心特性解析

1. 极低资源占用

Agent 二进制仅约 5MB,运行时不依赖任何外部运行时库。相比 Prometheus + Grafana 动辄占用数百 MB 内存的方案,Beszel 在资源受限的小机器(如 1GB RAM 的 VPS)上也能流畅运行。据官方数据,Hub 端日常内存占用可控制在 50MB 以内。

2. Docker / Podman 容器监控

Beszel Agent 通过 Docker/Podman API 直接获取各容器的 CPU、内存、网络收发量,并且保留完整的历史数据。点击任意容器,可以看到过去数天乃至数周的指标趋势图。这一特性对于在单台宿主机上运行多个容器(例:Nginx + MySQL + Redis 组合)的个人开发者来说尤为实用。

Dashboard 界面
▲ 图3:Beszel Dashboard 多服务器概览界面

3. 丰富的监控指标

Beszel 支持的指标覆盖广泛:CPU 使用率、内存(含 Swap、ZFS ARC)、磁盘空间与 I/O、网络流量、Load Average、温度传感器(支持 lm-sensors)、电池状态、GPU(Nvidia/AMD/Intel)以及 S.M.A.R.T. 磁盘健康数据。最新版本还新增了磁盘 I/O 的 await、queue depth 等深度指标。

系统详情页
▲ 图4:Beszel 单系统详情页(CPU、内存、磁盘、网络、容器一览)

4. 灵活告警机制

Beszel 的告警规则支持 CPU、内存、磁盘、带宽、温度、系统状态等多种维度,可为每台服务器单独配置阈值。告警触发后支持 Email、Webhook 等通知方式。告警规则可以在不同系统之间复制,方便批量管理。

告警配置页
▲ 图5:Beszel 告警通知配置界面

5. 多用户与权限管理

Beszel 支持多用户体系:普通用户只能管理自己的服务器,管理员可以将系统共享给其他用户。内置 OAuth2/OIDC 支持,可对接 Google、GitHub 等主流 OAuth 提供商,也可以完全禁用密码认证。

6. 自动备份

Hub 端内置备份功能,支持将 SQLite 数据库备份到本地磁盘或任意 S3 兼容存储(MinIO、Backblaze B2、COS 等),备份策略可按需配置。这一功能对于长期运行的监控系统尤为重要。

7. REST API

Beszel 提供完整的 REST API,支持以编程方式查询系统数据、更新配置或集成到自有平台。API 需 JWT 认证,安全可控。

五、快速上手

Beszel 支持二进制直接运行和 Docker 两种安装方式,以下分别介绍。

方式一:二进制安装(推荐)

# 下载 Hub(Linux amd64)
wget https://github.com/henrygd/beszel/releases/latest/download/beszel-linux-amd64
chmod +x beszel-linux-amd64
./beszel-linux-amd64 serve

# Hub 启动后访问 http://localhost:8090 创建管理员账户
# 下载 Agent(另一台要监控的服务器)
wget https://github.com/henrygd/beszel/releases/latest/download/agent-linux-amd64
chmod +x agent-linux-amd64
./agent-linux-amd64 --help

方式二:Docker 安装

# 启动 Hub
docker run -d \
  --name beszel \
  -p 8090:8090 \
  -v pb_data:/pb/pb_data \
  henrygd/beszel

# Agent 端(与 Hub 同机部署时)
docker run -d \
  --name beszel-agent \
  --network=host \
  -v /:/host \
  -v pb_agent_data:/agent \
  henrygd/beszel-agent \
  --host /host

添加第一台被监控服务器

Hub 创建管理员账户后,点击右上角 Add System 按钮,填写服务器信息。Agent 连接方式支持两种:

  • 本地 Socket(同机部署):使用 Unix Socket 直连,无需网络暴露
  • 远程 Agent(跨机部署):通过 HTTP 连接,支持 TLS,推荐使用 Universal Token 免配置
# Agent 以 systemd 服务运行(Linux)
curl -s https://raw.githubusercontent.com/henrygd/beszel/main/supplemental/scripts/install-agent.sh | bash

零安装体验: Beszel 官方提供基于 Docker Compose 的快速启动模板,无需手动编译配置,适合初次体验:

git clone https://github.com/henrygd/beszel.git
cd beszel/supplemental/docker/same-system
docker compose up -d
# 访问 http://localhost:8090 完成初始化

六、实战演示

场景:在树莓派上监控家庭服务器集群

假设你有一台运行在软路由上的 Linux 服务器(安装 Agent),以及一台 NAS(安装 Agent),通过 Beszel Hub 集中监控。

Step 1:安装 Beszel Hub

在一台低功耗设备(如 N100 小主机)上部署 Hub:

wget https://github.com/henrygd/beszel/releases/latest/download/beszel-linux-amd64
./beszel-linux-amd64 serve

访问 http://<your-nas-ip>:8090,注册管理员账户。

Step 2:在各服务器部署 Agent

在树莓派上下载对应架构的 Agent(linux-arm64),用 Universal Token 方式连接:

wget https://github.com/henrygd/beszel/releases/latest/download/agent-linux-arm64
chmod +x agent-linux-arm64
# 在 Hub 的 Systems → Add System 获取 Universal Token
./agent-linux-arm64 hub https://<hub-ip>:8090 <your-universal-token>

Step 3:配置告警

进入 Settings → Notifications,配置邮件通知(以 QQ 邮箱为例,需开启 SMTP 服务并生成授权码):

SMTP Host: smtp.qq.com
SMTP Port: 587
SMTP Username: your-email@qq.com
SMTP Password: your-authorization-code

在 Systems → 选中服务器 → Alerts,添加告警规则:

  • CPU 使用率 > 80% 持续 5 分钟
  • 内存使用率 > 85%
  • 根磁盘 < 10GB

Step 4:验证监控效果

等待 1~2 分钟刷新数据,在 Dashboard 即可看到各服务器的状态卡片,每个卡片显示 CPU、内存、负载的实时值和趋势。点击具体服务器进入详情页,可查看过去 24 小时/7 天的指标曲线。

七、技术亮点深度解析

1. PocketBase 嵌入式后端引擎

Beszel Hub 选择 PocketBase 作为后端框架,这是一个值得关注的技术决策。PocketBase 是一个用 Go 编写的嵌入式数据库/后端框架,单二进制文件同时提供 SQLite 数据库、REST API、用户认证和文件存储能力。相比传统的"数据库 + Web 框架 + API 层"分离部署方案,PocketBase 将所有功能压缩到一个进程中,大幅降低了部署复杂度和资源占用。对于 Beszel 这样的单点监控系统,这种"all-in-one"的设计非常契合——既保持了功能完整,又实现了极简部署。

同时 PocketBase 本身也是开源的(MIT),且持续活跃维护,版本迭代快,不存在厂商锁定风险。

2. Agent 架构的轻量化设计

Beszel Agent 不走传统监控的"拉模式"(Prometheus 定期从目标拉取指标),而是采用"推模式"——Agent 主动将数据 POST 到 Hub。这种设计在小型环境中优势明显:无需在 Hub 侧开放被监控服务器的访问端口,Agent 本身可以躲在防火墙后面,只需出站 HTTP 连接到 Hub 即可。这对于家庭网络或企业内网环境非常友好。

Agent 使用 gopsutil 库采集系统指标,该库在 macOS 上的 ARM64 架构历史上存在崩溃问题,项目维护者 svenvg93 在 v0.18.7 版本中通过升级 gopsutil 到 v4.26.3 修复了此问题,体现了活跃的社区维护状态。

3. 跨平台与多架构支持

Beszel 的发布包覆盖 Linux(amd64/arm64/arm)、Windows(amd64)、macOS(amd64/arm64),还提供 Homebrew、Kubernetes Helm Chart、Debian 包等多种安装方式。特别是 ARM64 支持,让它可以很好地运行在树莓派、ARM 工控机等低功耗硬件上,也是 Homelab 场景的首选方案。

八、相关资源

  • GitHub:https://github.com/henrygd/beszel
  • 官方文档:https://beszel.dev/
  • 在线体验:https://beszel.dev/guide/getting-started
  • 版本发布:https://github.com/henrygd/beszel/releases
  • 社区交流:https://github.com/henrygd/beszel/discussions
  • Matrix 群组:#beszel:matrix.org

Beszel v0.18.7 · MIT License · © 2024-2026 henrygd

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐