Files
MoFin/specs/health.json
T

74 lines
3.4 KiB
JSON
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.
{
"module": "health",
"version": "1.0",
"purpose": "MoFin 系统健康监控管线。三层监控(Tier1 快速检查 + Tier2 日检),聚合到 Dashboard F Tab 展示。",
"human_help": {
"title": "F 健康 — 系统健康",
"description": [
"实时监控 MoFin 所有关键服务(Flask API、数据库、cron 任务)的运行状态。",
"两层监控:",
" Tier1 — 每 5 分钟快速端口/进程检查",
" Tier2 — 每日 8:00 开盘前全面体检(进程+端口+DB+磁盘+cron",
"检查结果聚合到 Dashboard F Tab,异常自动告警。"
],
"usage": [
"1. 打开 Dashboard → F 健康 Tab 查看概览",
"2. 绿色 = 正常,黄色 = 部分异常,红色 = 严重异常",
"3. 异常服务列表直接显示影响描述",
"4. 定时任务区域检查所有 cron 是否正常运行"
],
"troubleshooting": [
"F Tab 显示无数据 → 检查 crontab 中健康检查是否部署",
"服务显示 down 但实际在运行 → 检查端口或 health 端点是否正确",
"TODO 堆积 → 检查 self_todo_executor 是否在 crontab 中"
]
},
"ai_spec": {
"apis": [
{"method": "GET", "path": "/api/services", "returns": "{services[{name, type, port, health{ok}, status}]}"},
{"method": "GET", "path": "/api/expected", "returns": "{expected[{name, port, expected, critical}], actual{name:status}}"},
{"method": "GET", "path": "/api/monitor", "returns": "{tier1{summary{ok,total}}, tier2{summary{ok,total}}, tasks[{name,status}]}"}
],
"dependencies": [
"agents_health_check.py — Tier1(每 5 分钟,socket 端口 + HTTP /health",
"agents_daily_health.py — Tier2(每日 8:00,端口+进程+DB+磁盘+cron",
"mofin.db — SQLite 数据库(检查可读写)"
],
"architecture": {
"monitored_services": [
{"name": "mofin_api", "port": 8899, "type": "http", "check": "GET /api/portfolio"},
{"name": "mofin_dashboard", "port": 5804, "type": "http", "check": "GET /api/health"},
{"name": "zhiwei_gateway", "port": 8643, "type": "http", "check": "GET /v1/health"},
{"name": "ejabberd", "port": 5222, "type": "tcp", "check": "socket connect"},
{"name": "mofin_db", "port": 0, "type": "file", "check": "sqlite3 connect + SELECT"}
]
},
"constraints": [
"Tier1 全正常时静默(不输出日志)",
"Tier1 异常写入 gateway/temp/health_todos.jsonl",
"Tier1 报告写入 gateway/temp/last_health_check.json",
"Tier2 报告写入 gateway/temp/last_daily_health.json",
"Dashboard /api/monitor 聚合读取以上 JSON 文件"
],
"must_not": [
"不要在健康检查中修改业务数据",
"不要硬编码 Windows 路径或命令",
"不要检查已停用的服务(wechat_agent 等)"
],
"tests": [
{"id": "H01", "name": "/api/services 返回服务列表", "endpoint": "GET /api/services"},
{"id": "H02", "name": "/api/expected 返回期望矩阵", "endpoint": "GET /api/expected"},
{"id": "H03", "name": "/api/monitor 返回监控数据", "endpoint": "GET /api/monitor"}
],
"related_files": [
"agents_health_check.py — Tier1 健康检查",
"agents_daily_health.py — Tier2 日检",
"dashboard.py — /api/services, /api/expected, /api/monitor",
"templates/dashboard.html — F Tab 渲染",
"specs/health.json — 本 spec 文件"
]
}
}