BY xzllll

Podman安装部署Beszel | 一个轻量级的服务器监控平台

指南 | Guides 2025年1月3日

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: 在您自己的脚本和应用程序中使用或更新您的数据。
Beszel | Simple, lightweight server monitoring
轻量级服务器监控,具有历史数据、docker 统计和告警功能

1.3.OS&APP Version | * 版本

1.3.1.OS

1.3.2.Podman

1.3.3.Beszel

2.Knowledgebase | 知识库

此篇文章基于 Podman With Quadlet 部署

Beszel 分为以下两个模块

  • Hub
  • Agent

如果之前使用过 Prometheus 的话就比较好理解了

即 采集端 (Agent) 和 中心 (Hub)

Agent & Hub 间使用 SSH 🔗 交换数据

搭建时需要服务端同时以下两个容器镜像

  • docker.io/henrygd/beszel
  • docker.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='

    向容器传递以下两个参数

    • KEY
    • PORT

    其中 KEY 参数使用 Hub 添加 Agent 时会自动生成

    PORT 即 Agent 向外暴露的 SSH 端口

3.Procedure | 步骤

了解完一些参数后即可部署容相应容器,步骤如下

  1. 部署 beszel
  2. 部署 beszel-agent

3.1.Deploy beszel | 部署 beszel

  1. 创建编辑 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
    
  2. 重载 systemd

    systemctl daemon-reload
    
  3. 启动 beszel

    systemctl start beszel
    
  4. 查看 beszel 容器状态

    systemctl status beszel
    

    Ex PIC | 示例图片

3.2.Deployment Agent | 部署 Agent

  1. 创建编辑 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
    
  2. 重载 systemd

    systemctl daemon-reload
    
  3. 启动 beszel-agent

    systemctl start beszel-agent
    
  4. 查看 beszel 容器状态

    systemctl status beszel-agent
    

    3x1.PIC

3.3.Initialization | 初始化

容器启动完成后根据自身配置的 IP 地址打开主界面

  1. 创建账户

    • Email
    • Password

  2. 主界面

3.4.Add Agent | 添加客户端

  1. 添加客户端

    点击右上角 添加客户端 选项

    这时分两种情况

    • Agent - Hub 都在同一 Host
    • Agent 位于远端 Host

    Seam Host | 同一 Host

    这里的 主机/IP 一项键入的是 host.docker.internal
    先前配置已写明 host.docker.internal:xxx.xxx.xxx.xxx
    xxx.xxx.xxx.xxx 为主机公网 IP 地址

    公钥一项为 Hub 随机生成请将此值至 Agent 配置中并重启 Agent

    Remote | 远端

    公钥一项为 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 支持通过以下方式发送告警事件

  1. Email
  2. Webhook / 推送通知

点击系统一行中的小铃铛配置告警阈值

小细节: 当此系统设置有告警时小铃铛会被完全填充

以 Email 为例收到告警邮件如下所示

5.2.Gmail SMTP Relay | 接入 Gmail SMTP

若同样使用 Gmail SMTP Relay
可以参考以下内容将 Gmail SMTP 接入 Beszel

Google Workspace 邮件中继 Email Reply 配置指南
First | 序 此篇记录 Google Workspace 配置 邮件中继 Email Reply 过程 请保证有以下准备工作 1. Google Workspace 已订阅 2. 有一定解决问题的能力 What is Email Reply | 什么是邮件中继? 💡对此 Amazon 有非常详尽的解释什么是邮件中继_邮件中继有哪些优势-亚马逊云科技邮件中继是一种SMTP服务器配置方式,允许任何互联网用户通过它发送电子邮件,负责将邮件转发至收件人的邮件服务器,确保邮件可靠高效传递,是电子邮件传输过程中不可或缺的环节。Amazon Web Services, Inc. Config | 配置 Google Workspace 配置 邮件中继 Email Reply 有以下几步 1. 配置应用专属密码 2. 在 Google 管理控制台中设置 SMTP

6.Thanks & Copy

6.1.Beszel

Beszel | Simple, lightweight server monitoring
轻量级服务器监控,具有历史数据、docker 统计和告警功能

GitHub - henrygd/beszel: Lightweight server monitoring hub with historical data, docker stats, and alerts.
Lightweight server monitoring hub with historical data, docker stats, and alerts. - henrygd/beszel

6.2.Podman

podman-systemd.unit — Podman documentation

标签

xzllll

三分钟热度三分钟收获