Beszel开发环境搭建:Docker一键启动全流程
为什么选择Docker化部署?
传统服务器监控工具部署往往面临环境依赖复杂、配置步骤繁琐、版本兼容性冲突三大痛点。以Zabbix为例,需依次配置LAMP stack、数据库初始化、Agent注册等流程,平均耗时超过40分钟。而Beszel通过Docker容器化方案,将部署流程压缩至5分钟内,同时保证开发、测试、生产环境的一致性。
读完本文你将掌握:
- 使用Docker Compose一键部署Beszel监控系统
- 配置Agent与Hub的安全通信
- 实现数据持久化与服务自恢复
- 常见问题诊断与性能优化
环境准备清单
| 依赖项 | 最低版本 | 推荐版本 | 检查命令 |
|---|---|---|---|
| Docker | 20.10.0+ | 24.0.5+ | docker --version |
| Docker Compose | 2.0.0+ | 2.20.3+ | docker compose version |
| 磁盘空间 | 1GB | 5GB+ | df -h /var/lib/docker |
| 内存 | 1GB | 2GB+ | free -h |
安装Docker环境
# 适用于Ubuntu/Debian系统
sudo apt update && sudo apt install -y docker.io docker-compose-plugin
sudo systemctl enable --now docker
sudo usermod -aG docker $USER # 注销重登录后生效
# 验证安装
docker run --rm hello-world
docker compose version
架构解析:Hub与Agent协同工作流
核心组件说明:
- Hub:基于PocketBase的Web应用,提供 dashboard、数据存储和告警管理
- Agent:轻量级数据收集器,运行在目标服务器,采集CPU/内存/磁盘/容器指标
- 通信方式:WebSocket(套接字)加密连接,支持TLS 1.3传输加密
一键部署步骤
1. 获取项目代码
# 克隆仓库
git clone https://gitcode.com/GitHub_Trending/be/beszel
cd beszel/supplemental/docker/same-system
# 查看版本信息(当前稳定版:0.12.7)
grep -A 3 'const Version' ../../../beszel/version.go
2. 配置Docker Compose
创建docker-compose.yml(已提供模板,关键配置说明如下):
version: '3.8'
services:
beszel: # Hub服务
image: 'henrygd/beszel:0.12.7' # 固定版本号,避免自动更新
container_name: 'beszel-hub'
restart: unless-stopped
ports:
- '8090:8090' # Web界面端口
volumes:
- ./beszel_data:/beszel_data # 数据持久化
environment:
- ADMIN_EMAIL=admin@example.com
- ADMIN_PASSWORD=SecurePass123! # 首次登录后修改
beszel-agent: # 本地Agent
image: 'henrygd/beszel-agent:0.12.7' # NVIDIA GPU用户使用henrygd/beszel-agent-nvidia
container_name: 'beszel-agent'
network_mode: host # 需直接访问主机Docker
restart: unless-stopped
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # 只读访问Docker
environment:
PORT: 45876
KEY: 'your-secure-key-here' # 与Hub配对的密钥
FILESYSTEM: /dev/sda1 # 监控的文件系统
# NVIDIA_VISIBLE_DEVICES: all # GPU监控启用
3. 启动服务集群
# 生成安全密钥(替换docker-compose.yml中的KEY)
openssl rand -hex 16
# 启动服务
docker compose up -d
# 检查状态
docker compose ps
# 预期输出:
# NAME IMAGE COMMAND STATUS PORTS
# beszel-hub henrygd/beszel:0.12.7 "/beszel" Up 5 seconds 0.0.0.0:8090->8090/tcp
# beszel-agent henrygd/beszel-agent:0.12.7 "/beszel-agent" Up 5 seconds
4. 访问与初始化
- 打开浏览器访问:
http://服务器IP:8090 - 使用配置的ADMIN_EMAIL和ADMIN_PASSWORD登录
- 导航至Systems > Add System,输入Agent的IP和密钥
关键配置详解
数据持久化方案
| 存储路径 | 用途 | 备份建议 |
|---|---|---|
| ./beszel_data | Hub配置、监控数据、用户信息 | 每日备份,保留30天 |
| /var/run/docker.sock | Docker容器指标采集 | 无需备份 |
# 创建自动备份脚本 backup.sh
#!/bin/bash
BACKUP_DIR=/backup/beszel
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
docker exec beszel-hub sh -c 'tar -czf - /beszel_data' > $BACKUP_DIR/beszel_$TIMESTAMP.tar.gz
find $BACKUP_DIR -name 'beszel_*.tar.gz' -mtime +30 -delete
Agent高级配置
environment:
# 基础配置
PORT: 45876
KEY: 'your-secure-key-here'
HUB_URL: 'ws://127.0.0.1:8090/ws'
# 高级配置
EXTRA_FILESYSTEMS: 'sdb1,sdc'
TEMP_THRESHOLD: '75' # 温度告警阈值(°C)
LOG_LEVEL: 'info' # debug/info/warn/error
UPDATE_INTERVAL: '10s' # 数据采集间隔
故障诊断与性能优化
常见问题排查
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| Hub启动失败 | 端口冲突 | netstat -tulpn | grep 8090 查找占用进程 |
| Agent连接超时 | 防火墙拦截 | sudo ufw allow 45876/tcp 开放端口 |
| 容器数据缺失 | Docker权限不足 | 添加 --group-add docker 到Agent服务 |
| 磁盘占用过高 | 日志未轮转 | 配置LOG_ROTATION_SIZE=100M和LOG_ROTATION_MAX=5 |
性能调优建议
# Hub性能优化
beszel:
environment:
- CACHE_SIZE=5000 # 指标缓存大小
- DB_PRAGMAS=journal_mode=WAL # SQLite性能优化
resources:
limits:
cpus: '0.5'
memory: 512M
# Agent轻量级配置
beszel-agent:
environment:
- DISABLE_METRICS='gpu,temperature' # 禁用不需要的指标
- COLLECT_CONTAINERS='false' # 仅监控主机时关闭容器采集
自动化与扩展
配置自动更新
# 创建更新脚本 update-beszel.sh
#!/bin/bash
cd $(dirname $0)
docker compose pull
docker compose up -d
# 添加到crontab(每周日凌晨更新)
crontab -e
# 添加:0 3 * * 0 /path/to/update-beszel.sh > /var/log/beszel-update.log 2>&1
多服务器监控扩展
总结与后续学习
通过Docker Compose实现Beszel的一键部署,我们完成了:
- 5分钟内搭建完整监控系统
- 配置安全通信与数据持久化
- 实现服务自动恢复与更新
下一步建议:
- 配置SMTP/钉钉告警通知
- 集成Prometheus/Grafana
- 部署Kubernetes监控(使用beszel-agent:kube版本)
收藏本文,关注后续《Beszel告警系统深度配置》和《大规模部署最佳实践》
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



