Docker部署Beszel:用同机Hub和Agent查看主机与容器指标

简介: 本文介绍Beszel 0.21.1本地监控方案:Hub与Agent同部署于ECS,通过Unix socket直连通信,SSH隧道安全访问Web界面。支持主机及Docker容器CPU/内存历史采集与可视化,含完整Docker Compose配置、环境校验、密钥配对与使用验收流程。(239字)

把Beszel Hub和agent放在同一台ECS上,可以集中查看主机CPU、内存历史和单个Docker容器的资源变化。关键连接不必绕公网:共享Unix socket承接同机连接,SSH隧道提供浏览器入口。本文给出完整配置,并用容器名称、采样数据与重建前后的历史完成一次使用验收。

这是按官方0.21.1资料整理的参考方案,尚未执行Docker部署或SSH操作。适用对象是常规Linux上的Docker Engine与Compose V2;LXC、rootless或Docker Desktop需另核宿主统计条件。

分清网页入口、采集入口与Docker入口

这份配置涉及三种不同连接:

连接 本文使用方式 用途
电脑到Hub SSH隧道转发到服务器回环8090 登录和看历史
Hub到同机agent /beszel_socket/beszel.sock共享路径 取得采样数据
agent到Docker /var/run/docker.sock 读取容器指标

Hub与agent所在网络不同,给Hub填localhost:45876会把请求送到Hub容器自身。官方同机方案使用Unix socket;agent保留host网络以取得宿主网络接口数据。本例agent也能通过宿主回环的HUB_URL向Hub建立WebSocket连接,socket路径仍按同机方案配置。

beszel-workflow.png

在新的项目目录写入完整配置

在ECS终端用有Docker权限的账号执行:

docker version
docker compose version
test -S /var/run/docker.sock && printf 'Docker socket exists\n'
docker compose ls -a

版本命令应正常返回,socket检查应显示Docker socket exists。若daemon不可连接、未见这行或已有beszel-local-demo项目,先处理运行方式或更换全新项目名;不要重置已有环境。

mkdir ~/beszel-local-demo && cd ~/beszel-local-demo && mkdir beszel_data beszel_socket beszel_agent_data

mkdir提示已存在时停止写入,先确认目录用途。接着将以下内容保存为compose.yaml:

name: beszel-local-demo
services:
  hub:
    image: docker.1ms.run/henrygd/beszel:0.21.1
    restart: unless-stopped
    ports:
      - "127.0.0.1:8090:8090"
    environment:
      APP_URL: http://127.0.0.1:8090
      CONTAINER_DETAILS: "false"
    volumes:
      - ./beszel_data:/beszel_data
      - ./beszel_socket:/beszel_socket
  agent:
    image: docker.1ms.run/henrygd/beszel-agent:0.21.1
    restart: unless-stopped
    network_mode: host
    environment:
      LISTEN: /beszel_socket/beszel.sock
      HUB_URL: http://127.0.0.1:8090
      KEY: ${
   BESZEL_KEY:-}
      TOKEN: ${
   BESZEL_TOKEN:-}
      DOCKER_IMAGE_CHECK: "false"
    volumes:
      - ./beszel_agent_data:/var/lib/beszel-agent
      - ./beszel_socket:/beszel_socket
      - /var/run/docker.sock:/var/run/docker.sock:ro

两个固定镜像标签同为0.21.1,不使用浮动最新版。Hub的数据目录存历史和账号,agent目录保留自身数据;socket目录是通信入口。先关闭网页中的容器详情/日志功能和周期性镜像更新检查,本次只完成指标采集。直接挂载Docker socket需要可信管理员维护,:ro不等于对Docker API做了只读权限隔离。

在ECS原目录先拉取并单独启动Hub:

docker compose config --quiet && docker compose pull && docker compose up -d hub
docker compose ps -a
docker compose logs --tail=80 hub

首行任一步失败就停止,按报错处理网络、标签或配置;hub应保持运行。可以进一步在容器内检查网页服务:

docker compose exec hub /beszel health --url http://127.0.0.1:8090

成功退出只说明Hub健康接口可用;失败先查Hub日志。这个检查不证明agent已接通,也不证明已经收集到容器资源。

从电脑进入Hub,取得这次配对参数

在电脑终端运行,替换自己的SSH账号及ECS地址:

ssh -N -o ExitOnForwardFailure=yes -L 127.0.0.1:8090:127.0.0.1:8090 your_user@your_ecs

保留隧道窗口,在电脑浏览器访问http://127.0.0.1:8090,创建首个管理员账号。没有默认登录密码;若初次配置就出现旧账号登录页,先核对实例与挂载。隧道报端口占用或认证失败时先处理,安全组无需新增8090或45876公网入口。

登录后点击Add System,名称填ecs-local-01,Host / IP填/beszel_socket/beszel.sock。从对话框复制完整KEY与TOKEN,暂不关闭;需要时先显示隐藏的令牌。在ECS项目目录保存.env:

BESZEL_KEY='粘贴Add System提供的完整公钥'
BESZEL_TOKEN='粘贴Add System提供的令牌'

