生产验证 — Layer 3 宿主机巡检 Telegram 打通
日期: 2026-06-07
Commit: f9934bd — feat(ops-patrol): Layer 3 巡检与 Telegram 配置打通
环境: https://api.synaglobal.vip
部署
| 项 |
结果 |
| 门控 |
7/7 PASS |
| push |
66a4cba..f9934bd main → main |
| deploy-production |
✓ Docker 重建,容器 healthy |
| 远程版本 |
f9934bd |
健康检查
| 检查 |
结果 |
GET /health |
ok |
GET /app/ |
HTTP 200 |
| 外网 HTTPS |
HTTP 200 |
Layer 3 巡检
| 检查 |
结果 |
crontab nexus-health-monitor |
✓ 已安装(部署脚本自动 install_ops_cron.sh) |
health_monitor.sh 手动执行 |
exit 0 |
/var/log/nexus_health.log |
空(/health 正常,无告警写入) |
Telegram / env 同步
| 检查 |
结果 |
DB telegram_bot_token |
未配置 |
DB telegram_chat_id |
未配置 |
/app/.env NEXUS_TELEGRAM_* |
未写入 |
read_telegram_env_status() |
env_synced: false |
说明: 生产尚未在设置页配置 Telegram;配置并保存后应自动 sync,或点「同步巡检 Telegram」。未 sync 时 health_monitor.sh 可通过 MySQL 回退(需 DB 有值)。
API
| 端点 |
未认证 |
GET /api/settings/ops-patrol/status |
401(预期) |
待用户终验
- 登录设置页 → 配置 Telegram → 确认 Layer 3 区块显示「巡检 Telegram 就绪」
- 点「同步巡检 Telegram」→
.env 已同步
- (可选)临时停容器验证 Telegram 重启告警
结论
部署成功;cron 与 health_monitor 已就绪。Telegram 告警需用户在 UI 配置后终验。
用户配置后复查(2026-06-07)
| 检查 |
结果 |
内存 TELEGRAM_BOT_TOKEN / CHAT_ID |
✓ 已配置 |
容器 /app/.env NEXUS_TELEGRAM_* |
✓ 已同步 |
read_telegram_env_status().env_synced |
true |
宿主机 docker/.env.prod Telegram |
未写入(容器无 host 写权限;不影响) |
health_monitor 读取 Telegram |
✓ READY via container .env |
| MySQL DB 回退 |
✓ db_fallback_ok True |
cron nexus-health-monitor |
✓ 运行中 |
Layer 3 巡检 Telegram 闭环已就绪。 /health 连续失败时将能推送 Telegram 并自动重启。
模拟巡检告警(2026-06-07)
发现与修复
| 项 |
说明 |
| Bug |
bump_fail_count 在 flock 子 shell 内递增,FAIL 恒为 0,永不触发重启/Telegram |
| Fix |
764703d — 子 shell 写文件后 cat 回传计数 |
| 部署 |
已上线生产 |
演练(iptables 阻断 127.0.0.1:8600,容器保持运行)
| 步骤 |
结果 |
| run1 / run2 |
fail=1 → fail=2 |
| run3 |
fail=3,last_restart 已写入,docker restart 执行 |
| 解除阻断后 |
/health ok,容器 Up (healthy) |
Telegram:第 3 次失败应已推送「连续 3 次无响应 / 正在自动重启」及「已恢复」类消息(请用户在 Telegram 确认)。
注意
docker pause 不适合演练:docker exec 无法读 Telegram 配置
- 演练方式:阻断宿主机 localhost 端口或真实进程故障(容器仍 Running)