VPS 轻量监控面板盘点(Beszel/Netdata/Dashy):一眼掌握服务器(2026)
2026-08-15 · DevCraft Studio
服务器跑着跑着就失联?本文盘点 Beszel、Netdata 与 Dashy 等轻量监控/导航面板,对比资源占用与功能,讲清 VPS 上 Docker 部署、告警(Telegram/邮件)与多机总览,让你一眼掌握所有机器。
延伸阅读
更多相关攻略推荐:Ollama AI系列(2):VPS上的AI推理与API应用、Ollama AI系列(2):VPS上的AI推理与API应用、【CPU选型 01】搭载 AMD Ryzen 9950X 的 VPS、ARM / Ampere 席卷 VPS:性价比真香还是兼容陷阱?、Ollama AI系列(2):VPS上的AI推理与API应用。
一、为什么你的 VPS 需要一块监控面板
很多人的 VPS 是「出事前毫无存在感,出事后追悔莫及」——直到用户跑来问「你的网站打不开了」,或者凌晨收到磁盘写满导致数据库崩溃的报警,才意识到自己对面板的轻视。一台长期无人看管的服务器,就像一个没有仪表盘的车:你不知道油(内存)还剩多少,不知道水温(负载)有没有过热,更不知道哪根管线(进程)在悄悄漏液。
归纳起来,监控要替你盯住三件事。第一是可用性:服务到底还活着没有?端口通不通?网站是不是返回了 502?第二是资源:磁盘是不是快满了、内存是不是被某个容器吃光、CPU 是不是长时间跑满。第三是异常:流量是不是被人刷了、日志是不是在暴涨、温度是不是异常升高。对 128 MB / 256 MB 这种入门级「小鸡」尤其重要——几个 GB 的日志轮转没配好,磁盘一夜就能写满;一个内存泄漏的 Java 服务,能把整台机器拖垮。
更重要的是「历史数据」。只看当前值,你只能亡羊补牢;有了按天、按周的趋势曲线,你才能做容量规划——比如发现每月 1 号流量都会翻倍,提前扩容;或者发现某台机器内存占用稳定爬升,趁没崩换新版本。一句话:监控面板不是锦上添花,而是你远程「一眼掌握所有机器」的眼睛。
二、四款工具怎么选:监控与导航是两回事
先厘清一个常见误会:不是所有带图表的面板都是「监控」。下面四款里,只有 Beszel 和 Netdata 是真正的指标监控,Uptime Kuma 是可用性探测 + 状态页,而 Dashy 本质是个导航主页——它顺带能探活,但别指望它替你画 CPU 曲线。先上一张对照(内存为常见场景下的经验值,会随采集项与数据量浮动):
- Beszel:定位 资源监控全能型;内存占用 agent 子 1% CPU、hub 整体通常低于 100 MB;部署难度 低(Docker 一条命令);历史数据 完整可保留;告警 可配置多条件(CPU/内存/磁盘/带宽/温度/负载/状态);多机总览 强(hub 聚合多 agent)。
- Netdata:定位 实时全栈「显微镜」;内存默认约 150 MiB、精简模式约 100 MiB,CPU 默认约 5%;部署难度 低(自带一键脚本或 Docker);历史数据 实时 + 滚动历史;告警 数百条内置规则 + 每指标机器学习异常检测;多机总览 中(Cloud 免费层限 5 节点聚合)。
- Uptime Kuma:定位 可用性 + 公开状态页;内存约 50–100 MB;部署难度 极低;历史数据 极简(仅在线/离线时长);告警 90+ 通知渠道;多机总览 多状态页可映射域名。
- Dashy:定位 自托管导航主页;内存极小(基本是个静态站点);部署难度 低;历史数据 无;告警 无(仅可选红绿探活点);多机总览 否(它不聚合指标)。
一句话选法:想要「服务器身体指标」选 Beszel 或 Netdata;想要「我的站是不是挂了」加一块公开状态页选 Uptime Kuma;想要「所有自托管服务一个入口 + 红绿点」选 Dashy。后面三者常组合使用。
三、Beszel:轻量全能型,Hub + Agent 聚合多机
Beszel 是当前自托管圈子里上升最快的轻量监控之一,用 Go 编写、后端基于 PocketBase,以 MIT 协议开源,截至本文写作最新为 0.18.7。它的精巧之处在于双组件架构:一个 Hub(网页后台,默认端口 8090)负责展示与存储,一个 Agent 跑在每台被监控的机器上,通过 SSH(ED25519,且刻意禁用了 shell 执行)或 WebSocket 把指标推给 Hub,默认端口 45876,连接用的公钥在 Hub 里生成。
因为 Agent 用纯 Go 的 gopsutil 采集、不依赖 CGO,官方称其 CPU 占用长期低于 1%,整套 Hub 也能塞进不到 100 MB 内存里——这正是它敢说自己「比主流方案更轻」的底气。可采集的指标相当全面:CPU、内存(含 swap 与 ZFS ARC)、磁盘用量与磁盘 I/O、网络出入、系统负载、温度传感器,甚至 Nvidia / AMD / Intel 的 GPU 占用与功耗、笔记本电池,以及每个 Docker / Podman 容器的资源曲线;还支持读取 S.M.A.R.T. 来预警硬盘健康(含 eMMC 磨损和 Linux mdraid 阵列状态)。
告警方面,你可以针对 CPU、内存、磁盘、带宽、温度、负载、系统状态分别设阈值,支持「全部满足」或「任一触发」的多条件组合。通知渠道通过 Shoutrrr 方案打通 Discord、Slack、Telegram、Pushover 等 50+ 服务,也支持邮件(需在 Hub 配 SMTP)和 Webhook。另外它还内置多用户、OAuth / OIDC 单点登录、自动备份(可落盘或同步到 S3 兼容存储)和 REST API——迁移 Hub 时带着历史数据几分钟就能在新机器上恢复。移动端则有社区出的非官方 App(iOS 的 Beszel Companion、Android 的 Beszel Mobile)。
四、Netdata:指标最全的「实时显微镜」
如果说 Beszel 是全科医生,Netdata 就是影像科专家。它以 GPL v3 开源,主打每秒采集、一秒延迟的实时可视化,内置 800+ 集成(系统、容器、虚拟机、硬件传感器、OpenMetrics、日志等),开箱即带数百条预置告警。它不需要你写查询语句,仪表板自动生成,点开就能看到从 CPU 各核、内存各缓存、每个网卡队列到某个进程句柄数的细枝末节。
关于「重不重」,要分两层说。Netdata 官方 FAQ 称默认生产环境约占用 5% CPU 和 150 MiB 内存;若关闭机器学习与告警、改用临时存储,可压到低于 1% CPU、约 100 MiB 内存。阿姆斯特丹大学的一项研究还把它评为「最节能的 Docker 监控工具」。但要留意:它那个引以为傲的每指标无监督异常检测(在边缘侧为每个指标训练多个模型)在低端机上并不便宜。因此经验法则是——给 1 GB 内存的小鸡装 Netdata,请开精简模式;真要敞开用全量指标与异常检测,建议 2 GB 内存以上的机器。
部署上,Netdata 提供一键安装脚本(kickstart)和官方 Docker 镜像,网页界面在 19999 端口。需要跨多机统一看板的,可以走 Parent-Child 架构或 Netdata Cloud;后者免费层能聚合约 5 个节点,本地 Agent 本身则不限节点、完全免费。
五、Uptime Kuma:可用性探测与状态页专家
Uptime Kuma 用 Node.js(要求 ≥ 20.4)+ Vue 3 构建,当前 2.5.0,是「想找个自托管的 Uptime Robot」这一需求的最佳答案。它不关心你 CPU 用了多少,只关心服务在不在、通不通。它支持 10 类监控对象:HTTP(s)、TCP、HTTP(s) 关键字、HTTP(s) Json 查询、WebSocket、Ping、DNS 记录、Push、Steam 游戏服务器,以及 Docker 容器。默认每 20 秒探一次,延迟和证书到期都会画成图表。
它的强项是通知与状态页:90+ 种通知渠道,含 Telegram、Discord、Gotify、Slack、Pushover、邮件(SMTP);还能生成多个公开状态页并映射到独立域名,对外展示「本服务当前状态」。配合 2FA、代理支持和证书信息展示,做一块给客户或朋友看的「服务健康看板」非常合适。资源上约 50–100 MB 内存,几乎不挑机器。
六、Dashy:它不是监控,是导航面板(但能顺手探活)
Dashy(最新 4.5.11,MIT)的定位是「自托管玩家的主页」——把你在家里或 VPS 上跑的所有服务(宝塔、Cloudreve、Emby、Wiki…)做成一排漂亮的磁贴入口。它支持单文件 YAML(conf.yml)或可视化配置编辑器、丰富的小部件、主题换肤、即时搜索与快捷键、多页面,以及 10+ 语言(含简体中文 zh-CN),还能装成 PWA、加基础鉴权或 Keycloak 单点登录。
关键区别:Dashy 不是监控工具。它只在配置里可选地开启两种探活——statusCheck(对某个 URL 发请求看 HTTP 状态码)和 pingCheck(发 ICMP 包看主机是否存活),刷新间隔你自己定。开启后磁贴会显示红/绿小圆点,鼠标悬停能看到响应时间。这足够告诉你「某个服务挂没挂」,但画不出资源曲线、存不了历史。正确用法是:把它当作入口页,旁边再配 Beszel(看指标)或 Uptime Kuma(看可用性)。
七、Docker 部署实战:关键 compose 片段
四款都能用 Docker 跑起来。下面给出最关键的片段(生产环境建议把端口绑到 127.0.0.1,再套一层反代并开启 WebSocket 支持)。
Beszel Hub(网页后台):
services:
beszel:
image: henrygd/beszel:latest
ports:
- "127.0.0.1:8090:8090"
volumes:
- beszel_data:/beszel_data
restart: unless-stopped
volumes:
beszel_data:Beszel Agent(每台被监控机各跑一个,KEY 从 Hub 的「添加系统」处复制):
services:
beszel-agent:
image: henrygd/beszel-agent:latest
environment:
- PORT=45876
- KEY=把这里换成Hub给的公钥
- HUB_URL=http://你的Hub内网IP:8090
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stoppedUptime Kuma:
services:
uptime-kuma:
image: louislam/uptime-kuma:2
ports:
- "127.0.0.1:3001:3001"
volumes:
- uptime_kuma_data:/app/data
restart: unless-stopped
volumes:
uptime_kuma_data:Netdata(开 SYS_PTRACE 以便采集进程细节):
services:
netdata:
image: netdata/netdata:latest
ports:
- "127.0.0.1:19999:19999"
cap_add:
- SYS_PTRACE
security_opt:
- apparmor:unconfined
volumes:
- netdata_data:/var/lib/netdata
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped
volumes:
netdata_data:Dashy(配置写在挂载目录的 conf.yml):
services:
dashy:
image: lissy93/dashy:latest
ports:
- "127.0.0.1:4000:8080"
volumes:
- ./user-data:/app/user-data
restart: unless-stopped小提示:Beszel 的 Agent 与 Hub 若在同一台 Docker 宿主机,别用 localhost 互通,应改用 Unix socket 共享卷;反代记得放行 SSE / WebSocket(Upgrade、Connection 头),否则实时数据不刷新。
八、把告警接到 Telegram / 邮件 / Webhook,并做多机总览
监控的价值一半在「看见」,一半在「出事能叫你」。最实用的通道是 Telegram:用 @BotFather 建一个机器人拿到 token,再把你的 chat id 填进通知设置,手机立刻能收推送,比邮件更及时。邮件适合走你现有 SMTP(比如厂商或域名邮箱),无需额外 App。Webhook / Shoutrrr 则能转发到企业微信、钉钉、Discord、Slack 等几乎所有平台——Beszel 用 Shoutrrr URL 一把梭,Uptime Kuma 直接在通知里选渠道。
多机与家庭总览是 Beszel 的拿手好戏:你在内网或一台稍好的中心机部署 Hub,家里 NAS、各台 VPS、树莓派都只装轻量 Agent 并指向同一个 Hub,于是一块页面就能纵览所有机器的 CPU、内存、磁盘与容器,权限还能按用户隔离、由管理员共享。典型组合拳是:Beszel 看「身体指标」、Uptime Kuma 对外发「状态页」、Dashy 做「服务入口」,三者各司其职,整体内存开销加起来往往还不到一个 Prometheus + Grafana 栈。
#VPS监控 #Beszel #Netdata #自托管 #Docker