# 健康监控(邮件版) 本目录提供 `health_email_monitor.py`,通过调用 `/health` 接口并使用**容器内已有邮件配置**发告警邮件。 ## 1) 快速试跑 ```bash cd /root/zsglpt python3 scripts/health_email_monitor.py \ --to 你的告警邮箱@example.com \ --container knowledge-automation-multiuser \ --url http://127.0.0.1:51232/health \ --dry-run ``` 去掉 `--dry-run` 即会实际发邮件。 ## 2) 建议 cron(每分钟) ```bash * * * * * cd /root/zsglpt && /usr/bin/python3 scripts/health_email_monitor.py \ --to 你的告警邮箱@example.com \ --container knowledge-automation-multiuser \ --url http://127.0.0.1:51232/health \ >> /root/zsglpt/logs/health_monitor.log 2>&1 ``` ## 3) 支持的规则 - `service_down`:健康接口请求失败(立即告警) - `health_fail`:返回 `ok/db_ok` 异常或 HTTP 5xx(立即告警) - `db_pool_exhausted`:连接池耗尽(默认连续 3 次才告警) - `queue_backlog_high`:任务堆积过高(默认 `pending_total >= 50` 且连续 5 次) 脚本支持恢复通知(规则恢复正常会发“恢复”邮件)。 ## 4) 常用参数 - `--to`:收件人(必填) - `--container`:Docker 容器名(默认 `knowledge-automation-multiuser`) - `--url`:健康地址(默认 `http://127.0.0.1:51232/health`) - `--state-file`:状态文件路径(默认 `/tmp/zsglpt_health_monitor_state.json`) - `--remind-seconds`:重复告警间隔(默认 3600 秒) - `--queue-threshold`:队列告警阈值(默认 50) - `--queue-streak`:队列连续次数阈值(默认 5) - `--db-pool-streak`:连接池连续次数阈值(默认 3) ## 5) 环境变量方式(可选) 也可不用命令行参数,改用环境变量: - `MONITOR_EMAIL_TO` - `MONITOR_DOCKER_CONTAINER` - `HEALTH_URL` - `MONITOR_STATE_FILE` - `MONITOR_REMIND_SECONDS` - `MONITOR_QUEUE_THRESHOLD` - `MONITOR_QUEUE_STREAK` - `MONITOR_DB_POOL_STREAK`