善忘技术夹 Logo
善忘技术夹
善用佳软 开源/免费

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 仪表盘主界面

Beszel 是什么

一句话:一个轻量级的服务器监控平台,Docker 统计、历史数据、告警全都有。

它的架构特别干净,只有两个角色:

  • Hub(中心):基于 PocketBase 构建的 Web 面板,你只需要部署一个。打开浏览器就能看所有机器的状态。
  • Agent(代理):跑在每一台你想监控的机器上,负责采集系统指标,上报给 Hub。

一台 Hub,N 个 Agent,拓扑就这么简单。Agent 很轻量,每台被监控的机器只多花十几 MB 内存,几乎无感。

Beszel 系统总览

为什么说它比 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 百分比就完事的玩具。

Beszel Docker 容器监控

主机层面,它能采: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 历史曲线

告警和通知:该报的都会报

光看曲线不够,还得会主动喊你。Beszel 的告警覆盖了状态、CPU、内存、磁盘、带宽、温度、负载这些主要指标。

  • 状态告警和正常运行时间告警需要手动开启,可以给每台机器设预期运行时段,避免计划内重启时误报。
  • 资源类告警可以全局设一套默认阈值,也可以单台机器覆盖配置。比如那台老 NAS 磁盘常年 80% 满,你单独给它调高阈值就行。
  • 阈值触发后会有恢复通知,问题解决了也告诉你一声,不用一直悬着心。

通知渠道是重头戏。Beszel 用 Shoutrrr 库,一口气支持 24 种通知服务,国内用户常用的几个都在:Telegram、Discord、Slack、飞书(Lark)、企业微信(WeCom),加上轻量的 ntfy、Gotify、Bark,邮件 SMTP 也行。你手头有什么通知通道,它都能接。

Beszel 告警通知设置

实战:十分钟把 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 体验做得好的一个细节,不用手动拼参数。

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 协议开源

喜欢这款工具?关注「善忘技术夹」全媒体

扫描二维码关注微信公众号与小程序,获取更多高品质开源软件推荐与效率工具测试。

善忘技术夹 微信公众号宣传图
微信公众号 (扫码关注)
善忘技术夹 微信小程序宣传图
微信小程序 (扫码即用)