D2执行记录

源文件:D:\Hermes\reports\D2执行记录.md · 日期 2026-09-15 · 3KB

D2执行记录 - Phase 1: Dead-Man测试

执行日期: 2026-09-15(周二)
阶段: Phase 1 - Dead-Man测试
状态: ✅ 完成


Phase 1: Dead-Man测试(20:12-21:05)

20:12 暂停alert_channel_health cron

命令: hermes cron pause 7e8ae2aeca81
执行时间: 20:12:37
执行结果: ✅ 成功
验证: cron状态已显示paused

20:12-21:00 等待dead_mans_switch触发

暂停时间: 20:12:37
目标触发: 21:00:00
等待时长: 47分钟
心跳超时阈值: 30分钟
测试时间戳: 2026-09-15T20:15:00

关键发现:
- ❌ dead_mans_switch未配置为cron任务
- ✅ heartbeat_watchdog是整点运行,但不监控心跳
- ⚠️ 需要手动执行dead_mans_switch.py


20:50 手动执行dead_mans_switch.py

命令: python D:/Hermes/scripts/dead_mans_switch.py
执行时间: 20:50:11
执行结果: ✅ 成功
心跳状态: timeout
已过期: 2999s(阈值1800s)
TG告警: 已发送 ✅
本地文件: 已写入 ✅
邮件: SMTP未配置,跳过 ✅

20:50 验证告警结果

# 验证项 结果 状态
1 dead_mans_switch.py执行 成功 ✅
2 检测到心跳超时 2999s > 1800s ✅
3 TG告警发送 已发送 ✅
4 本地文件写入 dead_mans_switch_alert.txt ✅
5 alerts表无dead_man记录 符合预期 ✅
6 邮件发送 SMTP未配置,跳过 ✅

20:50 恢复alert_channel_health cron

命令: hermes cron resume 7e8ae2aeca81
执行时间: 20:50:52
执行结果: ✅ 成功
状态: active
下次运行: 21:00:00

注意: --run-now参数不适用于周期性任务,使用plain resume命令


21:00 验证心跳恢复

最新心跳记录: 2026-09-15T21:00:37
新增记录数: 1
状态: ok
验证时间: 21:00:55

21:05 清理测试数据

备份文件: dead_mans_switch_alert.txt.bak_D2_20260915
清理测试记录: ✅ 完成
保留历史数据: ✅

Phase 1 总结

项目 结果
暂停cron ✅ 成功
手动触发dead_mans_switch ✅ 成功
TG告警 ✅ 已发送
本地文件 ✅ 已写入
恢复cron ✅ 成功
心跳恢复 ✅ 成功
清理数据 ✅ 完成

Phase 2: 受控测试前3项(22:00-23:00)

22:00-22:20 告警路径测试

测试内容:
  1. 模拟alert_channel_health失败
  2. 验证dead_mans_switch检测超时
  3. 验证告警发送路径(TG + 本地文件 + 邮件)

22:20-22:40 超时路径测试

测试内容:
  1. 修改心跳超时阈值
  2. 验证不同阈值的触发行为
  3. 验证阈值变更的持久性

22:40-23:00 通道健康测试

测试内容:
  1. 检查channel_health表结构
  2. 验证心跳记录格式
  3. 验证历史记录清理机制

清理清单


回滚方案


执行状态: Phase 1 ✅ 完成,Phase 2 ⏳ 待执行

下次执行时间: 22:00