轻量级容器监控:在 Podman 上部署 Beszel

发布: (2026年3月2日 GMT+8 18:10)
5 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的具体文本内容(除代码块和 URL 之外),我将为您翻译成简体中文并保持原有的格式、Markdown 语法和技术术语不变。

Source:

Beszel – 轻量级 Podman 容器监控

以下是使用 Podman quadlet 文件部署 Beszel HubBeszel Agent(本地和远程)的逐步指南。所有命令均按在 Raspberry Pi(或任意 Linux 主机)上的显示方式编写。

1. Beszel Hub 部署

创建所需目录

mkdir -p /home/solifugo/pods/beszel/beszel_data
mkdir -p /home/solifugo/pods/beszel/beszel_socket

Hub 的 Quadlet 文件

~/.config/containers/systemd/beszel_hub.container

[Unit]
Description=beszel hub

[Container]
Image=docker.io/henrygd/beszel
ContainerName=beszel_hub
AutoUpdate=registry
Volume=/home/solifugo/pods/beszel/beszel_data:/beszel_data
Volume=/home/solifugo/pods/beszel/beszel_socket:/beszel_socket
PublishPort=8090:8090

[Service]
Restart=unless-stopped

[Install]
WantedBy=multi-user.target default.target

启动 Hub

systemctl --user daemon-reload
systemctl --user start beszel_hub.service

验证是否在运行:

podman ps
# Example output
# CONTAINER ID  IMAGE                     COMMAND               CREATED          STATUS          PORTS                     NAMES
# 641ede03f72a  docker.io/henrygd/beszel  serve --http=0.0...  3 minutes ago    Up 3 minutes    0.0.0.0:8090->8090/tcp   beszel_hub

下一步: 在浏览器中打开 http://:8090,创建管理员用户,并记录 Hub UI 上显示的 Public KeyToken

在 Hub UI 中添加本地系统时,使用:

  • Name(名称): 你的系统名称
  • Host / IP(主机 / IP): /beszel_socket/beszel.sock

2. Beszel Agent 部署 – 本地

创建数据目录

mkdir -p /home/solifugo/pods/beszel/beszel_agent_data

本地 Agent 的 Quadlet 文件

~/.config/containers/systemd/beszel_agent.container

[Unit]
Description=beszel agent

[Container]
Image=docker.io/henrygd/beszel-agent:latest
ContainerName=beszel_agent
AutoUpdate=registry
User=1001                         # UID that owns the podman socket
Volume=/run/user/1001/podman/podman.sock:/run/user/1001/podman/podman.sock:ro
Volume=/home/solifugo/pods/beszel/beszel_agent_data:/var/lib/beszel-agent
Volume=/home/solifugo/pods/beszel/beszel_socket:/beszel_socket
Environment=KEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOgfG4iXqHmqcYT/LhNQvgNCRA0HIIxEHjnk79rg+ypF" \
            HUB_URL="http://localhost:8090" \
            TOKEN="5f2b-126b3d08f8-a8dd-e796537cf8" \
            LISTEN=/beszel_socket/beszel.sock
Network=host

[Service]
Restart=unless-stopped

[Install]
WantedBy=multi-user.target default.target

启动本地 Agent

systemctl --user daemon-reload
systemctl --user start beszel_agent.service

检查是否已启动:

podman ps
# Example output (last line is the agent)
# 5dd1a629b6bb  docker.io/henrygd/beszel-agent:latest  ...  Up 16 seconds  beszel_agent

现在返回 Hub UI → Add system,应该能看到新注册的本地系统。

3. Beszel Agent 部署 – 远程

如果 Agent 运行在其他主机,只需在 Hub 中指向该主机的 IP/端口(而不是 Unix 套接字)。

远程 Agent 的一行 podman run 命令

podman run -d --name beszel-agent \
  --user 1000 \
  --network host \
  --restart unless-stopped \
  -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro \
  -e KEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOgfG4iXqHmqcYT/LhNQvgNCRA0HIIxEHjnk79rg+ypF" \
  -e HUB_URL="http://192.168.0.130:8090" \
  -e TOKEN="5be-0f813ae513-27d9-83664c253c" \
  -e LISTEN=45876 \
  docker.io/henrygd/beszel-agent:latest

192.168.0.130 替换为你的 Hub 所在 IP 地址。

容器启动后,在 Hub UI 中添加远程系统,使用主机的 IP 和你在 LISTEN=45876 中指定的端口。

4. 其他细节

确保 Podman 套接字已激活

systemctl --user enable podman.socket
systemctl --user start podma

Source:

n.socket
systemctl --user status podman.socket

您应该会看到类似如下的输出:

● podman.socket - Podman API Socket
   Loaded: loaded (/usr/lib/systemd/user/podman.socket; enabled; preset: enabled)
   Active: active (listening) since ...
   Listen: /run/user/1001/podman/podman.sock (Stream)

在 Raspberry Pi 上的常见问题

在监控容器(例如 systemd-wordpress)时,您可能会遇到:

Error getting container stats err="systemd-wordpress - bad memory stats - see https://github.com/henrygd/beszel/"

这是某些 ARM 内核的已知限制。请查看相关 issue 以获取解决办法或更新信息。

TL;DR 快速命令

# Hub
mkdir -p ~/pods/beszel/beszel_data ~/pods/beszel/beszel_socket
# (create beszel_hub.container as shown above)
systemctl --user daemon-reload && systemctl --user start beszel_hub.service

# Local Agent
mkdir -p ~/pods/beszel/beszel_agent_data
# (create beszel_agent.container as shown above)
systemctl --user daemon-reload && systemctl --user start beszel_agent.service

# Remote Agent (example)
podman run -d --name beszel-agent \
  --user 1000 --network host --restart unless-stopped \
  -v /run/user/1000/podman/podman.sock:/run/user/1000/podman/podman.sock:ro \
  -e KEY="ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOgfG4iXqHmqcYT/LhNQvgNCRA0HIIxEHjnk79rg+ypF" \
  -e HUB_URL="http://:8090" \
  -e TOKEN="" -e LISTEN=45876 \
  docker.io/henrygd/beszel-agent:latest

现在,您已经拥有一个完整可用的 Beszel 监控堆栈,可用于本地和远程主机上的 Podman 容器。祝您监控愉快!

问题

issues/144
Error getting container stats err="mariadb - bad memory stats - see https://github.com/henrygd/beszel/issues/144"

解决方案

按照下面的指南,在 /boot/cmdline.txt 中添加所需的组件:

更新后的 cmdline.txt

[|=| raspi in ~ ]$ sudo cat /boot/cmdline.txt
console=tty1 root=PARTUUID=dc0d2f94-02 rootfstype=ext4 fsck.repair=yes rootwait cgroup_enable=cpuset cgroup_enable=memory cgroup_memory=1
[|=| raspi in ~ ]$

在 Crostini(Chromebook Linux 子系统)上运行 Podman

如果您需要在 Crostini(或 Chrome OS Flex)中运行 Podman,请参阅以下资源获取设置说明和故障排除步骤:

  • 在 Chrome OS Flex 和 Crostini 上设置 PodmanSetup Podman on Chrome OS Flex and Crostini.md(您可能需要执行文档中提供的额外故障排除命令)。
0 浏览
Back to Blog

相关文章

阅读更多 »

当工作成为心理健康风险时

markdown !Ravi Mishrahttps://media2.dev.to/dynamic/image/width=50,height=50,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fu...