具有历史数据、docker 统计信息和警报的轻量级服务器资源监控中心。
轻量级:比领先的解决方案更小、资源占用更少。
简单:设置简单,无需暴露在公共互联网上。
Docker stats :跟踪每个容器的 CPU、内存和网络使用历史记录。
警报:可配置 CPU、内存、磁盘、带宽、温度和系统状态警报。
多用户:每个用户管理自己的系统。管理员可以跨用户共享系统。
OAuth / OIDC :支持多个 OAuth2 提供商。可以禁用密码验证。
自动备份:从磁盘或 S3 兼容存储保存和恢复数据。
REST API :在您自己的脚本和应用程序中使用或更新您的数据。
Beszel 由两个主要组件组成:集线器和代理。
Hub:一个 Web 应用程序,提供用于查看和管理连接系统的仪表板。建立在 PocketBase 上。
代理:在您想要监控的每个系统上运行,创建一个最小的 SSH 服务器以将系统指标传达到集线器。
如果不使用 docker,请跳过步骤 4-5 并使用二进制文件运行代理。
启动集线器(请参阅安装)。
打开 http://localhost:8090 并创建一个管理员用户。
单击“添加系统”。输入要监控的系统的名称和主机。
单击“复制 docker compose”将代理的 docker-compose.yml 文件复制到剪贴板。
在代理系统上,创建 compose 文件并运行docker compose up
来启动代理。
返回中心,单击对话框中的“添加系统”按钮以完成添加系统。
如果一切顺利,系统应该会变成绿色。如果变成红色,请检查日志页面并参考故障排除提示。
有关法语教程,请参阅 https://belginux.com/installer-beszel-avec-docker/
您可以将集线器和代理安装为单个二进制文件或使用 Docker。
Hub :请参阅示例 docker-compose.yml 文件。
Agent :集线器为代理提供撰写内容,但您也可以引用示例 docker-compose.yml 文件。
代理使用主机网络模式访问网络接口统计信息,这会自动公开端口。如果需要,使用环境变量更改端口。
如果您不需要网络统计信息,请从撰写文件中删除该行并手动映射端口。
提示
如果使用 Linux,请参阅guides/systemd.md 以获取将集线器或代理安装为系统服务的脚本。这也内置于 Web UI 中。
从发布页面下载并运行最新的二进制文件或使用以下命令。
卷曲-sL“https://github.com/henrygd/beszel/releases/latest/download/beszel_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed 's/ armv7l/arm/' | sed 's/aarch64/arm64/').tar.gz" | tar -xz -O 贝泽尔 | tee ./beszel >/dev/null && chmod +x beszel && ls beszel
直接运行集线器:
./贝塞尔服务
卷曲-sL“https://github.com/henrygd/beszel/releases/latest/download/beszel-agent_$(uname -s)_$(uname -m | sed 's/x86_64/amd64/' | sed ' s/armv7l/arm/' | sed 's/aarch64/arm64/').tar.gz" | tar -xz -O 贝泽尔代理 | tee ./beszel-agent >/dev/null && chmod +x beszel-agent && ls beszel-agent
直接运行代理:
PORT=45876 KEY="{PASTE_YOUR_KEY}" ./beszel-agent
使用./beszel update
和./beszel-agent update
更新到最新版本。
姓名 | 默认 | 描述 |
---|---|---|
CSP | 未设置 | 添加具有此值的 Content-Security-Policy 标头。 |
DISABLE_PASSWORD_AUTH | 错误的 | 禁用密码验证。 |
姓名 | 默认 | 描述 |
---|---|---|
DOCKER_HOST | 未设置 | 如果使用代理,则覆盖 docker 主机 (docker.sock)。 1 |
EXTRA_FILESYSTEMS | 未设置 | 请参阅监控其他磁盘、分区或远程安装 |
FILESYSTEM | 未设置 | 用于根磁盘统计信息的设备、分区或安装点。 |
KEY | 未设置 | 用于身份验证的公共 SSH 密钥。在集线器中提供。 |
LOG_LEVEL | 信息 | 记录级别。有效值:“调试”、“信息”、“警告”、“错误”。 |
MEM_CALC | 未设置 | 覆盖默认的内存计算。 2 |
NICS | 未设置 | 用于监控带宽图表的网络接口白名单。 |
PORT | 45876 | 端口或地址:要侦听的端口。 |
SENSORS | 未设置 | 要监控的温度传感器白名单。 |
SYS_SENSORS | 未设置 | 覆盖传感器的系统路径。参见#160。 |
Beszel 支持 OpenID Connect 和许多 OAuth2 身份验证提供程序(请参阅下面的列表)。
访问“身份验证提供商”页面以启用您的提供商。重定向/回调 URL 应为
。
苹果
位桶
不和谐
吉泰亚
吉泰
GitHub
GitLab
谷歌
卡卡奥
即时聊天
邮牛
微软
OpenID 连接
帕特隆 (v2)
Spotify
斯特拉瓦
抽搐
叽叽喳喳
VK
扬德克斯
添加额外磁盘的方法因您的部署方法而异。
使用lsblk
查找分区的名称和安装点。如果遇到问题,请检查代理日志。
注意:图表将使用设备或分区的名称(如果可用),并回退到文件夹名称。您将无法获得网络安装驱动器的 I/O 统计信息。
将目标文件系统中的文件夹装载到容器的/extra-filesystems
目录中。例如:
卷: - /mnt/disk1/.beszel:/extra-filesystems/sdb1:ro - /dev/mmcblk0/.beszel:/extra-filesystems/mmcblk0:ro
将EXTRA_FILESYSTEMS
环境变量设置为要监视的设备、分区或安装点的逗号分隔列表。例如:
EXTRA_FILESYSTEMS =“sdb,sdc1,mmcblk0,/ mnt /网络共享”
由于 Beszel 是基于 PocketBase 构建的,因此您可以使用 PocketBase Web API 和客户端 SDK 从 Beszel 本身外部读取或更新数据。
集线器和代理通过 SSH 进行通信,因此它们不需要暴露在互联网上。即使您将外部身份验证网关(例如 Authelia)放置在集线器前面,它也不会中断或中断集线器和代理之间的连接。
当集线器第一次启动时,它会生成一个 ED25519 密钥对。
代理的 SSH 服务器配置为仅接受使用此密钥的连接。它不提供伪终端或接受输入,因此即使您的私钥被泄露,也无法在代理上执行命令。
管理员可以访问中心中的其他链接,例如备份、SMTP 设置等。创建的第一个用户将自动成为管理员,并且可以登录 PocketBase。
更改用户的角色不会为其创建 PocketBase 管理员帐户。为此,请转到 PocketBase 中的“设置”>“管理员”并手动添加它们。
用户可以创建自己的系统和警报。中心中未显示 PocketBase 设置的链接。
只读用户无法创建系统,但可以查看管理员与他们共享的任何系统并创建警报。
假设代理正在运行,连接可能被防火墙阻止。您有两个选择:
将入站规则添加到代理系统的防火墙以允许到端口的 TCP 连接。检查任何活动的防火墙(例如 iptables)以及云提供商的防火墙设置(如果适用)。
或者,使用 Cloudflare Tunnel、WireGuard 或 Tailscale 等软件安全地绕过防火墙。
您可以通过运行telnet
来测试连接。
如果代理使用主机网络模式而不是集线器,请使用主机名host.docker.internal
添加您的系统,该主机名将解析为主机使用的内部 IP 地址。请参阅示例 docker-compose.yml。
如果两者都使用主机网络模式,则可以使用localhost
作为主机名。
否则,如果代理的container_name
作为主机名。
使用FILESYSTEM
环境变量指定根磁盘统计信息的文件系统/设备/分区。
如果未设置,代理将尝试查找安装在/
上的分区并使用它。这在容器中可能无法正常工作,因此建议设置此值。使用以下方法之一查找正确的文件系统:
运行lsblk
并在“NAME”下选择一个选项。
运行df -h
并在“文件系统”下选择一个选项。
运行sudo fdisk -l
并在“设备”下选择一个选项。
如果容器图表显示空数据或根本不显示,您可能需要启用 cgroup 内存统计。要进行验证,请运行docker stats
。如果显示内存使用量为零,请按照本指南解决问题:
https://akashrajpurohit.com/blog/resolving-missing-memory-stats-in-docker-stats-on-raspberry-pi/
尝试升级代理系统上的 Docker 版本。在运行版本 24 的计算机上观察到此问题,并通过升级到版本 27 得到解决。
较长时间段的记录是通过对较短时间段的统计数据进行平均而创建的。代理必须不间断运行以获得完整的数据集来填充这些记录。
暂停/取消暂停代理超过一分钟将导致数据不完整,从而重置当前间隔的计时。
集线器和代理都是用 Go 编写的,因此您可以轻松地自己构建它们,或者针对不同平台进行交叉编译。如果尚未安装,请先安装 Go。
在/beszel
中运行make
。这将创建一个包含二进制文件的build
目录。
CD 挡板 && 制作
您还可以针对不同平台进行构建:
使操作系统=freebsd ARCH=arm64
通过运行go tool dist list
查看有效选项的列表。
cd beszel && go mod tidy
转到beszel/cmd/agent
并运行以下命令在当前目录中创建二进制文件:
CGO_ENABLED=0 go build -ldflags "-w -s" 。
该中心将 Web UI 嵌入到二进制文件中,因此您必须首先构建网站。我使用 Bun,但如果您愿意,也可以使用 Node.js:
CD 挡板/站点 包子安装 包子运行构建
然后在beszel/cmd/hub
中:
CGO_ENABLED=0 go build -ldflags "-w -s" 。
您可以使用GOOS
和GOARCH
环境变量针对不同平台进行交叉编译。
例如,要为 FreeBSD ARM64 构建:
GOOS=freebsd GOARCH=arm64 CGO_ENABLED=0 go build -ldflags "-w -s" 。
通过运行go tool dist list
查看有效选项的列表。
欢迎贡献,但如果您计划做任何重要的事情,最好先在讨论/问题中与我们联系。
我们使用 Crowdin 来管理翻译。欢迎新语言或对现有翻译的改进!
在不久的将来,我们将提供更多有关为 Beszel 做出贡献的有用信息。
Beszel 已根据 MIT 许可证获得许可。有关更多详细信息,请参阅许可证文件。
Beszel 只需要访问权限即可读取容器信息。对于 linuxserver/docker-socket-proxy 你可以设置CONTAINERS=1
。 ↩
已用内存的默认值基于 gopsutil 的“已用”计算,该计算应与free
相当接近。将MEM_CALC
设置为htop
以与 htop 的计算保持一致。 ↩