3.6 KiB
故障排查(__PACKAGE_ARCH__ / __PACKAGE_PLATFORM__)
Docker 或 Compose 不可用
执行:
docker version
docker compose version
如果缺失,重新执行:
./install.sh
架构不匹配报错
当 status.sh / install.sh / self-check.sh 报出:
package architecture mismatch
说明宿主 uname -m 与包的 PACKAGE_ARCH=__PACKAGE_ARCH__ 不一致。默认行为就是失败而不是静默模拟运行。
只有在你明确接受 QEMU/binfmt 跨架构运行时,才设置:
ALLOW_CROSS_ARCH=1
然后重新执行安装或自检。
__PACKAGE_ARCH__ 镜像无法运行
在异构主机上运行 __PACKAGE_PLATFORM__ 镜像需要 binfmt/qemu。安装脚本只有在 ALLOW_CROSS_ARCH=1 时才会自动尝试启用;也可以手动执行:
docker run --rm --privileged tonistiigi/binfmt --install __PACKAGE_ARCH__
docker run --rm --platform __PACKAGE_PLATFORM__ debian:bookworm-slim uname -m
对于 arm64 包,预期输出 aarch64;对于 amd64 包,预期输出 x86_64。
如需进一步确认 metrics 镜像也已正确加载:
docker image inspect "$(grep '^METRICS_IMAGE=' .env | cut -d= -f2-)"
docker run --rm --platform __PACKAGE_PLATFORM__ \
"$(grep '^METRICS_IMAGE=' .env | cut -d= -f2-)" \
/opt/ours-rp/bin/rpki_artifact_metrics --help
RTR report 指标为空
检查 .env:
grep '^RTR_REPORT_DIR=' .env
test -d "$(grep '^RTR_REPORT_DIR=' .env | cut -d= -f2-)" && echo ok
检查 metrics 容器是否挂载该目录:
docker inspect "$(grep '^COMPOSE_PROJECT_NAME=' .env | cut -d= -f2-)-artifact-metrics" \
| jq '.[0].Mounts[] | select(.Destination=="/var/lib/ours-rp/rtr-report")'
首轮 snapshot 超时
all5 snapshot 可能很慢,尤其在 QEMU 环境。可以提高超时:
./start.sh --timeout-secs 14400
产物数量异常偏低
检查:
grep LIVE_TA_REFRESH_BEFORE_SNAPSHOT .env
ls -l __HOST_DATA_DIR__/state/live-ta
tail -100 __HOST_DATA_DIR__/logs/live-ta-refresh-*.log
file-live-ta 模式下,snapshot 应等待 live TA 成功刷新。
Grafana 无法登录
确认 .env 中:
GRAFANA_ADMIN_USER=admin
GRAFANA_ADMIN_PASSWORD=admin
如果曾经启动过 Grafana,修改 .env 不一定重置已有 Grafana 数据库账号。可以停止服务后按需备份并清理 ${HOST_DATA_DIR}/grafana。
有限轮次验收后又多跑了一轮
如果 .env 中设置了 MAX_RUNS=3 这类有限轮次,同时 SOAK_RESTART_POLICY=unless-stopped,Docker Compose 会在 soak 容器正常退出后重新启动容器。
有限验收建议设置:
SOAK_RESTART_POLICY=no
如何确认触发了定期 forced snapshot
检查最新 run metadata:
latest="$(find ${HOST_DATA_DIR}/runs -maxdepth 1 -type d -name 'run_*' | sort | tail -1)"
jq '{run_id,sync_mode,snapshot_reason,periodic_snapshot_delta_count,periodic_snapshot_forced,reset_db_cleanup_status}' "$latest/run-meta.json"
阈值触发时应看到:
sync_mode: "snapshot"snapshot_reason: "periodic_snapshot_delta_limit"periodic_snapshot_forced: true
如需确认 retain 裁剪后仍在累计 delta,可继续检查:
jq '{last_success_snapshot,successful_deltas_since_snapshot,recent_runs_count:(.recent_runs|length)}' \
"${HOST_DATA_DIR}/state/run-lifecycle-state.json"
Lifecycle 状态文件损坏
脚本会先备份损坏文件,再从当前保留的 runs/ 尽力 bootstrap:
ls -1 "${HOST_DATA_DIR}/state"/run-lifecycle-state.json.corrupt.*
jq . "${HOST_DATA_DIR}/state/run-lifecycle-state.json"