轻量级容器监控:在 Podman 上部署 Beszel
Source: Dev.to
请提供您希望翻译的具体文本内容(除代码块和 URL 之外),我将为您翻译成简体中文并保持原有的格式、Markdown 语法和技术术语不变。
Source: …
Beszel – 轻量级 Podman 容器监控
以下是使用 Podman quadlet 文件部署 Beszel Hub 和 Beszel 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 Key 和 Token。
在 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 上设置 Podman – Setup Podman on Chrome OS Flex and Crostini.md(您可能需要执行文档中提供的额外故障排除命令)。