Beszel:轻量易用的服务器监控
在先前的系列文章中(已升天),我们介绍过基于 Grafana / Prometheus 的服务器性能指标监控系统,但是那样的一套系统相当复杂。实际上对于家庭服务器来说,一个简单且易于使用、能够看到服务器基本负载、有指标报警的系统就已经满足需求了。于是乎本期我们来介绍一个简单好用的性能监控系统:Beszel。
在开始之前
首先,我们应该简单讲讲 Beszel 的系统构成,它类似于 Prometheus 的系统结构,由中心(Hub)和代理(Agent)构成,在任意一台设备上部署中心,在需要收集性能数据的设备上部署代理。不同的是,Beszel 只需要部署一个中心即可完成数据的收集和处理,并给你汇总出监控页,不再需要你去操心如何配置线性数据库和设计可视化界面。
与 Grafana / Prometheus 系统相比:
【优点】部署和配置更简单,组件少,Agent 原生支持 Docker 指标监控,警报规则配置更简单。
【缺点】不能自定义监控面板,不支持复杂警报规则,Agent 协议为私有协议。
与 Uptime Kuma 系统相比:
【优点】性能指标更全面,配置简单。
【缺点】需要部署 Agent 组件,只能监控性能指标。
你可以按照自己的需求在这些系统中进行选择。
本文所使用的安装环境为:Docker version 27.5.1 / Docker Compose version v2.32.4。
部署 Beszel
部署中心(Hub)
使用 Docker Compose 进行部署:
services:
beszel-hub:
healthcheck:
test: ['CMD', '/beszel', 'health', '--url', 'http://localhost:8090']
start_period: 5s
interval: 120s
image: henrygd/beszel:latest
ports:
- 8090:8090
restart: unless-stopped
volumes:
- ./data:/beszel_data
启动编排后,访问 http://<SERVER-IP>:8090
即可打开 Beszel Web UI:
此处的 GitHub 登陆是不可用状态,此功能需要配置 OIDC / OAuth 功能,这里直接初始化一个本地用户即可登陆系统:
部署代理(Agent)
此部分可以参考 官方文档-代理安装。注意,当你部署 Agent 时,需要来自 Hub 的公钥才能继续安装,如何获取公钥请参照下一章节:使用 Beszel - 添加监控项。
在绝大多数情况下,我们只需要执行两种部署方式:Docker 部署 / CLI 部署。这两种部署方式存在区别:
Docker 部署:可以获取基本系统资源监控、Docker 容器资源详情监控。
CLI 部署:包括 Docker 部署的全部监控项,额外支持温度监控、GPU 监控。
通过 Docker Compose 部署
如果你的服务器安装有 Docker,那么你应当使用 Docker Compose 来进行部署,其编排文件如下:
services:
core:
environment:
LISTEN: 45876
KEY: '<公钥>'
healthcheck:
test: ['CMD', '/agent', 'health']
start_period: 5s
interval: 120s
image: henrygd/beszel-agent:latest
network_mode: host
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
注意!此处 <公钥> 处需要填写由 Hub 所生成的随机公钥,也就是说,当你在部署 Agent 时,你最好提前在 Hub 里新建一个客户端并生成好公钥,再来部署 Agent。
通过 CLI 部署
在终端运行以下命令可以一键部署 Agent:
curl -sL https://get.beszel.dev -o /tmp/install-agent.sh && sudo chmod +x /tmp/install-agent.sh && sudo /tmp/install-agent.sh -p 45876 -k <公钥>
运行之后按提示输入即可。
注意!此处 <公钥> 处需要填写由 Hub 所生成的随机公钥,也就是说,当你在部署 Agent 时,你最好提前在 Hub 里新建一个客户端并生成好公钥,再来部署 Agent。
使用 Beszel
添加监控项
点击主界面右上角的“添加客户端”即可打开添加客户端弹窗:
此页面需要结合上一章节:部署 Beszel - 部署代理(Agent)来认识。
名称:监控项在面板中的显示名。
主机/IP:Agent 连接地址,这里不仅可以填写IP / 域名,如果你使用 Socket 文件的话这里还可以使用 Socket 文件链接。
端口:如果你不进行调整的话,默认 Agent 开放端口是 45876。
公钥:由中心生成的随机公钥,用于 Agent 部署。
注意!此处的公钥用于 Hub 与 Agent 之间的身份认证,在同一个 Hub 中此公钥不会变化,请不要泄露此密钥!
点击弹窗内的“添加客户端”按钮来保存配置,此时在 Web UI 主页可以看到相应的客户端信息:
点击监控项对应行可以打开客户端详情页面:
设置警报规则
对于所有状态监控系统而言,警报规则就是我们部署它的目的。对于 Beszel,警报规则可以通过点击任意监控条目后面的铃铛图标来打开:
在这个弹窗中,最顶端的 Tab 可以切换你的警报配置是全局的还是仅针对当前监控项,下面的分项开关则分别代表对应的监控项警报条件。在“所有客户端” Tab 中,若勾选“覆盖现有警报”,则会将全部监控项的警报规则清空并重新应用警报规则,这在当你要清空所有警报规则时很有用。
默认警报通过邮件发送,请注意,默认情况下 Beszel 使用 Linux 内置的 sendmail 指令来实现邮件发送,此方式可能会出现邮件发送失败或者被拦截的情况,推荐手动设置 SMTP 服务器来更好的实现和监管邮件发送。点击右上角的齿轮图标可以打开 Beszel 设置,在通知页面里可以设置邮件警报接收人:
在这里点击“配置SMTP服务器”来打开 SMTP 服务器配置页面:
在这里点击“Use SMTP mail server”开关来打开 SMTP 配置,填写完配置项后点击“Save Changes”保存变更即可。