Beszel 是一款开源的轻量级服务器资源监控工具,支持对服务器的关键资源进行实时监控,并记录历史数据。它通过直观的界面展示 CPU、内存、磁盘 I/O 等关键指标,还支持监控 Docker 容器的运行状态,帮助用户更好地了解容器的性能表现。除此之外,Beszel 还具备告警功能,能在系统出现异常时及时提醒管理员,确保系统的稳定运行。通过简易的安装和配置流程,Beszel 非常适合中小型服务器的日常监控需求。
Beszel特点
- 轻量级:比主流解决方案更小,且占用资源更少。
- 简单:设置简便,无需暴露在公共互联网中。
- Docker 统计:跟踪每个容器的 CPU、内存和网络使用历史。
- 告警:可配置的告警功能,针对 CPU、内存、磁盘使用率及系统状态。
- 多用户:每个用户管理自己的系统,管理员可以共享系统给其他用户。
- OAuth / OIDC:支持多种 OAuth2 提供商,可以禁用密码认证。
- 自动备份:可将数据保存到磁盘或兼容 S3 的存储,并支持恢复。
- REST API:可以在你的脚本和应用中使用或更新数据。
Beszel架构
Beszel 的架构是一个基于客户端-服务器模型的监控平台,由Hub(中心服务器)和Agent(代理)组成。
Hub(中心服务器)
- 功能:Hub 作为 Beszel 的中心服务器,用于聚合和展示监控数据。它接收从多个系统发来的数据,并在界面上显示服务器资源使用情况,如 CPU、内存、磁盘 I/O 等历史数据。
- 部署方式:可以通过单个二进制文件或 Docker 容器运行。Hub 不需要暴露在公共互联网中,增加了安全性。
Agent(代理)
- 功能:Agent 是安装在被监控系统上的轻量级程序。它负责收集服务器的资源使用情况,并将数据发送给 Hub。Agent 还支持监控 Docker 容器,跟踪容器的 CPU、内存、网络使用情况。
- 部署方式:Agent 可以使用 Docker 容器或单个二进制文件进行安装,支持通过简单的环境变量配置多个文件系统和网络接口。
Docker部署Beszel
这篇文章xiaoz用Docker Compose来部署Beszel作为演示,我们假设您已经安装好了Docker。
部署Beszel Hub
Hub可以理解为Beszel的务端,负责展示/管理和告警等工作,我们在使用Beszel的时候至少需要一个服务端。接下来通过Docker Compose部署Beszel Hub,详细的docker-compose.yaml
内容如下:
services:
beszel:
image: 'henrygd/beszel'
container_name: 'beszel'
restart: unless-stopped
ports:
- '8090:8090'
volumes:
- ./beszel_data:/beszel_data
然后使用docker-compose up -d
启动,启动成功后通过http://IP:8090
访问WEB页面,并设置一个管理员邮箱和密码,以便后续使用。
部署Beszel Agent
Agent相当于Beszel的客户端,负责采集数据并上报给Hub(服务端),我们需要在每一台服务器都安装Agent,这样就可以监控所有服务器。也是通过Docker Compose部署,首先需要在Beszel后台 - 点击右上角Add System
然后填写服务器IP/端口等信息,再点击Copy docker compose按钮。
会自动生成docker-compose.yaml
内容,如下格式:
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
# monitor other disks / partitions by mounting a folder in /extra-filesystems
# - /mnt/disk1/.beszel:/extra-filesystems/disk1:ro
environment:
PORT: 45876
KEY: "ssh-ed25519 xxx"
# FILESYSTEM: /dev/sda1 # override the root partition / device for disk I/O stats
- 注意:
KEY
请改成自己的
将上面的内容保存为docker-compose.yaml
,并输入命令docker-compose up -d
即可启动Beszel Agent。上面的yaml
配置可以看到使用了HOST
网络模式,并使用45876
作为端口,所以我们还需要在防火墙或安全组放行45876
端口,不然无法通信。方法如下:
# 如果是firewalld
firewall-cmd --zone=public --add-port=45876/tcp --permanent
firewall-cmd --reload
# 如果是ufw
ufw allow 45876
操作完毕后别忘记回到Beszel页面,点击Add System按钮。
然后等待几分钟,就可以在页面看到监控数据啦。
Beszel还有个好处是可以对Docker容器资源进行监控,这一点非常不错。
其它功能
Beszel还可以设置暗黑模式。
也可以设置SMTP的方式发送邮件。
还可以对服务器的指标进行监控告警。
还可以将文件备份到S3协议的对象存储中。(xiaoz也不清楚这部分是日志文件还是什么)
同时Beszel还支持API和Webhook等功能,极大的方便运维和开发人员,有兴趣的朋友可以进一步研究。
浅谈Beszel的优点和缺点
以下是xiaoz个人观点,仅供参考。
Beszel优点
- 安装相对简单
- 轻量简洁,能满足基本的监控需要
- 支持Docker容器资源监控
Beszel缺点
- 界面不支持中文
- 服务器添加后不支持修改,如果要修改好像只能删除后重新添加
- 对多个磁盘的服务器不够友好
- 监控指标不够详细,比如无法监控服务器网络连接数
对比Prometheus
目前xiaoz大多数服务器均使用Prometheus + Grafana监控方案,这套监控方案非常成熟且美观。最近发现Beszel后进行了部署测试,相比之下各有优缺点,如果是公司生产环境个人还是建议Prometheus或Zabbix这种成熟方案。如果是自己的服务器,不在意更多细节指标,Beszel也完全能够满足需要,以下是一个个人整理的非专业对比,仅供参考。
名称/功能 | Beszel | Prometheus |
---|---|---|
安装 | 简单 | 困难 |
使用 | 简单 | 困难 |
监控Docker容器 | 默认支持 | 需要额外配置 |
告警 | 默认支持 | 需要额外配置 |
监控指标 | 一般 | 丰富 |
监控多个磁盘 | 一般 | 友好 |
自动发现 | 不支持 | 支持 |
备注:Beszel对Docker支持非常友好,因此您还可以将Beszel安装到您的NAS设备中!
结语
Beszel 是一款专为轻量化服务器监控设计的开源工具,能够通过简单的配置满足中小型服务器的日常监控需求。在 Docker 环境中,Beszel 的部署特别方便,支持对 Docker 容器资源监控。同时,它还具备告警、数据备份和 API 集成等功能,帮助用户在异常情况发生时快速响应。虽然在一些高级监控功能上比不上 Prometheus 这样的成熟方案,但对于不需要复杂配置的个人服务器或小型项目,Beszel 依然是一个很好的选择。
Beszel项目地址:https://github.com/henrygd/beszel