Beszel 轻量服务器监控:hub 加 agent 架构、Docker 部署与告警局限

开源项目15小时前发布 一方
1 00

Beszel 是一个自托管的服务器监控项目,采用 hub 加 agent 的结构:hub 提供 Web 面板,agent 装在每台被监控的机器上采集指标。它把 CPU、内存、磁盘、网络与 Docker 容器数据收进一个界面,并按阈值发出告警。项目以 MIT 许可开源,适合管理几台到二十几台服务器的个人或小团队。

Beszel 是什么:hub 与 agent 分工

Beszel 官网首页展示的轻量服务器监控功能与仪表盘入口
截图来源:beszel.dev(2026-10-29)

hub 是一个基于 PocketBase 的 Web 应用,负责账号、系统列表、图表和告警配置。agent 是独立的采集进程,读取主机指标与 Docker、Podman 容器数据,再推送给 hub。官方文档把分工写得很直白:hub 管看板,agent 干活。

两者之间用密钥认证,agent 不必暴露到公网,本地机器还可以走 Unix socket,省掉一个监听端口。官方GitHub 仓库在 2026-10-29 抓取时显示 26.6k stars、1.1k forks,许可为 MIT。

版本节奏偏快。GitHub Releases 页面列出的当前版本是 v0.21.1,发布于 2026-10-22,Linux amd64 的 agent 安装包约 4.28MB。

hub 还带多用户、OAuth 与 OIDC 登录、REST API 和自动备份,备份可写本地磁盘或 S3 兼容存储。小团队可以让每人管自己的机器,管理员再按需共享系统,账号体系不用另搭。

Docker 部署:hub 与 agent 两份 compose

官方快速开始提供单二进制与 Docker、Podman 两条路径。下面按 Docker 方式整理,hub 和被监控机器各一份 compose 文件。

  1. 在放面板的机器上建目录,写 hub 的 compose:镜像 henrygd/beszel,把 ./beszel_data 挂到 /beszel_data,映射 8090 端口。
  2. 把 APP_URL 改成实际访问地址,执行 docker compose up -d,浏览器打开 8090 创建管理员账号。
  3. 在被监控机器上按 Add System 对话框给出的配置启动 agent,填入 KEY;要容器指标就只读挂载 /var/run/docker.sock。
  4. 回到面板填主机地址,状态转绿后曲线开始入库。

0.12.0 起,hub 多了通用令牌:在 /settings/tokens 生成后,agent 可以先启动再配对,不用提前把公钥写进环境变量。批量铺 agent 时这一步省事不少。同类自托管项目的目录与卷组织,可以参照站内Karakeep 的 Docker 部署记录。

变量位置作用
APP_URLhub面板对外访问地址,套反向代理后要改成实际域名
KEYagenthub 生成的公钥,用于配对
TOKENagent通用令牌,0.12.0 起可替代预先配置
HUB_URLagentagent 回连 hub 的地址,要带协议头
LISTENagent监听端口或 Unix socket 路径

hub 与 agent 在同一台机器时,官方示例用 /beszel_socket/beszel.sock 作为 Host/IP,容器数据也能取到。跨机部署的示例里 agent 使用 45876 端口,防火墙只需放行 hub 到 agent 的这个端口,不必反向开放。

套反向代理时要记得转发 WebSocket。面板能打开、数据却一直转圈,多半是 Nginx 少了 Upgrade 与 Connection 两个头,实时指标走的就是这条长连接。

监控指标与告警怎么配

官方指标清单覆盖主机与容器两层,范围比“轻量”这个词给人的印象宽一些。

类别内容
CPU 与内存主机与容器;内存含 swap 与 ZFS ARC
磁盘使用率与 I/O,支持多分区、多设备
网络主机与容器流量;agent 侧还能做 ICMP、TCP、HTTP、DNS 探测
硬件温度、风扇转速、GPU 占用与功耗、电池电量
存储健康S.M.A.R.T.(含 eMMC 磨损)、ZFS 池状态
容器Docker、Podman 容器状态与单容器资源

