BestuSingh/AI-DevOps-Incident-Response-Agent
GitHub: BestuSingh/AI-DevOps-Incident-Response-Agent
面向 Kubernetes 生产环境的多代理 SRE 事件响应系统,通过 AI 驱动的异常检测、根因分析和安全自动修复来缩短事件恢复时间。
Stars: 0 | Forks: 0
# AI DevOps 事件响应代理
Production SRE Copilot 是一个多代理事件响应服务,用于遥测数据接入、异常检测、根因分析、安全的 Kubernetes 补救措施、反馈收集和事件记忆。
## 架构
```
Prometheus / ELK / API / Simulator
|
v
Monitoring Agent
- normalizes logs and metrics
- builds service feature windows
|
v
Anomaly Detection Agent
- guardrail thresholds
- EWMA + z-score drift
- Isolation Forest when baseline is warm
|
v
Root Cause Analysis Agent <---- Chroma / JSON Vector Memory
- Google Gemini structured JSON RCA
- correlates logs, metrics, and similar incidents
|
v
Action Agent
- Gemini action planning
- independent safety validation
- Kubernetes scale/restart/rollback
- dry-run by default
|
v
Feedback Agent
- MTTR and outcome scoring
|
v
Memory Update
- stores logs, RCA, action, and outcome
```
强制性流程在 `src/sre_copilot/orchestrator.py` 中实现:
```
logs/metrics -> anomaly detection -> RCA -> action -> feedback -> memory update
```
编排层在安装了 LangGraph 时会使用它,如果 LangGraph 不可用,则会回退到相同的线性图以进行本地冒烟测试。
## 已实现的功能
- FastAPI 端点:`POST /ingest`、`GET /incident`、`POST /incident`、`GET /status`、`GET /metrics`
- 用于 API、Prometheus 风格、ELK 风格和模拟器遥测负载的监控代理
- 真正的异常检测,具有绝对的 SRE 护栏、EWMA/z-score 漂移检测以及基线预热后的 Isolation Forest 算法
- 使用结构化 JSON 输出进行 RCA 和行动规划的 Google Gemini API 包装器
- 具有确定性嵌入的 Chroma 向量记忆,以及在受限本地环境下的 JSON 回退方案
- Kubernetes 操作:扩缩 deployment、滚动重启、撤销 rollout
- 安全门控:默认 dry-run(试运行)、命名空间允许列表、置信度阈值、副本数边界、非破坏性操作白名单
- 回滚元数据和扩缩回滚支持
- 用于检测延迟、MTTR、事件计数和自动修复的 Prometheus 指标
- 用于高 CPU 和 CrashLoop 事件的本地模拟器
- Dockerfile 以及 Kubernetes deployment/service/RBAC 清单
Gemini 结构化输出遵循官方的 Google AI 文档:[Structured outputs | Gemini API](https://ai.google.dev/gemini-api/docs/structured-output)。
## 设置
```
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -r requirements.txt
Copy-Item .env.example .env
```
编辑 `.env`:
```
GEMINI_API_KEY=your-real-key
GEMINI_OFFLINE_MODE=false
DRY_RUN=true
K8S_NAMESPACE=default
K8S_DEFAULT_DEPLOYMENT=checkout-api
```
若要在没有 Gemini 密钥的情况下进行本地测试,请设置:
```
GEMINI_OFFLINE_MODE=true
```
生产环境应使用 Gemini 模式并设置 `GEMINI_API_KEY`。
## 本地运行
```
$env:PYTHONPATH="src"
uvicorn sre_copilot.api:app --host 0.0.0.0 --port 8000 --reload
```
检查健康状态:
```
Invoke-RestMethod http://localhost:8000/status
```
触发强制性高 CPU 演示:
```
Invoke-RestMethod `
-Method Post `
-Uri http://localhost:8000/incident `
-ContentType "application/json" `
-Body '{"scenario":"high_cpu","service":"checkout-api","environment":"local"}'
```
触发 CrashLoop 演示:
```
Invoke-RestMethod `
-Method Post `
-Uri http://localhost:8000/incident `
-ContentType "application/json" `
-Body '{"scenario":"service_crash","service":"checkout-api","environment":"local"}'
```
运行 CLI 演示:
```
$env:PYTHONPATH="src"
python scripts/run_demo.py --scenario high_cpu --offline-llm
```
该演示会用正常流量预热基线,发送一个高 CPU 事件,检测异常,创建 RCA,规划扩容操作,验证安全性,记录 dry-run 结果,并将事件存储在记忆中。
## API 负载
`POST /ingest` 接受标准化的遥测数据:
```
{
"source": "api",
"environment": "prod",
"logs": [
{
"service": "checkout-api",
"level": "ERROR",
"message": "request timeout after 3000ms route=/checkout"
}
],
"metrics": [
{
"service": "checkout-api",
"name": "cpu_pct",
"value": 96.4,
"unit": "%"
},
{
"service": "checkout-api",
"name": "latency_ms",
"value": 2180,
"unit": "ms"
}
]
}
```
## Kubernetes 部署
构建并部署:
```
docker build -t sre-copilot:0.1.0 .
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/secret.example.yaml
kubectl apply -f k8s/rbac.yaml
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml
```
在验证命名空间允许列表、默认 deployment、RBAC 和回滚程序之前,请保持 `DRY_RUN=true`。要启用变更操作,请在 `k8s/deployment.yaml` 中设置 `DRY_RUN=false`。
## 安全模型
LLM 可以建议操作,但不能直接执行它们。`ActionAgent` 会重新验证每个计划:
- 操作类型必须在白名单中
- 异常和操作置信度必须超过阈值
- 命名空间必须被明确允许
- 副本目标数必须在策略限制内
- Kubernetes 资源名称必须有效
- 未实现破坏性操作
## 测试
```
$env:PYTHONPATH="src"
pytest
```
## 生产环境注意事项
- 为 `/app/data` 使用持久化卷,以便基线和 Chroma 记忆在 Pod 重启后仍然保留。
- 将真实的 Prometheus/ELK 收集器连接到 `POST /ingest`,或者添加一个轮询进程,将上游遥测数据转换为 `IngestPayload`。
- 如果您的 SRE 团队只希望进行 RCA 操作,请在初始影子模式期间保持 `AUTO_ACTION_ENABLED=false`。
- 将 `/metrics` 导出到 Prometheus,并对失败的操作、上升的 MTTR 或低置信度的 RCA 比率发出警报。
标签:AIOps, API集成, AV绕过, Chroma, DLL 劫持, ELK, FastAPI, Gemini, IT运维, LangGraph, MTTR评估, PyRIT, Python, RCA, Socks5代理, SRE, 人工智能, 偏差过滤, 反馈循环, 可观测性, 向量数据库, 告警处理, 多智能体系统, 大语言模型, 子域名突变, 容器编排, 异常检测, 指标监控, 无后门, 时序分析, 智能运维, 服务降级, 根因分析, 模块化设计, 用户模式Hook绕过, 站点可靠性工程, 系统自愈, 自动化修复, 自动化运维, 自定义请求头, 请求拦截, 逆向工具, 遥测数据, 隔离森林