Uptime Kuma太重?20MB的Beszel监控NAS和服务器更合适
家里设备一多,监控就成了刚需。
NAS、软路由、跑 Docker 的小主机、树莓派……哪台机器磁盘快满了、哪个容器在偷偷吃内存、CPU 温度是不是又飙了,光靠 SSH 上去敲 htop 看一眼,既不及时也不全面。要是哪台机器半夜悄悄挂了,你第二天才发现,那可就晚了。
很多人第一反应是装个 Uptime Kuma。它确实好用,服务在不在线一目了然,通知也很及时。但用久了你会发现两个问题:一是它偏”服务可用性”监控,看的是”网站能不能打开”,至于 CPU 占用多少、内存剩多少、磁盘温度高不高,它就顾不上了;二是它基于 Node.js,跑起来常驻内存动辄一两百 MB,放在树莓派或低端 NAS 上有点心疼。
今天介绍的这个 Beszel,走的完全是另一条路——约 20MB 内存占用,Hub + Agent 架构,一个面板把家里所有机器的 CPU、内存、磁盘、网络、温度、Docker 容器状态全收进来,还有历史曲线和告警。GitHub 上 27.2k Star,MIT 协议,Go 语言写的,自托管,数据不出家门。

Beszel 是什么
一句话:一个轻量级的服务器监控平台,Docker 统计、历史数据、告警全都有。
它的架构特别干净,只有两个角色:
- Hub(中心):基于 PocketBase 构建的 Web 面板,你只需要部署一个。打开浏览器就能看所有机器的状态。
- Agent(代理):跑在每一台你想监控的机器上,负责采集系统指标,上报给 Hub。
一台 Hub,N 个 Agent,拓扑就这么简单。Agent 很轻量,每台被监控的机器只多花十几 MB 内存,几乎无感。

为什么说它比 Uptime Kuma 更合适
先说清楚:Uptime Kuma 是个好工具,定位是”服务可用性监控”,它擅长的场景是盯着一堆网站和 API,看它们通不通、响应多快。Beszel 擅长的是”系统资源健康监控”,看的是机器本身累不累。两者其实是互补关系,不是谁替代谁。
但如果你真正的需求是”监控我家里的服务器/NAS 本身”,那 Beszel 在几个维度上明显更对口:
| 维度 | Beszel | Uptime Kuma |
|---|---|---|
| 内存占用 | 约 20MB | 通常 100-200MB |
| 核心监控 | 系统资源(CPU/内存/磁盘/温度) | 服务可用性(HTTP/TCP/Ping) |
| Docker 容器 | 逐容器 CPU/内存/网络历史 | 不支持容器级监控 |
| 磁盘健康 | S.M.A.R.T. + ZFS 池状态 | 无 |
| 历史曲线 | 内置,开箱即用 | 状态页为主,历史数据弱 |
| 通知渠道 | 24 种(Shoutrrr) | 多种,但生态略不同 |
| 部署 | 单二进制 / Docker | Docker / Node.js |
| 技术栈 | Go | Node.js + Vue |
想知道”服务在不在线”用 Uptime Kuma;想知道”机器扛不扛得住”用 Beszel。 很多 homelab 玩家最后是两个一起跑。
核心功能:监控指标全家桶
Beszel 最让我觉得”值”的地方,是它监控的维度够全。不是那种只给你一个 CPU 百分比就完事的玩具。

主机层面,它能采:CPU 使用率、内存使用率(含 swap 和 ZFS ARC)、磁盘使用率、磁盘 I/O、网络流量、负载平均值(1/5/15 分钟)、温度传感器、风扇转速、GPU 使用率和功耗(Nvidia/AMD/Intel 都支持)、电池电量。
对 NAS 用户尤其友好的两个点:
- S.M.A.R.T. 数据:直接读磁盘健康状态,包括 eMMC 的磨损程度和 Linux mdraid 阵列健康,磁盘快坏了提前告警。
- ZFS 存储池:池容量、使用率、健康状态、I/O 吞吐、scrub 状态、按数据集的使用量,玩 ZFS 的人懂这有多省事。
Docker / Podman 容器层面,它能逐个容器追踪 CPU、内存和网络的历史曲线,记录的是过去一段时间的变化,不是只看当前这一刻。哪个容器昨晚内存涨疯了,曲线一看便知,不用再 docker stats 干瞪眼。

告警和通知:该报的都会报
光看曲线不够,还得会主动喊你。Beszel 的告警覆盖了状态、CPU、内存、磁盘、带宽、温度、负载这些主要指标。
- 状态告警和正常运行时间告警需要手动开启,可以给每台机器设预期运行时段,避免计划内重启时误报。
- 资源类告警可以全局设一套默认阈值,也可以单台机器覆盖配置。比如那台老 NAS 磁盘常年 80% 满,你单独给它调高阈值就行。
- 阈值触发后会有恢复通知,问题解决了也告诉你一声,不用一直悬着心。
通知渠道是重头戏。Beszel 用 Shoutrrr 库,一口气支持 24 种通知服务,国内用户常用的几个都在:Telegram、Discord、Slack、飞书(Lark)、企业微信(WeCom),加上轻量的 ntfy、Gotify、Bark,邮件 SMTP 也行。你手头有什么通知通道,它都能接。