告警在系统列表里逐台开启,阈值可按 CPU、内存、磁盘、带宽、温度、负载和在线状态设置。通知走 Shoutrrr URL,在 Settings 的 Notifications 页填一条地址即可。官方通知文档的表格列出 24 种渠道,Telegram、Slack、Discord、Gotify、ntfy、Bark、企业微信、飞书都在其中。

告警逻辑是阈值触发,不是基线学习。好处是行为可预期,坏处是阈值要自己调。起步可以把磁盘 80%、内存 90% 当起点,跑一周再看误报多不多。

和 Netdata、Uptime Kuma 的差异

三者常被放进同一张推荐清单,但回答的问题不同。Beszel 看“我这几台机器现在怎么样”,Netdata 看“这一秒这台机器发生了什么”,Uptime Kuma 看“用户能不能打开我的网站”。

维度BeszelNetdataUptime Kuma
定位多机资源看板单机实时排障外部可用性拨测
采集方式hub 加 agent每台一个 agent无 agent,从外部探测
时间粒度以趋势观察为主,第三方对比称其无秒级采样默认每秒默认 20 秒
容器数据单容器 CPU、内存、网络容器与应用自动发现容器存活状态
告警通知阈值告警,24 种渠道内置规则,多渠道90 多个通知服务
许可MITAgent GPLv3+,UI 与 Cloud 闭源MIT

Netdata 的强项是分辨率与自动发现。官方仓库说明写明默认按秒采集、内置 800 多个集成,还带异常检测。代价是每台机器一套面板与告警,多机统一视图通常要接 Netdata Cloud 或自建父子节点。

Uptime Kuma 从外部敲门,支持 HTTP、TCP、Ping、DNS、关键词与 JSON 查询,默认 20 秒一次,带公开状态页和 90 多个通知服务。它不采集主机资源,所以与 Beszel 是互补关系,而非替代关系。

Beszel 处在中间:有容器级资源和历史曲线,也有 agent 侧的网络探测,但功能清单里没有秒级采样,也没有公开状态页。按一篇第三方对比的说法,它是仪表盘,不是显微镜。

实际选型时不必三选一。两三台 VPS 可以 Beszel 加 Uptime Kuma:前者盯资源和容器,后者盯域名、证书与对外可用性。关键数据库节点再单独放一个 Netdata,出事时进去翻秒级现场。

局限与适用场景

先说清楚它不做什么,选型时更省事。

  • 指标以主机和容器为主,数据库、Nginx 这类应用内部指标不在清单里,需要另配 exporter 或 APM。
  • hub 基于 PocketBase,数据落在内置数据库,没有独立时序库,也没有 PromQL 式的跨数据源查询。
  • 功能清单里没有公开状态页,面向客户的可用性页面要另找工具。
  • agent 要读 Docker socket 才能看容器,等于把容器信息读取权限交给它,多租户环境需评估。
  • hub 自己宕机时没人告警,建议在另一台机器放第二个实例,或加一条外部心跳。

适合个人 VPS、家里的小集群、几台到二十几台的开发或预发环境:想要一块统一看板加阈值通知,不想维护 Prometheus 那一套。需要秒级根因分析、应用指标或大规模多租户场景时,Netdata 与 Prometheus 更合适。习惯用面板管站的读者,站内宝塔面板建站指南里反向代理与端口放行的部分同样适用。

上手建议是先在单机跑 hub 加本地 agent,确认 Unix socket 能通,再铺第二台。告警先配磁盘和离线两类,等曲线跑出基线,再补 CPU 与内存阈值。

需要把 agent 端口暴露到公网吗

不需要。连接方向是 hub 主动连 agent,公网侧只暴露 hub 的 8090。跨机时把 45876 限制为只允许 hub 的 IP 访问即可。

数据存在哪里,怎么备份

数据在 hub 挂载的 beszel_data 目录里,底层是 PocketBase 的数据库文件。打包这个目录就能迁移;也可以在面板里配置定时备份到本地磁盘或 S3 兼容存储。

安装脚本支持哪些系统

安装脚本只覆盖 Linux,Windows、macOS 等系统要手动下载对应二进制,再注册成服务运行。官方文档的 Agent Installation 页列出了各平台的做法。

© 版权声明

相关文章