SanskrutiChavan/ShadowDeploy
GitHub: SanskrutiChavan/ShadowDeploy
一个基于本地大语言模型的 Kubernetes 事件响应平台,自动检测 Pod 故障并进行 AI 根因分析、告警通知与指标可视化。
Stars: 0 | Forks: 0
**ShadowDeploy - 基于 AI 的 Kubernetes 事件响应平台**
ShadowDeploy 是一个基于 AI 的 Kubernetes 事件响应平台,能够自动检测 pod 故障、收集日志、使用本地运行的大型语言模型 执行根因分析、通过 FastAPI 将事件存储在 SQLite 中、发送电子邮件警报,并使用 Prometheus 和 Grafana 可视化操作指标。
与基于云的 AI 解决方案不同,ShadowDeploy 完全在本地运行,确保了隐私性、低成本且无外部 API 依赖。
**功能**
\- 自动检测 Kubernetes pod 故障
\- 收集 pod 日志
\- 使用 Ollama 进行基于 AI 的根因分析
\- 将事件存储在 SQLite 中
\- FastAPI REST API
\- HTML 电子邮件警报
\- Prometheus 指标
\- Grafana Dashboard
\- 完全本地化(无需 OpenAI API)
\--------------------------------------------------------------------------------------------------------------
**架构**
Kubernetes
│
▼
ShadowDeploy Watcher
│
▼
Log Collector
│
▼
Ollama (Local LLM)
│
▼
FastAPI API
│
▼
SQLite Database
│
├────────► Email Alerts
│
▼
Prometheus
│
▼
Grafana Dashboard
\--------------------------------------------------------------------------------------------------------------
**技术栈**
组件 技术
语言 Python 3.11
容器编排 Kubernetes (Minikube)
API FastAPI
AI Ollama (Mistral / Llama3)
数据库 SQLite
监控 Prometheus
可视化 Grafana
警报 Gmail SMTP
容器运行时 Docker
包管理器 Helm
\--------------------------------------------------------------------------------------------------------------
**支持的故障类型**
\- CrashLoopBackOff
\- ImagePullBackOff
\- ErrImagePull
\- OOMKilled
\- FailedScheduling
\- Failed Health Checks
\- Missing Environment Variables
\--------------------------------------------------------------------------------------------------------------
**项目结构**
shadowdeploy/
├── agent/
│ ├── __init__.py # Python 包标记
│ ├── watcher.py # Kubernetes pod 故障监视器(核心循环)
│ ├── log_collector.py # 发生故障时收集 pod 日志
│ ├── ai_analyzer.py # 用于根因分析的 Ollama LLM 集成
│ ├── alert_sender.py # 通过 smtplib 发送 HTML 电子邮件警报
│ └── metrics.py # Prometheus gauge 指标
├── api/
│ ├── __init__.py
│ ├── main.py # FastAPI 应用程序入口点
│ ├── database.py # SQLite 连接和操作
│ ├── models.py # Pydantic 请求/响应模型
│ └── routes/
│ ├── incidents.py # GET + POST /api/incidents
│ ├── stats.py # GET /api/stats
│ └── health.py # GET /health
├── apps/
│ ├── missing-env/ # 应用 1:因缺少环境变量而崩溃
│ ├── crashloop/ # 应用 2:随机崩溃
│ ├── oom-kill/ # 应用 3:内存泄漏
│ └── bad-port/ # 应用 5:健康检查端口错误
├── k8s/
│ ├── failing-apps/ # 所有 5 种故障的 Kubernetes 清单
│ └── shadowdeploy/ # ShadowDeploy agent 本身的清单
├── monitoring/
│ ├── prometheus-values.yaml
│ └── grafana-dashboard.json
├── database/ # SQLite .db 文件(被 git 忽略)
├── config.py # 中央配置 — 读取 .env
├── requirements.txt # 所有 Python 依赖项
├── .env # 密钥 — 绝不提交到 git
├── .env.example # 为贡献者提供的安全模板
├── .gitignore
└── README.md
\--------------------------------------------------------------------------------------------------------------
**前置条件**
\- Python 3.11+
\- Docker Desktop
\- Minikube
\- kubectl
\- Helm
\- Ollama
\--------------------------------------------------------------------------------------------------------------
**安装说明**
克隆代码库
git clone https://github.com/SanskrutiChavan/ShadowDeploy.git
cd shadowdeploy
创建虚拟环境
python -m venv venv
激活 Windows
venv\\Scripts\\activate
Linux/macOS
source venv/bin/activate
安装依赖项
pip install -r requirements.txt
复制环境文件
copy .env.example .env
安装 Ollama 模型
ollama pull mistral
启动 Minikube
minikube start
部署示例应用程序
minikube docker-env --shell powershell | Invoke-Expression
docker build -t bad-port-app:latest ./apps/bad-port
docker build -t crashloop-app:latest ./apps/crashloop
docker build -t missing-env-app:latest ./apps/missing-env
docker build -t oom-kill-app:latest ./apps/oom-kill
docker build -t bad-image-app:latest ./apps/bad-image
kubectl apply -f k8s/failing-apps/
\--------------------------------------------------------------------------------------------------------------
运行项目
终端 1
ollama serve
终端 2
uvicorn api.main:app --reload --port 8000
终端 3
python -m agent.watcher
\--------------------------------------------------------------------------------------------------------------
API
Swagger UI
http://localhost:8000/docs
指标
http://localhost:8000/metrics
## 统计信息
http://localhost:8000/api/stats
监控
Prometheus
minikube service monitoring-kube-prometheus-prometheus
## Grafana
minikube service monitoring-grafana
未来增强功能
\- Telegram 通知
\- Slack 集成
\- Microsoft Teams 警报
\- 事件自动修复
\- 多集群监控
\- PostgreSQL 支持
\- Kubernetes Operator
\- AI 生成的根因分析报告 (PDF)
\- 基于角色的身份验证
\- React Dashboard
\--------------------------------------------------------------------------------------------------------------
由 Sanskruti Nainesh Chavan 和 Pranav Chaudhari 构建
标签:AI风险缓解, AV绕过, FastAPI, Grafana, 子域名突变, 故障排查, 本地大模型, 自定义请求头, 请求拦截, 运维监控, 逆向工具