2481 字
12 分钟
拾光坞Docker部署Beszel轻量级监控平台

拾光坞Docker部署Beszel轻量级监控平台#

一、Beszel简介#

Beszel 是一个轻量级的服务器监控平台,包含 Docker 统计信息、历史数据和警报功能。

它拥有友好的 Web 界面、简单的配置,并且开箱即用。它支持自动备份、多用户、OAuth 身份验证和 API 访问。

Beszel官网-快速开始

二、Beszel功能#

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

三、Beszel架构#

Beszel 由两个主要组件组成:中心 (hub) 和 代理 (agent)。

  • 中心 (hub): 一个基于 PocketBase 构建的 Web 应用程序,提供用于查看和管理连接系统的仪表板。
  • 代理 (agent): 在您要监控的每个系统上运行,创建一个最小的 SSH 服务器以将系统指标传递到中心。

四、Beszel支持的指标#

  • CPU 使用率 - 主机系统和 Docker / Podman 容器。
  • 内存使用率 - 主机系统和容器。包括交换分区和 ZFS ARC。
  • 磁盘使用率 - 主机系统。支持多个分区和设备。
  • 磁盘 I/O - 主机系统。支持多个分区和设备。
  • 网络使用率 - 主机系统和容器。
  • 温度 - 主机系统传感器。
  • GPU 使用率 / 温度 / 功耗 - 仅限 Nvidia 和 AMD。必须使用二进制代理。

五、Beszel部署#

1、docker-compose.yml#

1. beszel-hub#

services:
  beszel:
    image: henrygd/beszel
    container_name: beszel
    restart: unless-stopped
    ports:
      - 58090:8090
    volumes:
      - ./beszel_data:/beszel_data

2. beszel-agent#

services:
  beszel-agent:
    image: henrygd/beszel-agent
    container_name: beszel-agent
    restart: unless-stopped
    network_mode: host
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      # 通过在 /extra-filesystems 中挂载文件夹来监控其他磁盘/分区
      # - /mnt/disk1/.beszel:/extra-filesystems/disk1:ro
    environment:
      LISTEN: 45876
      KEY: '<公钥>'
TIP

公钥如何获取?
在添加新系统时,中心 (hub) 的 Web UI 中提供了可供复制/粘贴的 agent公钥 docker-compose.yml二进制安装命令

NOTE

一台设备可以使用多个公钥,使用环境变量KEY_FILE
设置从文件中读取公钥(可多个,一行一个),而不是从环境变量中读取。

NOTE

为什么使用host网络模式?
代理必须使用主机网络模式才能访问主机的网络接口统计数据。这会自动暴露端口,因此如果需要,请使用环境变量更改端口。

如果您不需要主机网络统计数据,可以从 compose 文件中删除该行并手动映射端口。

连接到本地代理时,localhost 将不起作用,因为容器位于不同的网络中。请参阅 入门指南 中的 Unix 套接字连接示例。

2、docker run 部署#

1. beszel-hub#

mkdir -p ./beszel_data && \
docker run -d \
  --name beszel \
  --restart=unless-stopped \
  -v ./beszel_data:/beszel_data \
  -p 58090:8090 \
  henrygd/beszel

2. beszel-agent#

docker run -d \
  --name beszel-agent \
  --network host \
  --restart unless-stopped \
  -v /var/run/docker.sock:/var/run/docker.sock:ro \
  # 通过在 /extra-filesystems 中挂载文件夹来监控其他磁盘/分区
  # -v /mnt/disk1/.beszel:/extra-filesystems/disk1:ro
  -e KEY="<公钥>" \
  -e LISTEN=45876 \
  henrygd/beszel-agent:latest

3、拾光坞 NAS 部署#

1.下载镜像#

拾光坞客户端-容器服务-镜像商店-搜索beszel,选择第一个henrygd/beszel和第二个henrygd/beszel-agent,导入镜像。

img

2.创建容器#

2.1 beszel-hub#

img

基础设置

  • 容器名:beszel-hub
  • 启用性能限制:2核 512MB
  • 启用开机自启:
  • 启用特权模式:

img

目录映射

  • /个人空间/docker_storage/beszel-hub : /beszel_data

img

网络设置
Bridge模式

img

端口映射

  • 8090 : 58090

img

点击创建,完成后启动容器即可。

访问容器 待容器启动完成后访问容器web页面
浏览器访问 http://{拾光坞内网ip}:58090

TIP

注意替换为你的设备内网IP!

img

首次访问beszel-hub需要创建管理员账号

获取公钥
创建管理员账号登陆后 点击右上角+ 添加 客户端

img

先点击复制公钥

img

TIP

复制好公钥 等会创建agent要用到

2.2 beszel-agnet#

img

基础设置

  • 容器名:beszel-agent
  • 启用性能限制:2核 512MB
  • 启用开机自启:
  • 启用特权模式:

img

目录映射

  • /个人空间/docker_storage/beszel-agent : /extra-filesystems/disk1
TIP

如果你有外接硬盘也想监控的话可以一起映射上去

  • /usb2/docker_storage/beszel-agent : /extra-filesystems/disk2
  • /usb3/docker_storage/beszel-agent : /extra-filesystems/disk3
    以此类推
TIP

拾光坞因为未开放docker.sock,所以无法对Docker进行监控

img

网络设置
Host模式

img

端口映射

TIP

host网络模式无须映射端口

