3.6 KiB
3.6 KiB
ARM 应用健康监控上线执行清单
1. Local Gates
- 确认
HEAD包含工作提交bb5113c,三个部署源相对HEAD无未提交改动;允许当前 Trellis 任务记录保持未提交。 - 运行应用健康专项 22 项和自动备份兼容回归 73 项。
- 记录三个部署源文件的 SHA-256,不输出其他本地路径或配置。
2. Read-only ARM Preflight
- 通过受控 alias 连接,确认非交互命令可用;首次 sudo 门禁停止,用户建立临时入口后复检通过。
- 确认 Python 3、systemd、既有 off-host dead-man service/timer 和共用 helper 存在。
- 在 ARM 内从 dead-man unit 解析 webhook 文件路径,并只返回 owner/mode/regular-file 布尔结果。
- 确认公网
/ready从 ARM 可达,且应用健康 unit、探测器和状态目录尚不存在;若存在则停止人工审查。 - 记录既有 dead-man timer enabled/active 基线,后续只做对比,不主动执行。
3. Disabled Installation
- 在 ARM 创建本次唯一临时目录,以 SCP 传输探测器、helper 和安装器并核对 SHA-256。
- 用 root 运行安装器
install,webhook 路径只在远端 shell 变量中传递。 - 确认 timer disabled/inactive、service inactive,unit 为 5 分钟、状态目录 0700、受管文件 root:root 0755。
- 比较已安装探测器/helper 与提交源哈希一致。
- 手工启动正式 service,确认健康、probe/alert state 为 0600 且没有发送恢复噪声。
4. Enable and Real Drill
- 用同一提交源执行安装器
enable,确认 timer enabled/active。 - 停止应用健康 timer;确认不影响备份 dead-man timer。
- 确认选定 localhost 演练端口未监听。
- 第一次直接失败探测:预期非零、
consecutiveFailures=1、alert pending。 - 第二次直接失败探测:预期非零、helper
sent=true、alert state 为FAIL_APP_HEALTH。 - 第三次直接失败探测:预期非零、helper
sent=false,证明相同类别降噪。 - 运行正式 systemd service 恢复:预期成功、helper
sent=true、alert state 为PASS_APP_HEALTH_READY。 - 再运行一次健康探测或等待 timer:预期 helper
sent=false。 - 重新启动 timer,确认 enabled/active、最近成功和下一次不超过 5 分钟。
5. Final Evidence and Cleanup
- 确认既有备份 receiver/dead-man 文件和 timer 状态未改变。
- 删除本次 ARM 临时传输目录和临时 sudoers 规则,不删除状态、helper、webhook 或备份能力。
- 仅记录脱敏状态、类别、计数、哈希匹配和 timer 布尔证据。
- 用户已确认群内实际收到一条故障告警和一条恢复通知。
- 更新 PRD 验收项、运行 task validate、治理检查和
git diff --check。
6. Rollback Points
- 首次 sudo 预检失败时未进入写阶段;用户建立受控临时入口后重新从完整预检开始。
- 安装后、故障告警前失败:disable/stop 后
uninstall,保留状态和共用能力。 - 故障告警后失败:优先正式健康探测关闭告警;无法恢复则保持 timer 停用并明确报告未闭环。
- 回滚后复核备份 dead-man timer 与归档仍在,不主动触发 dead-man。
7. Commands to Validate
bash scripts/qa/run-app-health-monitor-contract.shbash scripts/qa/run-automatic-backup-contract.shpython3 ./.trellis/scripts/task.py validate 07-27-arm-app-health-rolloutnode scripts/qa/check-trellis-governance.mjsnode scripts/qa/check-sensitive-content.mjsgit diff --check