Files
MoFin/docs/HEALTH-PIPELINE.md
T

112 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MoFin — 健康监控管线
> 版本: v1.0 | 部署目标: Linux 246
---
## 概述
两层监控,通过 crontab 调度,聚合到 Dashboard F Tab。
```
┌─────────────────────────────────┐
│ Dashboard F Tab │
│ /api/monitor 聚合展示 │
└──────────┬──────────────────────┘
│ 读取报告文件
┌──────────┴──────────┐
│ │
┌────▼─────┐ ┌────▼─────┐
│ Tier 1 │ │ Tier 2 │
│ 每 5 分钟 │ │ 每天 8:00│
└──────────┘ └──────────┘
│ │
agents_health_check agents_daily_health
│ (规划中)
┌────▼─────┐
│ TODO 文件 │
│ .jsonl │
└──────────┘
```
---
## Tier 1: 快速健康检查(每 5 分钟)
**脚本**: `agents_health_check.py`
**调度**: `crontab: */5 * * * *`
**检查内容**:
- 4 个服务:MoFin API (:8899) / 知微 Gateway (:8643) / ejabberd (:5222) / MoFin DB
- 检查方式:socket 端口 + HTTP /health + SQLite connect
- 全正常时静默(不输出、不写日志)
**异常处理**:
- 写入 `gateway/temp/health_todos.jsonl`
- 每条 TODO 包含:服务名、失败原因、时间戳
- 写入 `gateway/temp/last_health_check.json` 供 Dashboard 读取
**日志**: `gateway/logs/health_check.log`
**报告**: `gateway/temp/last_health_check.json`
---
## Tier 2: 每日全面检查(规划中)
**计划脚本**: `agents_daily_health.py`
**计划调度**: `crontab: 0 8 * * * 1-5`(交易日 8:00
**计划检查内容**:
- 在 Tier 1 基础上增加:
- 磁盘空间检查(阈值 10G 警告 / 2G 严重)
- crontab 存活检查(验证关键定时任务)
- MoFin DB 大小和新鲜度检查
- 生成结构化 JSON 报告
**注意**: MoFin 已有 `system_health_check.py`(每日 9:00)和 `morning_health_check.py`(交易日 8:00,8层48项),Tier2 将与现有检查互补,不重复。
---
## Dashboard 集成
### /api/monitor 端点
聚合展示两层数据:
```json
{
"tasks": [
{"name": "agents-health-check", "status": "cron_ok"},
{"name": "agents-daily-health", "status": "not_deployed"},
{"name": "dashboard", "status": "running"}
],
"tier1": { "services": [...], "summary": {"ok": 5, "total": 5} },
"tier2": { "services": [...], "summary": {"ok": 0, "total": 0} }
}
```
### F Tab 展示
- 系统概览(Tier1 通过率)
- 定时任务状态(绿色=正常,黄色=未部署,红色=异常)
- Tier1 服务详情
---
## 如何新增监控
1. **添加服务到 Tier 1** — 编辑 `agents_health_check.py``SERVICES` 列表
2. **更新 Dashboard** — 在 `dashboard.py``SERVICES` 中同步添加
3. **写 Spec** — 在 `specs/` 创建或更新对应模块的 JSON
---
## 故障排查
| 现象 | 检查 |
|------|------|
| F Tab 无数据 | `cat ~/MoFin/gateway/temp/last_health_check.json` 确认文件存在 |
| Tier1 任务显示"未部署" | `crontab -l \| grep health` 确认 crontab 条目 |
| TODO 堆积 | 手动检查失败服务的实际状态 |
| Dashboard 不显示新服务 | 确认 dashboard.py 的 SERVICES 列表和 health_check 同步 |