拾光坞Docker部署Beszel轻量级监控平台
一、Beszel简介
Beszel 是一个轻量级的服务器监控平台,包含 Docker 统计信息、历史数据和警报功能。
它拥有友好的 Web 界面、简单的配置,并且开箱即用。它支持自动备份、多用户、OAuth 身份验证和 API 访问。
二、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
,导入镜像。
2.创建容器
2.1 beszel-hub
基础设置
- 容器名:
beszel-hub
- 启用性能限制:
2核 512MB
- 启用开机自启:
是
- 启用特权模式:
否
目录映射
- /个人空间/docker_storage/beszel-hub :
/beszel_data
网络设置Bridge
模式
端口映射
8090
: 58090
点击创建,完成后启动容器即可。
访问容器 待容器启动完成后访问容器web页面
浏览器访问 http://{拾光坞内网ip}:58090
TIP注意替换为你的设备内网IP!
首次访问beszel-hub
需要创建管理员账号
获取公钥
创建管理员账号登陆后 点击右上角+ 添加 客户端
先点击复制公钥
TIP复制好公钥 等会创建agent要用到
2.2 beszel-agnet
基础设置
- 容器名:
beszel-agent
- 启用性能限制:
2核 512MB
- 启用开机自启:
是
- 启用特权模式:
否
目录映射
- /个人空间/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进行监控
网络设置Host
模式
端口映射
无
TIPhost网络模式无须映射端口
环境变量
- KEY =
刚才在beszel-hub网页端复制的公钥
- LISTEN = 45876
NOTE如果设置多个公钥的话(即多个beszel-hub),可以使用
KEY_FILE
变量
以本文步骤为例,将多个公钥保存到一个文件中(一行一个)
只需将公钥文件上传到映射本地路径/个人空间/docker_storage/beszel-agent/
下
再将KEY_FILE
变量设置为:/extra-filesystems/disk1/{Key文件名}
点击创建,完成后启动容器即可。
六、Beszel-hub添加监控客户端
1、访问beszel-hub
容器
浏览器访问 http://{拾光坞内网ip}:58090
管理员账号刚才已经创建过了
登录点击右上角 + 添加 客户端
2、添加新客户端
- Docker
- 名称:拾光坞N3 (自定义)
- 主机/IP:设备内网ip
- 端口:45876
- 公钥:默认
点击添加客户端
3、添加成功效果展示
TIP拾光坞因为未开放
docker.sock
,所以无法对Docker进行监控。
GPU监控仅适用于二进制代理,Docker 代理不支持 GPU 监控。
如果需要监控gpu,参考官方教程
七、Beszel-hub设置监控邮件告警
1、获取邮箱授权码
本文以QQ邮箱为例
TIP为什么使用QQ邮箱?
因为qq邮箱可以在手机微信qq开启来信通知,
到手机微信-搜索QQ邮箱提醒
-启用并绑定你的邮箱
这样我就能及时的收到邮件提醒,当然你开其他邮箱软件也可以,随意。
到QQ邮箱网页端-登录-右上角账号与安全-安全设置-*SMTP*服务
生成授权码
TIP将授权码复制下来,待会要用
2、Beszel-hub设置告警邮箱
登录到Beszel-hub
web页面首页,点击右上角小人图标
,点击系统
,进入Beszel后台系统
TIPBeszel后台系统使用的是
Beszel-hub
web页面首页账号密码
进入之后,点击左侧设置
图标,在点击Mail settings
进入告警邮箱设置
SMTP服务设置
- Sender name :
Nas系统监控通知
- Sender address :
{你的邮箱地址}
- SMTP server host :
smtp.qq.com
- Port :
465
- Username :
{你的邮箱地址}
- Password :
{上述复制的邮箱授权码}
- TLS encryption :
Always
- AUTH method :
LOGIN
填好后点击右下方的Save changes
保存配置
保存后,再点下相同位置的Send test mail
,发送测试邮件,确认是否可用
成功发送并成功收到邮件👌
3、Beszel-hub配置agent的告警监控项
回到Beszel-hub
web页面首页,点击已添加客户端右侧的铃铛
图标
根据你的需求添加配置告警项
邮件告警效果
八、使用拾光穿透实现异地离线告警
上面所述的部署教程是将Beszel-hub
和Beszel-agent
部署在同一台设备上,
这个时候,如果主机宕机或者断网的话,将无法发送离线告警出来。
所以,我们需要将hub和agent分别部署在两个地方两个网络下。
TIP如果是公网服务器的话直接分开部署就行了,这里主要说的是没有公网ip的NAS或主机
假如,我是说假如你有两台NAS,两台拾光坞NAS,并且一台在家里一台在公司的话。
那么你就可以通过拾光穿透
服务,将Beszel-agent
端口45876
映射出来,实现异地监控。
比如NAS1
和NAS2
都同时部署Beszel-hub
和Beszel-agent
,然后NAS1
的Beszel-hub
监听NAS2
的Beszel-agent
,NAS2
的Beszel-hub
监听NAS1
的Beszel-agent
,
这样就可以实现异地监控,一台NAS断电或断网,另一台NAS都能及时的告警出来。✌️
TIP不一定是两台NAS,实际上长期不关机的电脑主机也可以部署Docker,部署Beszel容器。
Docker-desktop,win系统安装教程
TIP什么是拾光穿透?
拾光穿透,是拾光坞在硬件设备与内网穿透技术的基础上推出的一个增值服务,旨在解决用户的第三方内网穿透需求,无需复杂设置,只需要通过客户端轻点几下,就可以实现用户对内网穿透的需求!
1、拾光坞使用拾光穿透映射Beszel-agent端口
这里就不从开启拾光穿透套餐说起了,直接展示拾光穿透映射45876
端口
拾光坞Pc端 - 应用 - 拾光穿透 - 云盘配置
TIP配置好后只需要复制这里的
公网域名
:公网端口
添加到Beszel-hub
即可。
TIP拾光穿透支持穿透同网段的其他设备ip端口,
如果是拾光坞本机服务建议直接默认的127.0.0.1
+端口即可
如果是其他设备,则填对应设备的ip+端口拾光坞免费套餐是每个月1G流量。完全足够使用。
2、添加拾光穿透后的域名端口到Beszel-hub
回到Beszel-hub
的web页面-添加客户端
- 主机/IP :上面设置的拾光坞穿透公网域名
- 端口:上面设置的拾光坞穿透公网端口
添加成功后就可以实现异地离线监控您的内网设备啦