LLM驱动的基础设施编排系统
一种智能基础设施编排系统,利用大型语言模型(LLM)和模型上下文协议(MCP)自主检测、分析和修复本地和云环境中的基础设施故障。
概述
该系统展示了LLM推理在基础设施管理中的实际应用,实现了 100%成功率 在自动故障检测和补救方面。它支持本地Docker环境和具有统一接口的Google Cloud Platform(GCP)。
主要成就
- ✅ 100%测试成功率 (通过4/4个测试场景)
- 🎯 自主故障检测 具有实时监控和应用程序级指标
- 🤖 LLM动力分析 使用Google的Gemini API进行智能故障分析
- 🔧 20+MCP工具 用于跨Docker、PostgreSQL、Redis、Nginx和GCP的基础设施操作
- ☁️ 多环境支持 本地Docker和GCP云资源
- 📊 综合评估 具有详细的指标和报告
测试结果
| 环境 | 测试场景 | 状态 | 持续时间 |
|---|---|---|---|
| GCP | Redis内存压力 | ✅ 通过 | 316.43秒 |
| GCP | 计算发动机内存压力 | ✅ 通过 | 277.52s |
| 本地 | Redis内存压力 | ✅ 通过 | 232.13s |
| 本地 | PostgreSQL连接过载 | ✅ 通过 | 217.22秒 |
特性
- 自主故障检测:通过应用程序级健康检查(CPU、内存、连接、磁盘)实时监控基础设施资源
- LLM动力分析:使用Gemini API进行上下文软件故障分析,以确定根本原因并生成修复计划
- 自动修复:通过适当的排序、状态验证和重试机制自动执行工具
- 多环境支持:本地Docker容器和GCP资源(计算引擎、云SQL、内存存储)的统一接口
- MCP工具集成:20多种MCP工具,用于异步执行和错误处理的基础设施操作
- 评估和报告:全面跟踪前后指标、LLM推理和工具执行结果
- Web仪表板:用于资源可视化、实时状态更新和交互式修复触发的现代React UI
建筑
该系统由React前端、FastAPI后端、LLM客户端(Gemini API)、MCP工具注册表和监控系统组成。编排器协调故障检测、LLM交互、修复计划执行和状态验证。
关键部件:
- 前端:React.js仪表板,具有实时状态轮询和交互式修复触发功能
- 后端API:具有异步操作、并行资源监控和优化轮询的FastAPI服务器
- 编排器:故障检测、LLM交互管理、重试逻辑(最多重试2次)和工具执行协调的核心逻辑
- LLM客户端:Google Gemini API集成(
gemini-2.5-pro或gemini-2.5-flash)具有结构化提示和响应解析功能 - MCP工具:20多种Docker、PostgreSQL、Redis、Nginx和GCP服务工具
- 监控:使用应用程序级指标和日志聚合进行实时资源监控
设置
先决条件
- Python 3.11+
- Docker和Docker Compose
- Google Gemini API密钥
- (可选)具有云资源服务帐户密钥的GCP帐户
安装
- 克隆仓库
- 安装Python依赖项:
pip install -r requirements.txt- 设置环境变量:
cp .env.example .env
# Edit .env and add:
# GEMINI_API_KEY=your_gemini_api_key
# (Optional) GCP_SERVICE_ACCOUNT_KEY_PATH=path/to/service-account-key.json- 启动示例应用程序基础架构:
docker-compose up -d- 运行后端API:
# Make sure you're in the project root
source venv/bin/activate # Activate virtual environment
python -m uvicorn backend.main:app --reload --host 0.0.0.0 --port 8000- 运行前端 (可选):
cd frontend
npm install
npm start接入点:
- API
http://localhost:8000 - API文件:
http://localhost:8000/docs - 前端:
http://localhost:3000(如果正在运行) - 示例应用程序:
http://localhost:8001
GCP设置(可选)
关于GCP资源支持:
- 创建GCP服务帐户 具有以下角色:
- 计算引擎管理员 - 云SQL管理员 - 编辑。 - 监控查看器
- 下载服务帐户密钥 并将其另存为
gcp-service-account-key.json
- 在中设置路径
.env:
GCP_SERVICE_ACCOUNT_KEY_PATH=./gcp-service-account-key.json- 确保您的GCP资源可用 (VPC配置、防火墙规则等)
用法
API终点
资源:
GET /api/resources-获取所有资源及其状态GET /api/resources/status-获取轻量级状态更新GET /api/logs-通过筛选获取错误日志
修复:
POST /api/fixes/trigger-触发LLM修复工作流GET /api/fixes/{id}-获取修复详细信息GET /api/fixes-列出所有修复程序
LLM&MCP:
GET /api/llm/interactions-获取LLM交互历史记录GET /api/mcp/tools-获取可用的MCP工具
GCP故障(用于测试):
POST /api/gcp/failures/redis/{id}/memory-pressure-引入Redis内存压力POST /api/gcp/failures/compute/{name}/cpu-stress-引入CPU压力POST /api/gcp/failures/compute/{name}/memory-pressure-引入记忆压力
示例应用程序
示例应用程序是一个使用PostgreSQL和Redis的电子商务API。它包括模拟故障的端点:
POST /load/database?connections=10-生成数据库连接负载POST /load/database/blocking-创建持久阻塞查询POST /load/redis?size_mb=100-填充Redis内存POST /load/cpu?duration=60-生成CPU负载
触发修复
- 引入故障 使用示例应用程序端点或GCP故障端点
- 监控资源状态 通过仪表板或
GET /api/resources - 触发修复 通过
POST /api/fixes/trigger - 系统将自动:
- 收集资源状态和错误日志 - 使用LLM(Gemini API)分析故障 - 使用工具选择生成修复计划 - 按照正确的顺序执行MCP工具 - 验证修复有效性 - 使用前后指标存储评估数据
示例:修复Redis内存压力
# 1. Fill Redis memory
curl -X POST "http://localhost:8001/load/redis?size_mb=200"
# 2. Check resource status (should show DEGRADED)
curl "http://localhost:8000/api/resources"
# 3. Trigger LLM fix
curl -X POST "http://localhost:8000/api/fixes/trigger"
# 4. Monitor fix execution
curl "http://localhost:8000/api/fixes"MCP工具
该系统包括 20+MCP工具 分为本地和GCP基础设施类别:
本地基础设施工具(12个工具)
Docker:
docker_restart-重新启动容器docker_scale-扩展服务docker_logs-获取容器日志docker_stats-获取容器统计信息
PostgreSQL:
postgres_restart-重新启动PostgreSQLpostgres_scale_connections-修改连接设置postgres_vacuum-运行真空postgres_kill_long_queries-终止长时间运行的查询
Redis:
redis_flush-刷新缓存redis_restart-重新启动Redisredis_memory_purge-清除内存redis_info-获取Redis信息
Nginx:
nginx_restart-重新启动Nginxnginx_reload-重新加载配置nginx_scale_connections-扩大员工联系nginx_clear_connections-清除活动连接nginx_info-获取Nginx状态
GCP基础设施工具(8个工具)
计算引擎:
gcp_compute_restart_instance-重新启动VM实例gcp_compute_start_instance-启动已停止的实例gcp_compute_stop_instance-停止正在运行的实例
云SQL:
gcp_sql_restart_instance-重新启动云SQL实例gcp_sql_scale_tier-扩展实例层gcp_sql_kill_long_queries-终止长时间运行的查询
内存存储Redis:
gcp_redis_flush-刷新Redis缓存gcp_redis_restart-重新启动Redis实例gcp_redis_scale_memory-缩放Redis内存大小
项目结构
project/
├── backend/ # FastAPI backend
│ ├── api/ # API routes
│ │ └── routes/ # Route handlers (resources, fixes, gcp_failures)
│ ├── core/ # Core orchestration logic
│ ├── mcp/ # MCP tools (Docker, PostgreSQL, Redis, Nginx, GCP)
│ ├── monitoring/ # Resource and log monitoring
│ ├── gcp/ # GCP integration (auth, monitoring, tools)
│ ├── evaluation/ # Evaluation data storage (SQLite)
│ └── utils/ # Utility functions
├── frontend/ # React frontend
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── services/ # API services
│ │ └── styles/ # CSS styles
│ └── public/ # Static assets
├── sample-app/ # Sample E-commerce API for testing
├── nginx/ # Nginx configuration
├── test/ # Test scripts and evaluation reports
└── docker-compose.yml # Local infrastructure setup发展
运行测试
# Run evaluation tests
python test_evaluation.py
# Run GCP-specific tests
bash test_gcp_llm_fix.sh
# Run local tests
bash test_llm_fix.sh代码质量
black backend/
ruff check backend/关键技术
- 后端:FastAPI(Python 3.11+)、SQLite、AsyncIO
- 前端:React.js 18+,Axios
- LLM:谷歌Gemini API(Gemini-2.5Pro、Gemini-2.5 flash)
- 基础设施:Docker、PostgreSQL、Redis、Nginx
- 云:谷歌云平台(计算引擎、云SQL、内存存储)
- 协议:用于工具集成的模型上下文协议(MCP)
评估结果
系统实现 100%成功率 跨越4个综合测试场景:
- 平均修复执行时间:约4.3分钟
- 故障检测时间:\<120秒
- LLM分析时间:\<60秒
- 刀具选择精度: 100%
所有修复程序在第一次尝试时都成功执行,证明了LLM驱动的基础设施管理的有效性。
文档
有关详细信息,请参阅:
- 项目报告.md -包含架构、实施细节和评估结果的综合项目报告
- 测试/评估报告.md -详细的测试评估报告
许可证
麻省理工学院
作者
维奈·辛格
