feat(k8s): M12 事件聚合 + 告警联动 — EventsPage 聚合看板

- 后端: 新增 GetEventsSummary handler — 按 Reason/Namespace/Kind 三维度聚合 + 时间窗口过滤
- 后端: 注册 GET /:clusterCode/events/summary 路由
- 前端: EventsPage 完整重写(~480行) — 概览卡片 + 三维度柱状图(recharts) + 图表联动过滤 + 最新告警面板 + 可展开事件行 + 时间窗口选择器
- 前端: api.ts 新增 getEventsSummary 方法
- 验证: API 返回完整聚合数据(total=3, warning_count=613, BackOff top reason), SPA 200, TS零错误, Vite构建成功
This commit is contained in:
attacker committed 2026-06-24 02:50:06 +08:00
1 parent e76061661b
commit 7192f58b72
7 files changed
+569 -43

No files matched your search

+35 -1
View File
@@ -245,9 +245,43 @@
### 后续(P3+)
### M12: 事件聚合 + 告警联动 [done]
**目标**: 从扁平事件列表升级为事件聚合看板,支持原因/命名空间/资源类型多维聚合 + 告警联动展示
**后端改动**:
- `kubernetesclient/client.go`: EventItem 结构体已有完整字段(InvolvedObject/Type/Reason/Message/Count/FirstTimestamp/LastTimestamp),无需改动
- `kubernetes.go`: 新增 `GetEventsSummary` handler — 聚合事件统计:
- 按 Reason 聚合(Top 15):统计每种 Warning 原因的累计触发次数
- 按 Namespace 聚合(Top 15):哪个命名空间告警最多
- 按 Resource Kind 聚合:Pod/Node/Deployment 等资源类型分布
- 最新告警事件列表(Top 10 by lastTimestamp)
- 时间窗口过滤(hours 参数:1h/6h/24h/7d/all)
- `routes.go`: 注册 `GET /:clusterCode/events/summary`
**前端改动**:
- `EventsPage.tsx` 完整重写(~480行):
- 概览卡片:事件总数 / 告警事件累计次数 / 正常事件 / 告警类型数
- 三维度柱状图(recharts):告警原因 Top-N / 命名空间分布 / 资源类型分布
- 图表交互:点击柱状图自动过滤事件列表(reason/kind 联动)
- 最新告警面板:红色高亮卡片,展示最近 10 条 Warning 事件
- 时间窗口选择器(全部/1h/6h/24h/7d)
- 事件列表增强:可展开行(显示首次/最后出现时间 + 事件名称)、告警类型高亮、相对时间显示
- 已选过滤 Badge(可点击移除)
**验收标准**:
- [x] `GET /:clusterCode/events/summary` 返回 total/warning_count/normal_count/by_reason/by_namespace/by_kind/recent_warnings
- [x] 时间窗口过滤正常工作(hours=24 只返回近 24h 事件)
- [x] 前端三维度柱状图正确渲染(recharts)
- [x] 点击图表柱可过滤事件列表
- [x] 最新告警面板展示 Warning 事件
- [x] 事件列表行可展开查看详情
- [x] TypeScript 零编译错误 + Vite 构建成功
- [x] SPA 路由 `/kubernetes/:code/events` 返回 200
---
| 模块 | 描述 |
|------|------|
| M12 | 事件聚合 + 告警联动 |
| M13 | 多集群资源对比看板 |
---