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 功能,这里直接初始化一个本地用户即可登陆系统:

Beszel 主页面

部署代理(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 主页面(添加监控项后)

点击监控项对应行可以打开客户端详情页面:

监控客户端详情

设置警报规则

对于所有状态监控系统而言,警报规则就是我们部署它的目的。对于 Beszel,警报规则可以通过点击任意监控条目后面的铃铛图标来打开:

警报规则设置弹窗

在这个弹窗中,最顶端的 Tab 可以切换你的警报配置是全局的还是仅针对当前监控项,下面的分项开关则分别代表对应的监控项警报条件。在“所有客户端” Tab 中,若勾选“覆盖现有警报”,则会将全部监控项的警报规则清空并重新应用警报规则,这在当你要清空所有警报规则时很有用。

默认警报通过邮件发送,请注意,默认情况下 Beszel 使用 Linux 内置的 sendmail 指令来实现邮件发送,此方式可能会出现邮件发送失败或者被拦截的情况,推荐手动设置 SMTP 服务器来更好的实现和监管邮件发送。点击右上角的齿轮图标可以打开 Beszel 设置,在通知页面里可以设置邮件警报接收人:

设置邮件接收人

在这里点击“配置SMTP服务器”来打开 SMTP 服务器配置页面:

SMTP 服务配置

在这里点击“Use SMTP mail server”开关来打开 SMTP 配置,填写完配置项后点击“Save Changes”保存变更即可。


Beszel:轻量易用的服务器监控
https://blog.tihus.com/archives/e40cb7e2-01fd-4cd4-9e35-77abcdfff565
作者
Yuki
发布于
2025年04月29日
许可协议