Podman安装部署Beszel | 一个轻量级的服务器监控平台
1.First | 序
Beszel 官网介绍以及 Docker 部署 方面的内容已经非常详尽
本篇主要介绍 Podman With Quadlet
1.1.what is beszel | 什么是beszel ?
Beszel 是一个轻量级的服务器监控平台
包含 Docker 统计信息、历史数据和警报功能
它拥有友好的 Web 界面、简单的配置,并且开箱即用
它支持自动备份、多用户、OAuth 身份验证和 API 访问
1.2.Features | 特性
- 轻量级: 比主要解决方案更小,资源占用更少。
- 简单: 易于设置,无需公网暴露。
- Docker 统计: 跟踪每个容器的 CPU、内存和网络使用历史。
- 警报: 可配置 CPU、内存、磁盘、带宽、温度和状态的警报。
- 多用户: 用户管理自己的系统。管理员可以在用户之间共享系统。
- OAuth / OIDC: 支持多种 OAuth2 提供程序。可以禁用密码验证。
- 自动备份: 从磁盘或 S3 兼容的存储保存和恢复数据。
- REST API: 在您自己的脚本和应用程序中使用或更新您的数据。

1.3.OS&APP Version | * 版本
1.3.1.OS

1.3.2.Podman

1.3.3.Beszel

2.Knowledgebase | 知识库
此篇文章基于 Podman With Quadlet 部署
Beszel 分为以下两个模块
HubAgent
如果之前使用过 Prometheus 的话就比较好理解了
即 采集端 (Agent) 和 中心 (Hub)
Agent & Hub 间使用 SSH 🔗 交换数据
搭建时需要服务端同时以下两个容器镜像
docker.io/henrygd/beszeldocker.io/henrygd/beszel-agent
服务端搭建完成后客户端后续仅需安装 docker.io/henrygd/beszel-agent 即可
2.1.Quadlet Parameters | Quadlet 参数
接着我们简单了解容器参数以便理解 .container 文件
2.1.1.beszel
-
AddHost=host.docker.internal:xxx.xxx.xxx.xxx此参数向容器传递
hosts内容
即将host.docker.internal解析为 xxx.xxx.xxx.xxx此参数仅在
Agent & Hub处于同一Host且Hub处于 容器网络但Agent处于Host网络模式下使用
若仍困惑看下文部署过程即可明了 -
AutoUpdate=registry此参数将注册自动更新
当运行podman auto-update时自动更新容器镜像
2.1.2.beszel-agent
-
Network=host将
Agent容器网络模式指定为Host以便监控网络信息 -
Volume=/run/podman/podman.sock:/var/run/docker.sock:ro映射此
sock后Agent将会监控到各个容器CPU/MEM/NET使用情况这里需要注意
Podman跟Docker不同
Podman没有守护进程所以默认/run/podman/podman.sock路径不存在需要手动开启Tips : Enable Podman Sock
# 启用 Podman Sock systemctl start podman.socket # 自启 systemctl enable podman.socket -
Environment='KEY=' 'PORT='向容器传递以下两个参数
KEYPORT
其中
KEY参数使用Hub添加Agent时会自动生成PORT即Agent向外暴露的SSH端口
3.Procedure | 步骤
了解完一些参数后即可部署容相应容器,步骤如下
- 部署 beszel
- 部署 beszel-agent
3.1.Deploy beszel | 部署 beszel
-
创建编辑
beszel.container文件[Unit] Description=Beszel is a lightweight server monitoring platform that includes Docker statistics After=network-online.target Wants=network-online.target Before=shutdown.target [Container] AddHost=host.docker.internal:xxx.xxx.xxx.xxx AutoUpdate=registry ContainerName=beszel Image=docker.io/henrygd/beszel PublishPort=127.0.0.1:30002:8090 Volume=beszel_data:/beszel_data [Service] Restart=always [Install] WantedBy=default.target -
重载
systemdsystemctl daemon-reload -
启动
beszelsystemctl start beszel -
查看
beszel容器状态systemctl status beszelEx PIC | 示例图片

3.2.Deployment Agent | 部署 Agent
-
创建编辑
beszel-agent.container文件[Unit] Description=Beszel is a lightweight server monitoring platform that includes Docker statistics After=network-online.target Wants=network-online.target Before=shutdown.target [Container] Network=host AutoUpdate=registry Environment='KEY=ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDjc1zpIRG/TxnOmX7dElmFcMiAgi7926D34YT3BrEV+' 'PORT=38474' ContainerName=beszel-agent Image=docker.io/henrygd/beszel-agent:latest Volume=/run/podman/podman.sock:/var/run/docker.sock:ro [Service] Restart=always [Install] WantedBy=default.target -
重载
systemdsystemctl daemon-reload -
启动
beszel-agentsystemctl start beszel-agent -
查看
beszel容器状态systemctl status beszel-agent3x1.PIC
3.3.Initialization | 初始化
容器启动完成后根据自身配置的 IP 地址打开主界面
-
创建账户
EmailPassword

-
主界面

3.4.Add Agent | 添加客户端
-
添加客户端
点击右上角
添加客户端选项这时分两种情况
Agent - Hub都在同一HostAgent位于远端Host
Seam Host | 同一 Host

这里的
主机/IP一项键入的是host.docker.internal
先前配置已写明host.docker.internal:xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx为主机公网IP地址公钥一项为
Hub随机生成请将此值至Agent配置中并重启AgentRemote | 远端

公钥一项为
Hub随机生成,请将此值至Agent配置中并重启Agent
请开放相应防火墙端口以便Hub访问Tips : Nftables Example
set beszel-c { type ipv4_addr flags interval elements = { xxx.xxx.xxx.xxx/32 } } chain eth0-input { type filter hook input priority filter; policy drop; ip saddr @beszel-c tcp dport 38474 counter accept }
4.Example | 示例

---

5.Ex | 拓展
5.1.Alerts | 告警
Beszel 支持通过以下方式发送告警事件
- Webhook / 推送通知
点击系统一行中的小铃铛配置告警阈值

小细节: 当此系统设置有告警时小铃铛会被完全填充
以 Email 为例收到告警邮件如下所示

5.2.Gmail SMTP Relay | 接入 Gmail SMTP
若同样使用
Gmail SMTP Relay
可以参考以下内容将Gmail SMTP接入Beszel
6.Thanks & Copy
6.1.Beszel