环境变量

  • KEY = 刚才在beszel-hub网页端复制的公钥
  • LISTEN = 45876
NOTE

如果设置多个公钥的话(即多个beszel-hub),可以使用KEY_FILE变量
以本文步骤为例,将多个公钥保存到一个文件中(一行一个)
只需将公钥文件上传到映射本地路径/个人空间/docker_storage/beszel-agent/
再将KEY_FILE变量设置为:/extra-filesystems/disk1/{Key文件名}

img

点击创建,完成后启动容器即可。

六、Beszel-hub添加监控客户端#

1、访问beszel-hub容器#

浏览器访问 http://{拾光坞内网ip}:58090

管理员账号刚才已经创建过了

登录点击右上角 + 添加 客户端

img

2、添加新客户端#

  • Docker
  • 名称:拾光坞N3 (自定义)
  • 主机/IP:设备内网ip
  • 端口:45876
  • 公钥:默认

点击添加客户端

img

3、添加成功效果展示#

img
img
img

TIP

拾光坞因为未开放docker.sock,所以无法对Docker进行监控。
GPU监控仅适用于二进制代理,Docker 代理不支持 GPU 监控。
如果需要监控gpu,参考官方教程

七、Beszel-hub设置监控邮件告警#

1、获取邮箱授权码#

本文以QQ邮箱为例

TIP

为什么使用QQ邮箱?
因为qq邮箱可以在手机微信qq开启来信通知,
到手机微信-搜索QQ邮箱提醒-启用并绑定你的邮箱
这样我就能及时的收到邮件提醒,当然你开其他邮箱软件也可以,随意。

到QQ邮箱网页端-登录-右上角账号与安全-安全设置-*SMTP*服务

img

生成授权码

img

TIP

将授权码复制下来,待会要用

2、Beszel-hub设置告警邮箱#

登录到Beszel-hubweb页面首页,点击右上角小人图标,点击系统,进入Beszel后台系统

TIP

Beszel后台系统使用的是Beszel-hubweb页面首页账号密码

img

进入之后,点击左侧设置图标,在点击Mail settings进入告警邮箱设置

img

SMTP服务设置

  • Sender name : Nas系统监控通知
  • Sender address : {你的邮箱地址}
  • SMTP server host : smtp.qq.com
  • Port : 465
  • Username : {你的邮箱地址}
  • Password : {上述复制的邮箱授权码}
  • TLS encryption : Always
  • AUTH method : LOGIN

img

填好后点击右下方的Save changes保存配置
保存后,再点下相同位置的Send test mail,发送测试邮件,确认是否可用

img

成功发送并成功收到邮件👌

img

3、Beszel-hub配置agent的告警监控项#

回到Beszel-hubweb页面首页,点击已添加客户端右侧的铃铛图标

img

根据你的需求添加配置告警项

img

邮件告警效果

img

八、使用拾光穿透实现异地离线告警#

上面所述的部署教程是将Beszel-hubBeszel-agent部署在同一台设备上,
这个时候,如果主机宕机或者断网的话,将无法发送离线告警出来。
所以,我们需要将hub和agent分别部署在两个地方两个网络下。

TIP

如果是公网服务器的话直接分开部署就行了,这里主要说的是没有公网ip的NAS或主机

假如,我是说假如你有两台NAS,两台拾光坞NAS,并且一台在家里一台在公司的话。
那么你就可以通过拾光穿透服务,将Beszel-agent端口45876映射出来,实现异地监控。
比如NAS1NAS2都同时部署Beszel-hubBeszel-agent,然后
NAS1Beszel-hub监听NAS2Beszel-agent
NAS2Beszel-hub监听NAS1Beszel-agent
这样就可以实现异地监控,一台NAS断电或断网,另一台NAS都能及时的告警出来。✌️

TIP

不一定是两台NAS,实际上长期不关机的电脑主机也可以部署Docker,部署Beszel容器。
Docker-desktop,win系统安装教程

TIP

什么是拾光穿透?
拾光穿透,是拾光坞在硬件设备与内网穿透技术的基础上推出的一个增值服务,旨在解决用户的第三方内网穿透需求,无需复杂设置,只需要通过客户端轻点几下,就可以实现用户对内网穿透的需求!

1、拾光坞使用拾光穿透映射Beszel-agent端口#

这里就不从开启拾光穿透套餐说起了,直接展示拾光穿透映射45876端口
拾光坞Pc端 - 应用 - 拾光穿透 - 云盘配置

img

TIP

配置好后只需要复制这里的公网域名:公网端口添加到Beszel-hub即可。

TIP

拾光穿透支持穿透同网段的其他设备ip端口,
如果是拾光坞本机服务建议直接默认的127.0.0.1+端口即可
如果是其他设备,则填对应设备的ip+端口

拾光坞免费套餐是每个月1G流量。完全足够使用。

2、添加拾光穿透后的域名端口到Beszel-hub#

回到Beszel-hub的web页面-添加客户端

  • 主机/IP :上面设置的拾光坞穿透公网域名
  • 端口:上面设置的拾光坞穿透公网端口

img

添加成功后就可以实现异地离线监控您的内网设备啦

3、异地离线告警展示#

img

拾光坞Docker部署Beszel轻量级监控平台
https://www.imxizhen.asia/posts/docker/beszel/
作者
imxizhen
发布于
2025-04-22
许可协议
CC BY-NC-SA 4.0