跳至主要内容 跳至导航 跳至页脚
限时:设计合作伙伴计划 — 永久享有 BUSINESS 套餐

监控

监控机器健康状况、容器、服务、仓库,并运行诊断。

监控

Rediacc 提供内置的监控命令,用于检查机器健康状况、运行中的容器、服务、仓库状态和系统诊断。

机器健康状况

获取机器的综合健康报告:

rdc machine health --name server-1

报告内容:

  • System:运行时间、磁盘使用率、数据存储使用率
  • 容器:运行中、健康和不健康的容器数量
  • 存储:SMART 健康状态
  • 问题:已识别的问题

使用 --output json 获取机器可读的输出。

列出容器

查看机器上所有仓库中运行的全部容器:

rdc machine containers --name server-1
列名描述
Name容器名称
Status运行时间或退出原因
State运行中、已退出等
Health健康、不健康、无
CPUCPU 使用百分比
Memory内存使用量 / 限制
Repository容器所属的仓库

选项:

  • --health-check, 对容器执行主动健康检查
  • --output json, 机器可读的 JSON 输出

JSON 输出包含完整的容器详情(labelsport_mappingsimageid),以及 repository(解析后的名称)、repository_guid(原始 GUID)、domainautoRoute

列出服务

查看机器上与 Rediacc 相关的 systemd 服务:

rdc machine services --name server-1
列名描述
Name服务名称
State活跃、非活跃、失败
Sub-state运行中、已停止等
Restarts重启次数
Memory服务内存使用量
Repository关联的仓库

选项:

  • --stability-check, 标记不稳定的服务(失败、超过 3 次重启、自动重启)
  • --output json, 机器可读的 JSON 输出

JSON 输出包含完整的服务详情,并带有 repository(解析后的名称)和 repository_guid(原始 GUID)。

列出仓库

查看机器上的仓库及详细统计信息:

rdc machine repos --name server-1
列名描述
Name仓库名称
Size磁盘镜像大小
Mount已挂载或未挂载
DockerDocker daemon 运行中或已停止
Containers容器数量
Disk Usage仓库内的实际磁盘使用量
Modified最后修改时间

选项:

  • --search <text>, 按名称或挂载路径筛选
  • --output json, 机器可读的 JSON 输出

JSON 输出包含 name(解析后的名称)和 guid(原始 GUID),并为每个仓库嵌套 containers(包含 domainautoRouterepository/repository_guid)和 services 数组。

存储健康状况

检查机器上所有仓库的 BTRFS 碎片化程度和 reflink 共享情况:

rdc machine query --name server-1 --storage-health
列名描述
SizeLUKS 镜像文件大小(仓库的表观大小)
Unique仅属于该仓库的实际唯一数据
Shared通过 BTRFS reflink 在仓库间共享的数据块(免费副本)
Extents文件 extent 数量(越高代表碎片化越严重)
Frag碎片化级别:低、中或高

摘要显示 BTRFS reflink 节省的总量:

14 repos, 224.3 GB virtual size
Unique data: 323.7 MB | Shared: 224.0 GB | Efficiency: 99.9%
  • 虚拟大小是所有仓库镜像大小的总和。这是仓库的表观大小,但通过 reflink 共享的块会被重复计算。
  • 唯一数据是仅存在于一个仓库中的仓库数据实际占用的存储空间。这是删除仓库时将释放的空间。
  • 共享是通过 BTRFS reflink 在仓库间共享的数据。对仓库进行 fork 会创建 reflink 副本,在任一方写入新数据之前共享数据块,此后数据块开始分歧。
  • 效率是通过 reflink 共享的数据百分比。越高越好。具有大量来自同一父仓库 fork 的机器将显示接近 100% 的效率。

碎片化程度高且共享块为零的仓库可以使用 btrfs filesystem defragment 安全进行碎片整理。含有共享块的仓库不应进行碎片整理,因为碎片整理会将共享块替换为唯一副本,从而增加磁盘使用量。

扫描并行运行,根据仓库数量和大小需要 5-15 秒。未指定 --storage-health 时,查询输出后会显示一行提示作为提醒。

BTRFS Scrub

Rediacc 会在每台机器上自动安排每周 BTRFS scrub。Scrub 读取数据存储中的每个数据块,验证校验和,并报告任何损坏。这可在静默数据损坏(位衰减)传播到备份和 fork 之前将其检测出来。

Scrub 每周日 02:00 本地时间(机器时区)运行,带有最多 1 小时的随机延迟。它以最低 I/O 优先级(ionice idlenice 19)运行,不会干扰正在运行的服务。在 SSD 支持的机器上,每 100 GB 数据存储大约需要 8 分钟。

Scrub 计时器在 renet 升级后的第一次 daemon 启动时自动安装。当 scrub 策略在未来的 renet 版本中更改时,它会在下次 daemon 启动时自动更新,无需用户操作。

Scrub 状态

最后一次 scrub 的结果保存在 BTRFS 卷外部(位于 /var/lib/rediacc/scrub-last-result.json),即使卷出现问题也能保持可读。rdc machine query --system 的输出包含 scrub_status 字段:

"scrub_status": {
  "last_run_human": "3 days ago",
  "status": "ok",
  "total_errors": 0,
  "uncorrectable": 0,
  "duration_seconds": 312
}
状态含义
ok最后一次 scrub 无错误完成
never_runScrub 尚未运行(计时器刚安装)
overdue最后一次 scrub 超过 14 天前
errors_foundScrub 发现校验和不匹配(检查 total_errorsuncorrectable 计数)
failedScrub 进程以非零代码退出

如果 uncorrectable 大于零,受影响的块无法自动修复(单盘 BTRFS 没有冗余副本)。请从最近的备份恢复受影响的仓库。

手动 scrub

立即运行 scrub(例如,在断电或磁盘迁移后):

rdc term connect -m server-1 -c "sudo renet maintenance scrub --datastore /mnt/rediacc"

结果保存到同一 JSON 文件,并在下次 rdc machine query --system 时立即可见。

Vault 状态

获取机器的完整概览,包括部署信息:

rdc machine vault-status --name server-1

提供的信息:

  • 主机名和运行时间
  • 内存、磁盘和数据存储使用情况
  • 仓库总数、已挂载数量和运行中的 Docker 数量
  • 每个仓库的详细信息

使用 --output json 获取机器可读的输出。

测试连接

仅限云适配器。 使用本地适配器时,使用 rdc term connect -m server-1 -c "hostname" 验证连接。

验证与机器的 SSH 连接:

rdc machine test-connection --ip 203.0.113.50 --user deploy

报告内容:

  • 连接状态(成功/失败)
  • 使用的认证方式
  • SSH 密钥配置
  • 公钥部署状态
  • Known hosts 条目

选项:

  • --port <number>, SSH 端口(默认:22)
  • --save -m server-1, 将已验证的主机密钥保存到机器配置中

诊断 (doctor)

对 Rediacc 环境运行全面的诊断检查:

rdc doctor
类别检查项
环境Node.js 版本、CLI 版本、SEA 模式、Go 安装、Docker 可用性
Renet二进制文件位置、版本、CRIU、rsync、SEA 嵌入式资源
配置活跃配置、适配器、机器、SSH 密钥
虚拟化检查系统是否可以运行本地虚拟机(rdc ops

每项检查报告 OK警告错误。在排查任何问题时,请将此作为第一步。

退出代码:0 = 全部通过,1 = 有警告,2 = 有错误。