什么是 Beszel ?
Beszel
是一个轻量级平台,借助Beszel
,可以访问CPU
和内存使用情况的历史数据,以及Docker
容器指标(例如特定于容器的CPU
和内存统计信息)。还能收到针对潜在问题的可自定义警报通知,以便采取主动措施来优化服务器性能。
软件特点:
- 轻量级:比领先的解决方案小得多,要求也低得多。
- Docker 统计:每个容器的
CPU
和内存使用历史记录。 - 警报:可配置
CPU
、内存和磁盘使用情况以及系统状态的警报。 - 多用户:每个用户都有自己的系统。管理员可以跨用户共享系统。
- 简单:易于设置,不需要任何内容在线公开。
- OAuth / OIDC:支持许多
OAuth2
提供商。可以禁用密码验证。 - 自动备份:将数据保存到磁盘或
S3
兼容存储并从磁盘或S3
兼容存储中恢复数据。 - REST API:在您自己的脚本和应用程序中使用您的指标。
安装
在群晖上以 Docker 方式安装。
Beszel
分为 Hub
和 Agent
两部分,Agent
负责数据采集,Hub
端汇聚并展示数据
Hub
端的镜像为henrygd/beszel
;Agent
端的镜像为henrygd/beszel-agent
;
本文折腾时,
latest
版本均为0.1.1
;
为了省事,老苏把 Hub
和 Agent
合并到了一个 docker-compose.yml
中,但是实际上执行是分开的
需要先运行 Hub
,生成一个 Public Key
之后,再运行 Agent
version: '3'services:beszel:image: 'henrygd/beszel'container_name: 'beszel'restart: unless-stoppedports:- '8092:8090'volumes:- ./beszel:/beszel_databeszel-agent:image: 'henrygd/beszel-agent'container_name: 'beszel-agent'restart: unless-stoppednetwork_mode: hostvolumes:- /var/run/docker.sock:/var/run/docker.sock:roenvironment:PORT: 45876KEY: <YOUR_PUBLIC_KEY>FILESYSTEM: /dev/md2 # set to the correct filesystem for disk I/O stats
agent
使用 host
网络模式,因此它可以访问网络接口统计信息。这会自动公开端口,因此如果需要,可以使用环境变量更改端口。
用于磁盘 I/O
统计的文件系统/分区在FILESYSTEM
环境变量中指定。可以通过下面的方式来获取,其中群晖上支持 1
和 3
- 运行
df -h
并在Filesystem
下选择一个选项; - 运行
lsblk
并在NAME
下选择一个选项; - 运行
sudo fdisk -l
并在Device
下选择一个选项;
任何一种都是可以的,关键就是找到你要监视的硬盘,对老苏而言,就是那个最大的硬盘 /dev/md2
更多环境变量,请参考官方文档:https://github.com/henrygd/beszel#environment-variables
然后执行下面的命令
# 新建文件夹 beszel 和 子目录
mkdir -p /volume1/docker/beszel/data# 进入 beszel 目录
cd /volume1/docker/beszel# 将 docker-compose.yml 放入当前目录# 一键启动 hub
docker-compose up -d beszel
注意,这里只启动了 Hub
运行
在浏览器中输入 http://群晖IP:8092
就能看到注册界面
密码不能少于
10
个字符;
登录后的主界面
点 Add System
添加 agent
,第一个 agent
是本机
Name
:主机名称;Host/IP
:主机的IP
地址;Port
:主机端口,如果你要修改,对应的agent
的环境变量PORT
也要对应做修改;Public Key
:点后面的复制按钮,替换掉环境变量中的<YOUR_PUBLIC_KEY>
注意:如果没有使用
https
协议,复制是无用的,需要在弹出框里再复制
点 Add system
保存后,暂时什么都没有
将获取到的 Public Key
替换掉 <YOUR_PUBLIC_KEY>
,现在你的 docker-compose.yml
是这样的
接下来启动 agent
# 一键启动 agent
docker-compose up -d beszel-agent
agent
启动成功后
就会有数据了
如果有多台机器需要监控,只要再运行一次。被监控的主机只安装 agent
即可
下面👇是老苏在另一台机器上的 docker-compose.yml
文件
version: '3'services:beszel-agent:image: 'henrygd/beszel-agent'container_name: 'beszel-agent'restart: unless-stoppednetwork_mode: hostvolumes:- /var/run/docker.sock:/var/run/docker.sock:roenvironment:PORT: 45876KEY: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICFYiBMMsEUVgNA6K7JZysslYqXrX7JVvH9WETHks41+FILESYSTEM: /dev/md3 # set to the correct filesystem for disk I/O stats
运行👇的命令
# 一键启动
docker-compose up -d
当 agent
启动成功后,就能看到数据了
点铃铛图标,可以设置报警
因为时间短,所以数据不多。意思到了就行了
参考文档
henrygd/beszel: A lightweight server monitoring hub with historical data, docker stats, and alerts.
地址:https://github.com/henrygd/beszel