核心功能解析:从数据采集到智能预警
1. 多维度资源监控
基础指标:实时统计 CPU、内存、磁盘 I/O、网络带宽及温度数据。
Docker 容器细化:展示每个容器的资源消耗趋势,帮助优化容器配置。
历史数据分析:长期记录设备运行状态,便于回溯性能瓶颈。
2. 告警与通知
用户可自定义阈值(如 CPU 使用率超过 90%),触发告警后通过邮件或 Webhook 推送通知,确保问题及时处理。部分用户通过集成第三方服务(如钉钉、Slack),进一步扩展了告警渠道。
3. 安全与权限管理
OAuth2/OIDC 支持:兼容 Google、GitHub 等身份提供商,增强登录安全性。
多用户隔离:不同用户拥有独立视图,管理员可灵活分配权限。
4. 数据持久化与备份
支持本地存储或 S3 兼容云存储,自动备份监控数据,避免数据丢失。
技术架构:服务端与客户端的协同
Beszel 采用 Hub-Agent 分离式架构,兼顾灵活性与扩展性:
Hub(服务端):基于 PocketBase 构建,提供 Web 仪表盘,负责数据汇总与展示。用户通过浏览器访问 IP:8090 即可查看监控面板。
Agent(客户端):部署于被监控设备,通过轻量级 SSH 服务器采集系统指标并传输至 Hub。Agent 需访问 Docker 守护进程(/var/run/docker.sock)以获取容器数据。
安装部署
二进制安装
csharp
#beszel安装
# 下载并运行Beszel服务端 https://github.com/henrygd/beszel/releases
wget https://github.com/henrygd/beszel/releases/download/v0.17.0/beszel_linux_amd64.tar.gz
tar zxf beszel_linux_amd64.tar.gz
nohup ./beszel serve --http 172.166.46.1:8090 &
#为了让Beszel开机自启,我们可以创建systemd服务文件:
# /etc/systemd/system/beszel.service
[Unit]
Description=Beszel Monitoring Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/data/beszel
ExecStart=/data/beszel/beszel serve --http 172.166.46.1:8090
Restart=always
RestartSec=5
[Install]
WantedBy=multi-user.target
登陆页面、创建用户,并创建KEY


csharp
# 复制安装beszel-agent的命令后,直接到mysql服务器执行 #
或者使用二进制安装beszel-agent
csharp
# 在被监控服务器上下载Agent
wget https://github.com/henrygd/beszel/releases/download/v0.17.0/beszel-agent_linux_amd64.tar.gz
tar zxf beszel-agent_linux_amd64.tar.gz
# 启动Agent
./beszel-agent --server http://your-beszel-server:8090 --key your-api-key
#这个key之还是需要在beszel页面上获取
docker安装
beszel安装
csharp
services:
beszel:
image: 'henrygd/beszel'
ports:
- '8090:8090'
volumes:
- ./beszel_data:/beszel_data
登陆页面、创建用户,并查看KEY
beszel-agent安装
csharp
services:
beszel-agent:
image: 'henrygd/beszel-agent'
network_mode: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
PORT: 45876
KEY: '从Hub获取的公钥'
KEY一样的需要在beszel页面上查看
监控与告警
告警值


选择你要告警的值
告警方式
配置步骤:
在"Settings > Notifications"添加通知渠道
邮件:smtp://user:pass@smtp.example.com:587
钉钉:dingtalk://access_token@webhook
企业微信:wecom://corpid@secret/agentid

csharp
注意不同的告警方式有不同的写法