2.8 KiB
2.8 KiB
通知来源与运行证据
消息映射
FAIL_APP_HEALTH/PASS_APP_HEALTH_READY:ARM 公网/ready健康探测。FAIL_AUTOMATIC_BACKUP/PASS_AUTOMATIC_BACKUP_*:生产自动备份或新鲜度 watchdog。FAIL_OFFHOST_DEADMAN/PASS_OFFHOST_DEADMAN_FRESH:ARM 异机归档 dead-man。PASS_WITH_FINDINGS+quarterly_shadow_restore_due_*:季度人工影子恢复提醒,不会自动恢复生产。
截图状态明确属于第一类。企微应用显示名“OA 备份告警”是共用群机器人的名称,不能作为故障来源判断依据。
状态机证据
scripts/check-public-app-health.py:242-268:任意探测失败累计连续失败次数,达到阈值后才调用告警 helper。scripts/check-public-app-health.py:270-279:一次成功立即清零,并让 helper 评估健康恢复。scripts/send-wecom-group-alert.py:123-140:相同故障降噪;故障/提醒恢复后发送一次统一标题的恢复通知。- ARM 安装合同固定每 5 分钟探测、失败阈值为 2、单次超时为 10 秒。
只读运行证据
- 生产自动备份三组 timer 均 enabled/active;两个 SSH 入口属于同一机器的不同账号,不构成重复调度。
- 生产最近 14 天每日自动备份和新鲜度 watchdog 均成功,未发现备份失败或真实恢复行为。
- ARM dead-man 与应用健康 timer 均 enabled/active,最近一次 service 成功。
- ARM 当前额外 5 次
/ready请求全部成功,说明 OA 当前公网就绪。 - ARM 使用一个静态解析入口且未启用本机解析服务;它是当前链路的单点,但现有粗粒度类别仍不能证明当时一定是 DNS 而不是 TCP 连接失败。
结论
截图反映的是 ARM 到 OA 公网 /ready 的短时解析或连接抖动。它不是备份失败,不是恢复演练,也没有触发数据恢复。消息数量偏多的直接原因是健康探测按“连续两次失败即告警、一次成功即恢复”运行,而链路在告警和健康之间反复切换。
证据限制
- ARM 状态和完整 journal 为 root-only,当前入口只能读取 systemd 公共状态。
- 消息类别有意脱敏并合并 DNS/TCP,因此无法从群消息反推出原始异常。
- 历史会话检索器在当前 Trellis 构建中不可用;本结论不依赖该能力。
2026-08-23 最终只读复核
- 生产三组自动备份相关 timer 仍为 enabled/active。
- 最近 14 天共记录 14 次每日异机备份成功、14 次新鲜度 watchdog 成功、0 条自动备份失败记录。
- ARM dead-man 与公网健康 timer 仍为 enabled/active,最近一次公网健康 service 结果为 success/0。
- ARM 连续 5 次当前
/ready请求全部成功。 - 本轮未修改代码、systemd、DNS、网络、Webhook 或企业微信配置,未发送测试消息。