实战:十分钟把 Beszel 跑起来
第一步:部署 Hub
Hub 是你的”中控台”,只需部署一个。用 Docker Compose 最省心:
services:
beszel:
image: henrygd/beszel:latest
container_name: beszel
restart: unless-stopped
environment:
APP_URL: http://localhost:8090
ports:
- 8090:8090
volumes:
- ./beszel_data:/beszel_data
- ./beszel_socket:/beszel_socket
存成 docker-compose.yml,docker compose up -d 起来,浏览器打开 http://你的IP:8090,按提示创建管理员账号,Hub 就齐活了。
如果要通过域名访问,把
APP_URL改成你的实际地址,再套个反向代理(Caddy/Nginx)挂 SSL 即可。
第二步:添加第一台被监控的机器
在 Hub 右上角点 Add System,弹出的对话框里直接给你生成好 Agent 的安装命令和需要的 TOKEN/KEY,复制即用。这是 Beszel 体验做得好的一个细节,不用手动拼参数。

第三步:在被监控机器上装 Agent
Agent 的安装方式覆盖了你能想到的所有平台。
Linux 一行脚本(最常用):
curl -sL https://get.beszel.dev -o /tmp/install-agent.sh && chmod +x /tmp/install-agent.sh && /tmp/install-agent.sh
脚本会自动下载对应架构的二进制、创建 beszel 用户、装好 systemd 开机自启服务,还能选每天自动更新。国内网络不好的话加个 --china-mirrors 参数走镜像。
Docker 方式(适合容器化环境):
docker run -d \
--name beszel-agent \
--network host \
--restart unless-stopped \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
-e KEY="<公钥>" \
-e HUB_URL="<Hub地址>" \
-e TOKEN="<token>" \
-e LISTEN=45876 \
henrygd/beszel-agent:latest
注意要用 --network host,否则拿不到主机网络接口的真实流量。挂载 docker.sock 是为了采容器指标。
其他平台:macOS 用 Homebrew,Windows 用 WinGet 或 Scoop,群晖 NAS 有原生包,Home Assistant 有 add-on。你能想到的设备基本都有对应方案。
装完 Agent 回到 Hub 点 Add System,状态变绿就成功了。变红的话查一下 Common Issues 文档,多半是网络不通或端口没开。
使用体验:轻是真轻,全也是真全
实际跑下来的感受,几个点值得说。
资源占用确实小。 Hub 加一个 Agent,常驻内存加起来也就二十多 MB,放在一台 J4125 小主机上几乎可以忽略。Go 写的单二进制,启动快,不依赖额外运行时。
界面干净实用。 不像 Netdata 那样花里胡哨一堆仪表盘,Beszel 的面板是”够用就好”的风格,系统列表、单机详情、历史曲线、容器列表、告警设置该有的都有,一眼能找到要看的东西。
历史数据开箱即用。 不用配 Prometheus、不用画 Grafana 面板,Agent 装上就开始记历史,CPU 内存这些曲线马上就能看。对不想折腾监控栈的人,这点太友好了。
Docker 容器监控是亮点。 我之前一直想找个轻量方式看”哪个容器在吃资源”,docker stats 只能看当下,cAdvisor 又重。Beszel 逐容器存历史,终于能复盘”昨晚哪个服务内存泄漏了”。
优点:
- 极轻量,低端设备友好
- 监控维度全,尤其 S.M.A.R.T. 和 ZFS 对 NAS 用户很实用
- Docker 容器级历史监控
- 安装体验顺滑,命令都给你生成好
- 24 种通知渠道,国内常用都在
- 开源 MIT,社区活跃(27.2k Star)
缺点:
- 服务可用性监控(HTTP/TCP 探测)虽有网络监控模块,但不如 Uptime Kuma 专注,状态页功能弱一些
- Web 界面没有 Uptime Kuma 那种漂亮的状态页可对外展示
- 项目迭代很快,偶尔有 breaking change,升级前建议看 Release Notes
- 多用户和 OAuth 这类高级功能对个人玩家有点重,小团队用得上
什么人该用
适合:
- 家里有 NAS、软路由、小主机、树莓派等多台设备,想统一看资源状态的
- 受不了 Uptime Kuma 看不到 CPU/内存/温度的
- 想监控 Docker 容器资源占用历史的
- 在乎磁盘健康(S.M.A.R.T./ZFS),想提前预警的
- 设备性能有限,装不动重型监控栈的
不太适合:
- 只想监控一堆网站/API 在不在线的(Uptime Kuma 更对口)
- 需要对外展示漂亮状态页的
- 要做复杂指标聚合、自定义看板的(上 Prometheus + Grafana)
总结
Beszel 填的是 Uptime Kuma 和重型监控栈之间的那个空档:比前者看得深,比后者轻得多。如果你是 homelab 玩家或 NAS 用户,手里好几台机器想知道它们”累不累”,这 20MB 的工具几乎是当前最划算的选择。配上 Telegram 或企业微信告警,磁盘快满、容器失控、温度异常都能第一时间收到通知,不用再半夜 SSH 上去手动查。
最理想的玩法是 Beszel + Uptime Kuma 一起跑:一个管”机器健康”,一个管”服务在线”,分工明确,加起来内存也就两三百 MB,普通小主机扛得住。
获取方式
开源地址: https://github.com/henrygd/beszel
官方文档: https://beszel.dev
推荐安装方式: Hub 用 Docker Compose,Agent 用一行脚本或 Docker
费用说明: 完全免费,MIT 协议开源
喜欢这款工具?关注「善忘技术夹」全媒体
扫描二维码关注微信公众号与小程序,获取更多高品质开源软件推荐与效率工具测试。