Beszel 轻量易用的服务器监控

什么是 Beszel?

Beszel 是一个轻量级的服务器监控平台,包含 Docker 统计信息、历史数据和警报功能。

它拥有友好的 Web 界面、简单的配置,并且开箱即用。它支持自动备份、多用户、OAuth 身份验证和 API 访问。

功能

  • 轻量级: 比主要解决方案更小,资源占用更少。
  • 简单: 易于设置,无需公网暴露。
  • Docker 统计: 跟踪每个容器的 CPU、内存和网络使用历史。
  • 警报: 可配置 CPU、内存、磁盘、带宽、温度、负载平均值和状态的警报。
  • 多用户: 用户管理自己的系统。管理员可以在用户之间共享系统。
  • OAuth / OIDC: 支持多种 OAuth2 提供程序。可以禁用密码验证。
  • 自动备份: 从磁盘或 S3 兼容的存储保存和恢复数据。
  • 电池: 主机系统电池电量。

架构

Beszel 由两个主要组件组成:中心 (hub)代理 (agent)

  • 中心 (hub): 一个基于 PocketBase 构建的 Web 应用程序,提供用于查看和管理连接系统的仪表板。
  • 代理 (agent): 在您要监控的每个系统上运行,并将系统指标传递给中心。

屏幕截图

支持的指标

  • CPU 使用率 - 主机系统和 Docker / Podman 容器。
  • 内存使用率 - 主机系统和容器。包括交换分区和 ZFS ARC。
  • 磁盘使用率 - 主机系统。支持多个分区和设备。
  • 磁盘 I/O - 主机系统。支持多个分区和设备。
  • 网络使用率 - 主机系统和容器。
  • 负载平均值 - 主机系统。
  • 温度 - 主机系统传感器。
  • GPU 使用率 / 温度 / 功耗 - 仅限 Nvidia 和 AMD。必须使用二进制代理。

Hub安装

releases 下载匹配您服务器 CPU 架构的最新二进制文件,并手动运行它。您需要手动创建一个服务才能使其在重新启动后继续运行。

vi /etc/systemd/system/beszel-hub.service

填入以下内容:

[Unit]
Description=Beszel Hub Service
After=network.target

[Service]
ExecStart=/opt/beszel/beszel serve --http "0.0.0.0:8090"
WorkingDirectory=/opt/beszel
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.targe

启动服务

systemctl daemon-reload
systemctl enable beszel-hub.service
systemctl start beszel-hub.service

访问 http://localhost:8090 或您自定义的ip:端口,即可进入登录页面,首次登录需要创建账号。登录成功后可添加需要监控的客户端。

Agent安装

releases 下载匹配您服务器 CPU 架构的最新二进制文件,并手动运行它。您需要手动创建一个服务才能使其在重新启动后继续运行。

vi /etc/systemd/system/beszel-agent.service

填入以下内容:

[Unit]
Description=Beszel Agent Service
After=network-online.target
Wants=network-online.target

[Service]
ExecStart=/opt/beszel/beszel-agent
Environment="LISTEN=45876"
Environment="KEY=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIN3CSRoVTBvSIBirs6pynLGoco8v6KeuARVsjuiFaFu4"
Environment="HUB_URL=http://172.18.39.35:8090"
Environment="TOKEN=4251f-56be29714-3470-b7e198f8a8"
Restart=on-failure
RestartSec=5
StateDirectory=beszel-agent

# 安全/沙盒设置
KeyringMode=private
LockPersonality=yes
NoNewPrivileges=yes
PrivateTmp=yes
ProtectClock=yes
ProtectHome=read-only
ProtectHostname=yes
ProtectKernelLogs=yes
ProtectSystem=strict
RemoveIPC=yes
RestrictSUIDSGID=true

[Install]
WantedBy=multi-user.target

LISTEN为监听端口,KEY为在管理页面添加客户端时的公钥,HUB_URL为管理端地址,TOKEN为在管理页面添加客户端时的令牌

启动服务

systemctl daemon-reload
systemctl enable beszel-agent.service
systemctl start beszel-agent.service

https://github.com/henrygd/beszel