轻量级服务器资源监控平台Beszel

什么是 Beszel ?

Beszel 是一个轻量级平台,借助 Beszel,可以访问 CPU 和内存使用情况的历史数据,以及 Docker 容器指标(例如特定于容器的 CPU 和内存统计信息)。还能收到针对潜在问题的可自定义警报通知,以便采取主动措施来优化服务器性能。

软件特点:

  • 轻量级:比领先的解决方案小得多,要求也低得多。
  • Docker 统计:每个容器的 CPU 和内存使用历史记录。
  • 警报:可配置 CPU、内存和磁盘使用情况以及系统状态的警报。
  • 多用户:每个用户都有自己的系统。管理员可以跨用户共享系统。
  • 简单:易于设置,不需要任何内容​​在线公开。
  • OAuth / OIDC:支持许多 OAuth2 提供商。可以禁用密码验证。
  • 自动备份:将数据保存到磁盘或 S3 兼容存储并从磁盘或 S3 兼容存储中恢复数据。
  • REST API:在您自己的脚本和应用程序中使用您的指标。

安装

在群晖上以 Docker 方式安装。

Beszel 分为 HubAgent 两部分,Agent 负责数据采集,Hub 端汇聚并展示数据

  • Hub 端的镜像为 henrygd/beszel
  • Agent 端的镜像为 henrygd/beszel-agent

本文折腾时,latest 版本均为 0.1.1

为了省事,老苏把 HubAgent 合并到了一个 docker-compose.yml 中,但是实际上执行是分开的

需要先运行 Hub ,生成一个 Public Key 之后,再运行 Agent

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
version: '3'

services:
beszel:
image: 'henrygd/beszel'
container_name: 'beszel'
restart: unless-stopped
ports:
- '8092:8090'
volumes:
- ./beszel:/beszel_data

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
environment:
PORT: 45876
KEY: <YOUR_PUBLIC_KEY>
FILESYSTEM: /dev/md2 # set to the correct filesystem for disk I/O stats

agent 使用 host 网络模式,因此它可以访问网络接口统计信息。这会自动公开端口,因此如果需要,可以使用环境变量更改端口。

用于磁盘 I/O 统计的文件系统/分区在FILESYSTEM环境变量中指定。可以通过下面的方式来获取,其中群晖上支持 13

  • 运行 df -h 并在 Filesystem 下选择一个选项;
  • 运行 lsblk 并在 NAME下选择一个选项;
  • 运行sudo fdisk -l 并在 Device 下选择一个选项;

任何一种都是可以的,关键就是找到你要监视的硬盘,对老苏而言,就是那个最大的硬盘 /dev/md2

更多环境变量,请参考官方文档:https://github.com/henrygd/beszel#environment-variables

然后执行下面的命令

1
2
3
4
5
6
7
8
9
10
# 新建文件夹 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

1
2
# 一键启动 agent
docker-compose up -d beszel-agent

agent 启动成功后

就会有数据了

如果有多台机器需要监控,只要再运行一次。被监控的主机只要安装 agent 即可

下面👇是老苏在另一台机器上的 docker-compose.yml 文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
version: '3'

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
environment:
PORT: 45876
KEY: ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICFYiBMMsEUVgNA6K7JZysslYqXrX7JVvH9WETHks41+
FILESYSTEM: /dev/md3 # set to the correct filesystem for disk I/O stats

运行👇的命令

1
2
# 一键启动
docker-compose up -d

agent 启动成功后,就能看到数据了

点铃铛图标,可以设置报警

因为时间短,所以数据不多。意思到了就行了

参考文档

henrygd/beszel: A lightweight server monitoring hub with historical data, docker stats, and alerts.
地址:https://github.com/henrygd/beszel