Akarsh-Kiran-Gowda/k8-event-anamoly
GitHub: Akarsh-Kiran-Gowda/k8-event-anamoly
一个基于事件驱动的Kubernetes异常检测MVP,结合规则与状态感知分析,实现实时检测与可视化。
Stars: 1 | Forks: 0
# K8s 事件异常检测器
一个用于流式处理 Kubernetes 事件、轻量级异常检测,并在 React 仪表板中可视化结果的 Day-1 MVP。
## 项目结构
```
k8-event-anamoly/
├── backend/
│ ├── main.py
│ ├── collector.py
│ ├── parser.py
│ ├── detector.py
│ ├── storage.py
│ └── requirements.txt
├── frontend/
│ ├── index.html
│ ├── package.json
│ ├── vite.config.js
│ └── src/
│ ├── App.jsx
│ ├── index.css
│ └── main.jsx
└── README.md
```
## 后端
### 安装与运行
```
cd backend
pip install -r requirements.txt
uvicorn main:app --reload
```
后端 API 地址:`http://127.0.0.1:8000`
### 端点
- `GET /healthz`:健康检查
- `GET /events`:最近 100 条解析后的 Kubernetes 事件
- `GET /anomalies`:最近 50 条检测到的异常
- `POST /clear`:清除内存中的事件与异常
- `POST /login`:返回 `admin/admin` 的演示令牌
### 检测规则
- `CRITICAL`:OOM 杀死事件(`OOMKilled` 原因或消息中的 OOM 模式)
- `CRITICAL`:崩溃/重启模式(消息中包含 `back-off`、`backoff`、`crashloop`)或原因包含 `Failed`
- `WARNING`:就绪/健康问题(`Unhealthy` 原因或消息中的 `probe failed`)
- `WARNING`:在滚动窗口内近期发生超过 5 次的 `ScalingReplicaSet` 事件
- `INFO`:滚动事件缓冲区中包含超过 40 个事件
### 内置强化措施
- 线程安全的内存存储(收集器 + API 访问)
- 事件与异常的有界缓冲区
- 短时间窗口内的重复异常抑制
- 收集器配置回退:
- 优先使用本地 kubeconfig
- 其次使用集群内配置
- 若两者均不可用,则禁用收集器
## 前端
### 安装与运行
```
cd frontend
npm install
npm run dev
```
前端地址:`http://127.0.0.1:5173`
默认登录:`admin / admin`
仪表板每 3 秒轮询 `http://127.0.0.1:8000/anomalies`,使用增量更新(仅添加未见过的事件),并包含以下功能:
- 时区选择器(`India`、`US`、`EU`、`Japan`)
- 严重性指示器(`CRITICAL`、`WARNING`、`INFO`)
- 自动滚动开关
- 清除内存操作
## 快速烟雾检查
1. 启动后端。
2. 访问 `http://127.0.0.1:8000/healthz` 并验证返回 `{"status":"ok"}`。
3. 启动前端并打开 `http://127.0.0.1:5173`。
4. 确认仪表板显示轮询状态并更新异常卡片。
## 备注
- 本 MVP intentionally 使用内存存储。
- 如果当前机器未连接到 Kubernetes 集群,后端端点仍会运行并返回空列表。
标签:CrashLoopBackOff, OOMKilled, Python, React, SEO: Kubernetes 异常检测, SEO: Kubernetes 集群监控, SEO: 实时事件监控, Syscalls, TCP/UDP协议, Uvicorn, 事件缓冲, 事件驱动, 云计算, 健康探测, 前端仪表盘, 副本集伸缩, 去重抑制, 可疑活动模式, 后端API, 异常检测, 无后门, 流式事件处理, 滚动更新, 状态感知分析, 硬安全配置, 线程安全内存存储, 自定义脚本, 规则引擎, 资源问题, 轻量级检测, 逆向工具