docs: update README, API reference, dev-log, project structure with Agent monitoring + quick-alarm + latest fixes

- README.md: React 19, default pwd 123456, Docker Compose deploy, correct module list
- api-reference.md: add Agent monitoring section (report/latest/rules/quick-setup/alerts/tasks/kline)
- dev-log.md: new entry documenting hostname/IP fix, system collector, offline detection, quick alarm
- project-structure.md: add agent/ directory, dev-log.md link, React 19
This commit is contained in:
attacker committed 2026-06-18 16:11:13 +00:00
1 parent c51d0b8b8b
commit 4e3f8cb306
20 files changed
+1315 -1344

No files matched your search

+25
View File
@@ -1807,3 +1807,28 @@ cd ~/devops/aiops
- 后端 `scripts/mock.go` 644 行(已废弃种子脚本),可考虑直接删除(mocks 已迁移到真实 API)
- 前端 `services/api.ts` 752 行超 700 行硬上限,可按模块拆分(userApi/dashboardApi/serverApi... 各拆独立文件 barrel re-export),风险较高需谨慎
- 回到 dev-log 早期建议:用户消息气泡中【平台实时数据】块可折叠展示
## 2026-06-18 Agent 监控指标上报修复 + 一键报警 + 品牌统一
### 诊断与修复
- **Agent hostname 与 servers 表不匹配导致指标更新静默失败**: ReceiveReport 原 WHERE 两参数都填 agent hostname,hostname 不匹配任何 server → RowsAffected=0 → 静默失败(agent_reports 有数据但 servers 不更新)
- 修复: Agent 启动时探测本机 IP(net.Dial("udp"))在 JSON 中含 ip 字段;后端用 req.IP 作 OR ip 匹配
- 修复: 改用 h.db.Exec() 原始 SQL 避免 GORM soft-delete 自动条件干扰
- **Agent 未采集系统信息导致 servers.os 为空**: 新建 agent/collector/system.go(读 /etc/os-release PRETTY_NAME + /proc/version kernel),启动采集并前 3 次上报携带
- **告警引擎离线检测以 agent_reports hostname 为中心而非 servers IP**: 同一服务器可能有多个 hostname 交替上报,旧 hostname 超 3 分钟触发离线告警但服务器实际在线
- 修复: checkOfflineAlerts 改为以 servers IP 为中心 — 遍历服务器 IP,检查 3 分钟内是否有任何 agent 对应该 IP → 有则在线
- **Agent latest API 过滤过期 hostname**: GetLatestReports SQL 添加 WHERE report_time >= NOW() - 3 MINUTE + AND s.id IS NOT NULL 双重过滤,监控大屏不再显示离线/过期主机
- **主机名自动同步**: ReceiveReport 发现 hostname 不匹配但 IP 匹配时,CASE WHEN 自动更新 servers 表 hostname 字段
### 一键报警
- 后端新增 POST /api/v1/agent/rules/quick-setup 接口
- 自动检测所有 agent_status=online 的主机
- 为每台主机创建 CPU使用率(Warn)/内存使用率(Warn)/磁盘使用率(Warn)/网络带宽使用率(Warn)4 条默认规则(阈值 80%)
- 前端 AlertCenter 规则列表从 agentApi.listRules() 拉取(之前调 alertCenterApi.getRules() 走的空路由)
- 规则切换/删除/编辑 全部对接 agentApi
### 品牌统一
- EZOps → AIOps 全局替换: frontend/backend/agent/scripts 全量扫描替换
- 小写 ezops(Go module path/launchd plist/JWT secret)保留不改避免破坏编译/运行时
- WebShell 欢迎语/Login 标题/LLM system prompt 全部统一为 AIOps