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, 测试用例, 版权保护, 特征库, 自动化攻击, 请求拦截, 运维, 逆向工具