beszel 轻量级服务器监控中心

Beszel 是一款开源的轻量级服务器资源监控工具,能够对服务器的关键资源展开实时监控,同时会记录下详实的历史数据。

它以直观的界面展现 CPU、内存、磁盘 I/O 等重要指标,还能对 Docker 容器的运行状态进行监控,帮助用户更清晰地把握容器的性能状况。

此外,Beszel 拥有告警功能,一旦系统出现异常,可及时向管理员发出提醒,为系统的稳定运行保驾护航。凭借其简易的安装和配置流程,Beszel 特别适合中小型服务器的日常监控需求,能为用户带来极大的便利。

Screenshot of beszel dashboard and system page

主要特性

  • 轻量级: 比主流解决方案体积更小,资源占用更少。
  • 简单: 易于设置,无需暴露于公共互联网。
  • Docker 统计: 跟踪每个容器的 CPU、内存和网络使用历史记录。
  • 告警: 可针对 CPU、内存、磁盘、带宽、温度和状态配置告警。
  • 多用户: 支持每个用户管理自己的系统。管理员可在用户间共享系统。
  • OAuth / OIDC: 支持多种 OAuth2 提供商。可禁用密码认证。
  • 自动备份: 从磁盘或兼容 S3 的存储中保存和恢复数据。
  • REST API: 在您自己的脚本和应用程序中使用或更新数据。

目前还有以下问题:

  1. 被控无法修改,当你在主控界面天街被控以后,无法修改.可能是由于ssh密钥通信的原因.但是连被控的名字都无法修改就有点过分了.
  2. IPV6支持不好,目前github里面有不少人提了这个问题.作者说会在下个版本修复这个问题.
  3. 多磁盘支持不好,目前作者介绍的比较少,可以通过手动办法解决:https://github.com/henrygd/beszel?tab=readme-ov-file#monitoring-additional-disks-partitions-or-remote-mounts
  4. 自定义功能少,目前来说在设置页里面无法修改皮肤/站点名字/图标等,有需要的可以进程序自己修改,不过后续升级就会改回来的.
  5. 不支持游客访问,可以设置一个只读的账号.
  6. 少了个流量总共使用了多少监控功能

当然,由于这些缺点也导致了 Beszel 有着超高的易用性,反正就是安装和使用都很简单的意思.

架构

Beszel 由两个主要组件构成:Hub(中心处理节点)和Agent(代理节点)。

Hub:

是一个基于 PocketBase 构建的 Web 应用程序,为查看和管理已连接的系统提供一个仪表盘。

  • 功能: Hub 作为 Beszel 的中心服务器,用于聚合和展示监控数据。它接收从多个系统发来的数据,并在界面上显示服务器资源使用情况,如 CPU、内存、磁盘 I/O 等历史数据。
  • 部署方式: 可以通过单个二进制文件或 Docker 容器运行。Hub 不需要暴露在公共互联网中,增加了安全性。

Agent:

主要安装在你需要监控的服务器上,它会通过SSH方式将健康的数据传输到你的HUB系统汇总。

  • 功能: Agent 是安装在被监控系统上的轻量级程序。它负责收集服务器的资源使用情况,并将数据发送给 Hub。Agent 还支持监控 Docker 容器,跟踪容器的 CPU、内存、网络使用情况。
  • 部署方式: Agent 可以使用 Docker 容器或单个二进制文件进行安装,支持通过简单的环境变量配置多个文件系统和网络接口。

安装

安装HUB

中心可以通过单独的二进制文件或 Docker / Podman 容器运行。

推荐直接使用 docker-compose.yml启动

详细的 docker-componse.yml 配置信息如下:

此配置通常可以直接使用,但在 Web 界面添加系统时需要执行以下步骤:

  1. 使用您的公钥更新 KEY 值,然后再次运行 docker compose up -d 以重新启动代理
  2. 将 host.docker.internal 用作 主机/IP。 请勿使用 localhost 或 127.0.0.1
services:
  beszel:
    image: henrygd/beszel:latest
    container_name: beszel
    restart: unless-stopped
    extra_hosts:
      - host.docker.internal:host-gateway
    ports:
      - 8090:8090
    volumes:
      - ./beszel_data:/beszel_data

  beszel-agent:
    image: henrygd/beszel-agent:latest
    container_name: beszel-agent
    restart: unless-stopped
    network_mode: host
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      PORT: 45876
      # 请勿删除密钥周围的引号
      KEY: '使用“添加系统”对话框复制的公钥进行更新'

初始化管理员

启动中心 (hub) 后,导航至 http://localhost:8090 或您选择的地址。

系统将提示您创建帐户:

用户创建表单截图

配置您的第一个系统

单击右上角的 添加系统 (Add System) 按钮以打开系统创建对话框。本示例中我们使用的是 localhost,但您也可以使用远程代理。

在启动代理之前,请勿点击对话框中的 添加系统 (Add System) 按钮。

系统创建表单截图

启动代理

  1. 从 添加系统 (Add System) 对话框复制 docker-compose.yml 内容。

  2. 创建一个目录来存储代理的 docker-compose.yml 文件。

    mkdir beszel-agent
    cd beszel-agent
    
  3. 创建一个名为 docker-compose.yml 的文件,并粘贴 添加系统 (Add System) 对话框中提供的内容。

    vim docker-compose.yml
    
  4. 启动代理

    docker compose up -d
    

完成添加系统

现在代理正在运行,请单击对话框中的 添加系统 (Add System) 按钮。

您将在表格中看到新系统。如果它变为绿色,则表示一切正常。

系统创建表单截图

如果它变为红色,请查看 官方手册 页面。

其他功能

在主界面选择服务器右边的铃铛可以选择告警,在线/cpu/内存/磁盘/流量/温度等都可以设置触发器,目前通知方式支持Webhook和邮件(需要自己设置发邮件服务器)

点击主界面右上角的那个小人可以选择其余的功能,比如日志和备份等功能,那样子会跳转到另一个面板界面,和主界面是一样的邮箱账号和密码,可以自己进行设置.备份/存储到S3和OAuth2 登录