shreyash4590/OpsBot

GitHub: shreyash4590/OpsBot

基于 LangGraph 和 Gemini AI 构建的 DevOps 智能体,能在告警触发后 2 秒内自动完成告警分类、上下文收集、根因分析并推送修复方案。

Stars: 0 | Forks: 0

# OpsBot — AI 事件响应 Agent 基于 **LangGraph** · **Gemini AI** · **MCP Tools** · **FastAPI** · **Next.js** · **PostgreSQL** · **Docker** 构建 ## 功能简介 当告警触发时(CPU 飙升、部署失败、服务宕机),OpsBot 会: 1. 使用 Gemini AI **分类** 告警严重程度 2. **收集上下文** — 通过 5 个 MCP 工具查询日志、部署历史和服务健康状态 3. **生成** 根因分析和逐步修复方案 4. 通过 Slack **发送通知**,并将所有信息保存至 PostgreSQL 全部过程在 **2 秒内** 完成。 ## 所需 API Key | Key | 获取地址 | 是否免费? | |-----|-------------|-------| | `GEMINI_API_KEY` | https://aistudio.google.com/app/apikey | ✅ 是 | | `SLACK_WEBHOOK_URL` | https://api.slack.com/apps → Incoming Webhooks | ✅ 是 | | `GITHUB_TOKEN` | https://github.com/settings/tokens | ✅ 是 | | `JIRA_API_TOKEN` | https://id.atlassian.com/manage-profile/security/api-tokens | ✅ 免费版 | **运行最低要求:** 仅需 `GEMINI_API_KEY`。Slack/GitHub/Jira 为可选项。 ## 快速开始 ### 1. 克隆并配置 ``` git clone https://github.com/your-username/opsbot.git cd opsbot cp .env.example .env # 编辑 .env — 至少添加你的 GEMINI_API_KEY ``` ### 2. 运行所有服务 ``` docker compose up --build ``` 这样就可以了。将启动三个容器: - **PostgreSQL** 运行于端口 5432 (schema + 种子数据自动加载) - **Backend API** 运行于 http://localhost:8000 - **Frontend** 运行于 http://localhost:3000 ### 3. 打开应用 访问 http://localhost:3000,注册账号即可进入。 ### 4. 模拟 500 条告警 (可选,用于演示) ``` # 在一个单独的终端中(backend 必须正在运行) pip install requests python scripts/simulate_alerts.py ``` ## 架构 ``` Browser (Next.js) ↓ HTTPS FastAPI Backend ↓ LangGraph Agent ├── Node 1: classify_alert ← Gemini AI ├── Node 2: gather_context ← 5 MCP Tools │ ├── query_logs ← PostgreSQL │ ├── get_deployments ← PostgreSQL / GitHub API │ ├── check_service_health ← HTTP ping / PostgreSQL │ ├── post_slack ← Slack Webhook │ └── save_incident ← PostgreSQL ├── Node 3: generate_recommendation ← Gemini AI └── Node 4: notify ← Slack + DB ↓ PostgreSQL (alerts, incidents, logs, deployments) ``` ## 项目结构 ``` opsbot/ ├── docker-compose.yml # One-command setup ├── .env.example # API keys template │ ├── app/ # FastAPI backend │ ├── main.py # Entry point │ ├── config.py # Settings │ ├── agent/ │ │ ├── graph.py # LangGraph DAG │ │ ├── state.py # State schema │ │ └── prompts.py # LLM prompts │ ├── tools/ # 5 MCP tools │ │ ├── query_logs.py │ │ ├── get_deployments.py │ │ ├── check_health.py │ │ ├── post_slack.py │ │ └── save_incident.py │ ├── db/ │ │ ├── session.py # DB connection │ │ └── crud.py # Queries │ └── api/ │ ├── routes.py # All endpoints │ └── auth_utils.py # JWT auth │ ├── frontend/ # Next.js 14 frontend │ └── src/ │ ├── pages/ # login, dashboard, alerts, incidents │ ├── components/ # Reusable UI │ ├── hooks/ # useAuth │ └── lib/ # API client │ ├── docker/ │ └── init.sql # DB schema + seed data │ └── scripts/ └── simulate_alerts.py # Generate 500 test alerts ``` ## API 端点 | 方法 | Endpoint | 描述 | |--------|----------|-------------| | POST | `/api/auth/signup` | 注册用户 | | POST | `/api/auth/login` | 登录,获取 JWT | | GET | `/api/dashboard/stats` | 告警数量及指标 | | GET | `/api/alerts` | 分页告警列表 | | POST | `/api/alerts` | 创建告警 (触发 agent) | | GET | `/api/incidents` | 分页事件列表 | | POST | `/api/webhook/alert` | 供外部工具调用的公开 webhook | | GET | `/health` | 后端健康检查 | ## MCP 工具 | 工具 | 功能描述 | |------|-------------| | `query_logs` | 从 PostgreSQL 中获取某服务最近的日志条目 | | `get_deployments` | 检索某服务最近 N 次的部署记录 | | `check_service_health` | 对健康端点执行 ping 操作或读取数据库状态 | | `post_slack` | 格式化并将事件摘要发布到 Slack | | `save_incident` | 将 agent 结果持久化到 PostgreSQL | ## 技术栈 | 层级 | 技术 | |-------|-----------| | Agent 编排 | LangGraph 0.1.x | | LLM | Google Gemini 1.5 Flash (免费) | | 后端 | FastAPI + Python 3.11 | | 数据库 | PostgreSQL 15 | | 认证 | JWT (python-jose) | | 前端 | Next.js 14 + TypeScript + Tailwind CSS | | 容器化 | Docker + Docker Compose | | 集成 | Slack Webhooks, GitHub API, Jira REST |
标签:AI智能体, AV绕过, FastAPI, LangGraph, 测试用例, 版权保护, 特征库, 自动化攻击, 请求拦截, 运维, 逆向工具