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, 异常检测, 无后门, 流式事件处理, 滚动更新, 状态感知分析, 硬安全配置, 线程安全内存存储, 自定义脚本, 规则引擎, 资源问题, 轻量级检测, 逆向工具