English | 简体中文
基于 FastAPI 的内部运维服务,提供预测、根因分析、巡检、助手和 Kubernetes 修复能力。功能依赖部署环境中的 Prometheus、Kubernetes、Redis 与模型供应商;预测和诊断结果需要结合实际环境验证。
生产部署与安全要求见 部署说明。生产环境必须提供 AIOPS_API_KEY,Go 后端通过 X-API-Key 调用。历史版本中的集群凭据与 Redis 密码必须轮换后才能投入生产。
1.0 仅接受 UTF-8 编码、非空的 .md 与 .txt 文件,单文件及添加文档后的完整文本均不能超过 10 MiB。Word、PDF 等二进制格式需先在本地转换为文本;服务不会将其伪装为可解析文件。
身份、文件名、格式、大小和内容校验通过后才初始化知识索引。上传或添加成功表示新增文档已完成一次必要索引;全库重建是独立的显式操作,可能调用嵌入模型,不应在上传后自动重复执行。
工作流审批绑定可信调用主体,只能确认自己的原计划动作;随机计划ID不替代授权。并发确认、参数变化、权限/命名空间限制、过期与重复请求均会被拒绝。超时或失败可能已产生副作用,禁止盲目重试,必须先核对实际状态。当前为单进程易失审批,不提供跨副本防重保证,完整配额与状态契约见生产说明。
自 SEC-26 起工作流默认只生成计划,所有动作(含 low 风险)都需经 /api/v1/autofix/workflow/confirm 显式确认,且仅限 AUTOFIX_ALLOWED_NAMESPACES 白名单(默认空,即不执行);/autofix/repair、/autofix/bootstrap 默认关闭(403);/autofix/bootstrap 开启后 test 命名空间也必须在 AUTOFIX_ALLOWED_NAMESPACES 内(否则 403 AUTOFIX_NAMESPACE_NOT_ALLOWED)。配置项与默认值见自动修复指南。
RAG + MCP 混合架构,专为运维场景优化
- 🧠 RAG 模式: 基于向量检索的知识问答,检索部署者提供的运维知识库
- 🔧 MCP 模式: 按服务端只读策略查询 Kubernetes 指标和 HPA,资源变更使用独立授权工作流
- 💬 智能对话: 支持上下文理解,多轮对话解决复杂问题
- 🎯 意图识别: 自动路由到最适合的处理模式
机器学习驱动的容量规划
- 📈 多维预测: QPS、CPU、内存、磁盘使用趋势预测
- ⏰ 时间窗口: 支持 1-168 小时的预测时间跨度
- 🎯 精准建议: 智能实例数量和资源配置推荐
- 📊 置信度评估: 提供预测可信度和风险评估
按风险与权限约束执行修复
- 🔍 智能诊断: 深度分析 Pod、Deployment、Service 状态
- 🚀 自动修复: 智能重启、扩缩容、配置调整
- 🛡️ 风险控制: 修复前预检、安全限制、回滚机制
- 📋 操作记录: 完整的修复日志和影响评估
多数据源融合的故障诊断引擎
- 🔍 数据融合: 整合 Prometheus 指标、K8s 事件、Pod 日志
- 🧮 异常检测: 基于统计学和机器学习的异常识别
- 🔗 关联分析: 多维度相关性分析和因果推理
- ⚡ 快速定位: 整合采集结果生成根因分析
端到端的系统状态感知
- 🌐 多组件监控: LLM 服务、向量存储、K8s 集群、缓存系统
- 💓 健康检查: 启动探针、存活探针、就绪探针
- 📊 性能指标: 响应时间、可用性、错误率实时监控
- 🚨 智能告警: 基于阈值和趋势的多级告警策略
graph TB
subgraph "🌐 接口层"
A1[REST API<br/>FastAPI]
A2[WebSocket<br/>流式交互]
A3[MCP Protocol<br/>工具调用]
end
subgraph "🧠 智能代理层"
B1[AI助手<br/>RAG+MCP]
B2[预测引擎<br/>ML Models]
B3[修复代理<br/>K8s Fixer]
B4[分析引擎<br/>RCA Engine]
end
subgraph "💾 数据层"
C1[Redis向量库<br/>知识检索]
C2[Prometheus<br/>时序指标]
C3[Redis缓存<br/>性能优化]
end
subgraph "☁️ 基础设施"
D1[Kubernetes<br/>容器编排]
D2[Docker<br/>容器化]
D3[监控告警<br/>Grafana]
end
A1 --> B1
A1 --> B2
A1 --> B3
A1 --> B4
A2 --> B1
A3 --> B1
B1 --> C1
B2 --> C2
B3 --> D1
B4 --> C2
B1 --> C3
B2 --> C3
B3 --> C3
B4 --> C3
C2 --> D3
D1 --> D2
| 🚀 后端框架 FastAPI + AsyncIO |
🧠 AI 引擎 LangGraph + OpenAI |
💾 数据存储 Redis + Prometheus |
☁️ 容器化 Docker + K8s |
# 1️⃣ 克隆项目
git clone https://github.com/GoSimplicity/AI-CloudOps.git
cd AI-CloudOps
# 2️⃣ 配置环境
cp env.example .env
nano .env # 配置 LLM_API_KEY 等必要参数
# 3️⃣ 一键启动
chmod +x scripts/deploy.sh
./scripts/deploy.sh# 🔑 必需配置
LLM_API_KEY=sk-your-api-key # LLM API 密钥
LLM_BASE_URL=https://api.openai.com/v1 # LLM API 地址
LLM_MODEL=gpt-4o-mini # 使用的模型
# 🔧 可选配置
K8S_CONFIG_PATH=~/.kube/config # Kubernetes 配置
REDIS_PASSWORD=your-secure-password # Redis 密码
PROMETHEUS_URL=http://localhost:9090 # Prometheus 地址部署完成后,访问以下地址验证服务状态:
| 🌐 服务 | 📍 地址 | 📝 说明 |
|---|---|---|
| 🚀 主应用 | http://localhost:8080 | API 服务和文档 |
| 🔧 MCP 服务 | http://localhost:9000 | 工具调用服务 |
| 📊 监控面板 | http://localhost:9090 | Prometheus 监控 |
# ✅ 健康检查
curl http://localhost:8080/api/v1/health
# 📚 API 文档
open http://localhost:8080/docs🤖 点击查看 AI 助手交互演示
// 💡 RAG 模式 - 知识问答
POST /api/v1/assistant/query
{
"question": "Kubernetes Pod 一直处于 Pending 状态怎么办?",
"mode": "rag",
"session_id": "user123"
}
// 📖 响应示例
{
"code": 0,
"message": "查询成功",
"data": {
"answer": "Pod 处于 Pending 状态通常有以下几个原因和解决方案:\n\n🔍 **常见原因分析**:\n1. **资源不足** - 集群没有足够的 CPU/内存资源\n2. **调度约束** - nodeSelector、affinity 规则限制\n3. **存储问题** - PVC 无法绑定到 PV\n4. **镜像拉取** - 镜像不存在或权限问题\n\n🛠️ **排查步骤**:\n```bash\n# 查看 Pod 详细信息\nkubectl describe pod <pod-name>\n\n# 查看集群资源状态\nkubectl top nodes\nkubectl get pv,pvc\n```",
"sources": [
{
"title": "Kubernetes Pod 故障排查指南",
"relevance_score": 0.95
}
],
"processing_time": 1.2
}
}// 🔧 MCP 模式 - 工具调用
POST /api/v1/assistant/query
{
"question": "帮我查看 default 命名空间下的 Pod 状态",
"mode": "mcp",
"session_id": "user123"
}
// 🚀 响应示例
{
"data": {
"answer": "✅ **已成功获取 Pod 状态**\n\n📊 **运行状态统计**:\n- 🟢 Running: 5 个\n- 🟡 Pending: 1 个 \n- 🔴 Failed: 0 个\n\n📝 **详细信息**:\n1. **nginx-deployment-xxx** (Running) - CPU: 0.1/0.5, Memory: 128Mi/512Mi\n2. **redis-master-yyy** (Running) - CPU: 0.2/1.0, Memory: 256Mi/1Gi\n3. **worker-job-zzz** (Pending) - 等待调度...",
"tool_calls": [
{
"tool_name": "k8s_pod_tool",
"execution_time": 0.3,
"status": "success"
}
]
}
}🔮 点击查看智能预测功能演示
// 📈 负载预测请求
POST /api/v1/predict/qps
{
"service_name": "web-service",
"current_qps": 500.0,
"hours": 24,
"instance_cpu": 2.0,
"instance_memory": 4.0
}
// 📊 预测结果
{
"data": {
"predictions": [
{
"hour": 1,
"predicted_qps": 520.5,
"confidence_score": 0.95,
"peak_probability": 0.12
},
{
"hour": 8,
"predicted_qps": 890.2,
"confidence_score": 0.88,
"peak_probability": 0.85
}
],
"recommendations": {
"suggested_instances": 6,
"scale_up_time": "2024-01-01T07:30:00Z",
"cpu_recommendation": 2.5,
"memory_recommendation": 5.0
},
"analysis": {
"max_predicted_qps": 1250.8,
"growth_rate": 1.51,
"volatility": "中等"
}
}
}🕵️ 点击查看故障根因分析演示
// 🔍 根因分析请求
POST /api/v1/rca/analyze
{
"namespace": "production",
"time_window_hours": 1.0,
"severity_threshold": 0.7
}
// 📋 分析报告
{
"data": {
"root_causes": [
{
"cause_type": "resource_exhaustion",
"title": "🔥 CPU 使用率异常飙升",
"confidence_score": 0.92,
"severity": "high",
"affected_resources": [
{"type": "pod", "name": "web-app-xxx", "namespace": "production"}
],
"recommendations": [
{
"action": "scale_up",
"description": "建议将副本数从 3 增加到 6",
"priority": "high",
"estimated_impact": "可解决当前性能瓶颈"
}
],
"supporting_evidence": [
{
"type": "metric",
"description": "CPU 使用率峰值达到 98%",
"timestamp": "2024-01-01T10:15:00Z"
}
]
}
],
"summary": {
"total_issues": 2,
"high_priority": 1,
"analysis_duration": 2.3
}
}
}| 🎯 模块 | 📍 端点 | 📝 功能 |
|---|---|---|
| 🤖 智能助手 | POST /api/v1/assistant/query |
RAG/MCP 双模式问答 |
| 🔮 预测分析 | POST /api/v1/predict/qps |
QPS 负载预测 |
| 🔍 根因分析 | POST /api/v1/rca/analyze |
综合故障诊断 |
| 🛠️ 自动修复 | POST /api/v1/autofix/fix |
K8s 资源自动修复 |
| 💡 健康检查 | GET /api/v1/health |
系统健康状态 |
- 📱 交互式 API 文档: http://localhost:8080/docs
- 📋 OpenAPI 规范: http://localhost:8080/openapi.json
- 🔧 MCP 工具文档: app/mcp/README.md
- OS: Linux/macOS/Windows
- RAM: 8GB+ (推荐 16GB+)
- CPU: 4 核心+
- 存储: 20GB+ 可用空间
- Python: 3.11+
- gitleaks: 8.25.0+(提交前密钥扫描;运行
bash scripts/setup-git-hooks.sh启用钩子,版本过低或无法解析时脚本与 pre-commit 钩子都会失败) - Docker: 20.10+
- Docker Compose: 2.0+
- Redis: 7.0+
- Kubernetes: 1.20+ (可选)
# docker-compose.production.yml 资源限制
services:
aiops-platform:
deploy:
resources:
limits:
memory: 8G
cpus: '4.0'
reservations:
memory: 4G
cpus: '2.0'
environment:
- ENV=production
- LOG_LEVEL=INFO
- REDIS_MAX_CONNECTIONS=50# Prometheus 配置
scrape_configs:
- job_name: 'aiops-platform'
static_configs:
- targets: ['aiops-platform:8080']
scrape_interval: 15s
metrics_path: '/metrics'# 生产环境安全设置
REDIS_PASSWORD=your-secure-password
API_RATE_LIMIT=1000
CORS_ORIGINS=https://your-domain.com
JWT_SECRET_KEY=your-jwt-secret- 🎨 Web UI 管理面板
- 📊 Grafana 仪表板集成
- 🔔 多渠道告警通知
- 🌐 多云平台支持
- 🤝 团队协作功能
- 📈 成本分析与优化
- 🛡️ 安全扫描集成
- 🔄 GitOps 工作流
我们欢迎任何形式的贡献!🎉
# 1️⃣ Fork 项目
git clone https://github.com/your-username/AI-CloudOps.git
# 2️⃣ 创建特性分支
git checkout -b feature/amazing-feature
# 3️⃣ 提交更改
git commit -m 'Add amazing feature'
# 4️⃣ 推送分支
git push origin feature/amazing-feature
# 5️⃣ 创建 Pull Request- 🐛 Bug 修复
- ✨ 新功能开发
- 📝 文档改进
- 🔧 性能优化
- 🧪 测试用例
- 🏠 项目主页: https://github.com/GoSimplicity/AI-CloudOps
- 📧 邮件支持: bamboocloudops@gmail.com
- 🐛 问题报告: https://github.com/GoSimplicity/AI-CloudOps/issues
- 💡 功能建议: https://github.com/GoSimplicity/AI-CloudOps/discussions
本项目基于 MIT 许可证 开源。
Made with ❤️ by the AI-CloudOps Team
让 AI 为云原生运维赋能 🚀
最后更新: 2025-09-13 | 版本: v2.0.0
运行 python -m pytest -q,默认执行离线单元和隔离 ASGI 集成,不读取本机 .env,不连接真实基础设施或模型。真实服务、模型计费验收及历史脚本的明确入口见 测试说明。
/assistant/query 的 mode=2 与 /assistant/stream 仅提供受审查的计算、统计、换算、UTC 时间、资源指标/配额和 HPA 只读操作。读写混合工具的模型 Schema 被收窄,每次执行前再次严格验证操作、字段、类型和范围;禁止本地文件、任意 kubeconfig、通用资源/Secret YAML、容器环境变量详情及未知工具。模型文本、内部主体或额外参数不能提升此策略。资源变更应走单独授权的 AutoFix 工作流及其硬限制。
独立 MCP /tools/execute 是持有内部服务密钥的高权限入口,保持现有工具能力,不能公开给普通助手用户;发布 Compose 不公开 MCP 端口。集群查询只使用部署时配置的服务身份及 Kubernetes RBAC,不提供用户自选凭据。
内部高权限 apply_yaml 已使用真实 server-side apply,受1MiB/20文档限制;仅支持命名空间资源,先全部服务端dry-run再写入,不force覆盖其他字段管理器。部分成功和未知结果不会报告为全部成功,详见 生产契约。