公钥类型、内容和空格完整保留,令牌按原值填入;两项都来自本次Hub,不使用SSH登录私钥。然后在ECS执行:

chmod 600 .env
docker compose config --quiet && docker compose up -d agent
docker compose logs --tail=80 agent

回到浏览器完成添加;系统行已存在则等待该行上线,不再建一条同名记录。上线后应开始积累CPU、内存数据点。若agent运行但系统离线,检查.env、公钥、令牌及共享socket路径,再看Hub与agent日志。配置修改后用docker compose up -d agent应用,单独restart不会把新环境变量写入已有容器。

用实际容器名找到对应曲线

在ECS执行:

docker ps --format 'table {
   {.Names}}\t{
   {.Status}}'
docker stats --no-stream --format 'table {
   {.Name}}\t{
   {.CPUPerc}}\t{
   {.MemUsage}}'

在网页打开ecs-local-01,先查看主机CPU、内存历史,再在容器区按上面命令的名称查找一个运行容器。没有业务容器时直接选本次Hub。验收看名称对应、资源数据出现并继续更新,不要求两个不同时刻的百分比相等。

命令里没有目标容器,先确认它是否已停止或重建改名;命令有而网页无,先核agent日志中的Docker连接及挂载。内存值缺失或一直为0,先检查docker stats本身和cgroup统计条件,不把空白补写成0。宿主内存、容器内存和缓存的口径不同,也不据此推算业务剩余容量。

重建前后核对同一条历史

先记下系统名和当前图表时间范围,再在ECS原目录执行:

docker compose up -d --force-recreate
docker compose ps -a
docker compose logs --tail=80 hub agent

重新登录后应仍能找到ecs-local-01和重建前的历史,并看到新采样点。系统或历史消失时先核是否换了项目目录、beszel_data是否接回原目录;没有查清前不重新初始化。暂停用docker compose stop,恢复用docker compose up -d。保留这三个目录和.env,重建测试不替代备份。

需要提醒时,在Settings → Notifications先配置已有通知渠道并发送测试消息,再到系统表的告警入口设一项规则。可以从“内存超过80%持续5分钟”这个示例开始,根据实际基线调整。测试消息验证的是通道,规则是否触发仍需独立观察;本文没有发送通知或制造高负载。先取得连续、可信的主机与容器曲线,再决定哪些异常值得通知。

相关文章
|
6天前
|
JavaScript API iOS开发
DeepSeek Harness下载、安装、配置一篇搞定(2026整理,送常用插件)
DeepSeek Harness(DSH)是DeepSeek于2026年开源的MIT协议AI Agent框架,支持插件化组装模型、工具、沙箱与UI,兼容主流大模型。本文提供免Node.js的桌面端安装包(Win/macOS),含详细图文教程及热门插件推荐。
2610 22
|
6天前
|
iOS开发 Docker MacOS
【2026实测】Docker Desktop下载、安装、汉化、配置教程(附官网安装包)
Docker Desktop 是 Docker 官方推出的桌面容器管理工具,集成引擎、CLI、图形界面与 Kubernetes,支持 Win/macOS/Linux。2026 最新版 4.88.1 强化 ARM 原生运行、镜像加速及资源可视化,附中文汉化与国内镜像配置指南。
1143 4
|
云安全 安全 网络安全
|
5天前
|
Linux 开发工具 iOS开发
Codex保姆级教程(下载+安装+登录+使用,含所有版本,2026最新)
Codex是OpenAI推出的开源AI编程智能体,本地运行,可理解整个代码库,支持自然语言指令改代码、执行命令、跑测试、修Bug,兼容Win/macOS/Linux。(239字)
|
6天前
|
安全 算法 定位技术
《高性价比人生指南》完整原版:普通人用最少的资源,过好这一生的底层逻辑~How To Live Better
📖《高性价比人生指南》是一份基于实证、拒绝焦虑的生存手册,倡导以“人生时薪”为视角,重新计算时间、金钱与精力的成本与收益。它不承诺逆袭,只教人算清账:省下的钱若耗掉时间便亏;买体验比买物品更值;睡眠是最高杠杆的健康投资;关系贵在情绪价值而非表面热络;学习重在改变行为而非自我安慰。核心理念:用低成本、高回报的微小行动,换取长期的选择权——不是成为谁,而是掌控自己人生的主动权。
|
19天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
3301 51
|
12天前
|
JavaScript 安全 前端开发
Nodejs Brotli decoder 代码执行漏洞 (CVE-2026-111497)10629
Node.js发布安全更新修复Brotli解码器高危RCE漏洞(CVE-2026-111497),建议受影响版本用户立即升级。
2128 2
|
11天前
|
人工智能 JSON Linux
【保姆级】ComfyUI部署教程(下载+安装+配置+工作流,2026最新)
ComfyUI 是一款开源节点式AI生成工具,支持图像、视频、音频及3D内容创作。通过拖拽连线组合模型加载、提示词、采样等节点,构建可复用、易修改的工作流,兼容SD1.5、SDXL、Flux、Qwen Image等主流模型。