kamlesh90256/Incident-Response-System-for-Devops
GitHub: kamlesh90256/Incident-Response-System-for-Devops
一个基于 FastAPI 和 React 构建的生产级 DevOps 监控与事件响应平台,集成实时指标采集、告警管理和事件追踪功能。
Stars: 0 | Forks: 0
# DevOps 监控与事件响应系统
一个综合的、生产就绪的监控、告警和事件管理平台,使用 FastAPI、React 和 PostgreSQL 构建。
## 功能特性
- **实时指标采集**:CPU、内存、磁盘、网络监控
- **健康检查**:带有状态跟踪的服务健康监控
- **告警管理**:按严重程度创建、管理和跟踪告警
- **事件管理**:跟踪、分配和解决事件
- **实时仪表盘**:基于 React 的实时监控仪表盘
- **REST API**:支持异步的全功能 REST API
- **Docker 支持**:完整的 Docker 和 Docker Compose 设置
- **数据库**:带有完善模式的 PostgreSQL
- **监控代理**:用于指标采集的独立 Python 代理
## 架构
```
DevOps Monitoring System/
├── backend/ # FastAPI backend application
│ ├── app/
│ │ ├── api/ # API route handlers
│ │ ├── models/ # SQLAlchemy models
│ │ ├── schemas/ # Pydantic schemas
│ │ ├── services/ # Business logic
│ │ └── utils/ # Utility functions
│ ├── main.py # FastAPI app entry point
│ ├── requirements.txt # Python dependencies
│ └── Dockerfile # Backend Docker image
├── frontend/ # React frontend application
│ ├── src/
│ │ ├── components/ # React components
│ │ ├── pages/ # Page components
│ │ ├── services/ # API client
│ │ └── styles/ # CSS styles
│ ├── package.json # Node dependencies
│ ├── vite.config.js # Vite configuration
│ └── Dockerfile # Frontend Docker image
├── monitoring-agent/ # Standalone monitoring agent
│ ├── agent.py # Agent implementation
│ └── requirements.txt # Python dependencies
├── infrastructure/ # Infrastructure and setup
│ ├── schema.sql # Database schema
│ └── setup.sh # Setup script
└── docker-compose.yml # Docker Compose orchestration
```
## 快速开始
### 前置条件
- Docker 和 Docker Compose
- Node.js 18+(用于本地前端开发)
- Python 3.11+(用于本地后端开发)
- PostgreSQL 15+(如果不使用 Docker 运行)
### 使用 Docker Compose(推荐)
1. **克隆并进入项目**:
cd "DevOps Monitoring and Incident Response System"
2. **启动所有服务**:
docker-compose up -d
3. **等待服务初始化**(大约 30 秒)
4. **访问应用**:
- 前端:http://localhost:3000
- 后端 API:http://localhost:8000
- API 文档:http://localhost:8000/docs
- 数据库:postgres://monitoring_user:secure_password@localhost:5432/monitoring_db
### 本地开发设置
#### 后端设置
1. **进入后端目录**:
cd backend
2. **创建虚拟环境**:
python -m venv venv
source venv/bin/activate # 在 Windows 上:venv\Scripts\activate
3. **安装依赖**:
pip install -r requirements.txt
4. **设置 PostgreSQL**:
# 确保 PostgreSQL 在本地运行
createdb monitoring_db
psql monitoring_db < ../infrastructure/schema.sql
5. **更新 .env 文件**:
DATABASE_URL=postgresql://user:password@localhost:5432/monitoring_db
ENVIRONMENT=development
6. **运行后端**:
uvicorn main:app --reload
#### 前端设置
1. **进入前端目录**:
cd frontend
2. **安装依赖**:
npm install
3. **运行开发服务器**:
npm run dev
4. **访问**:http://localhost:3000
#### 监控代理设置
1. **进入监控代理目录**:
cd monitoring-agent
2. **创建虚拟环境**:
python -m venv venv
source venv/bin/activate
3. **安装依赖**:
pip install -r requirements.txt
4. **运行代理**:
python agent.py
## API 接口
### 监控
- `GET /api/v1/monitoring/metrics` - 获取所有指标
- `POST /api/v1/monitoring/metrics` - 创建指标
- `GET /api/v1/monitoring/health-checks` - 获取健康检查
- `POST /api/v1/monitoring/health-checks` - 创建健康检查
### 告警
- `GET /api/v1/alerts` - 列出告警
- `POST /api/v1/alerts` - 创建告警
- `GET /api/v1/alerts/{id}` - 获取告警详情
- `POST /api/v1/alerts/history` - 创建告警历史
### 事件
- `GET /api/v1/incidents` - 列出事件
- `POST /api/v1/incidents` - 创建事件
- `GET /api/v1/incidents/{id}` - 获取事件详情
- `PUT /api/v1/incidents/{id}` - 更新事件
- `POST /api/v1/incidents/{id}/timeline` - 添加时间线条目
## 数据库模式
### 表
- **metric_data**:系统指标(CPU、内存、磁盘、网络)
- **health_checks**:服务健康状态
- **alerts**:告警定义和配置
- **alert_history**:告警触发历史
- **incidents**:事件记录
- **incident_timeline**:事件活动时间线
## 配置
### 后端环境变量
```
DATABASE_URL=postgresql://user:password@host:port/database
SECRET_KEY=your-secret-key
ENVIRONMENT=development|production
```
### 前端环境变量
```
VITE_API_URL=http://localhost:8000/api/v1
```
## Docker 命令
### 基本命令
```
# 启动所有服务
docker-compose up -d
# 停止所有服务
docker-compose down
# 查看日志
docker-compose logs -f
# 查看特定服务日志
docker-compose logs -f backend
docker-compose logs -f frontend
docker-compose logs -f db
# 重建容器
docker-compose build
# 移除卷 (注意: 删除数据)
docker-compose down -v
```
### 数据库命令
```
# 访问 PostgreSQL 控制台
docker-compose exec db psql -U monitoring_user -d monitoring_db
# 运行 SQL 脚本
docker-compose exec -T db psql -U monitoring_user -d monitoring_db < infrastructure/schema.sql
```
## 监控代理使用
独立的监控代理会收集系统指标,并可以将它们发送到监控 API。
```
cd monitoring-agent
python agent.py
```
采集的指标:
- CPU 使用率
- 内存使用率
- 磁盘使用率
- 网络 I/O 统计信息
- 进程数
## 开发工作流
1. **后端开发**:
- 修改 `backend/app/` 中的代码
- API 通过 `--reload` 参数自动重载
- 在 http://localhost:8000/docs 测试
2. **前端开发**:
- 修改 `frontend/src/` 中的代码
- 通过 Vite 自动重载更改
- 在 http://localhost:3000 测试
3. **数据库更改**:
- 修改 `infrastructure/schema.sql` 中的模式
- 应用更改并重启服务
## 测试
### 测试 API 接口
```
# 健康检查
curl http://localhost:8000/health
# 获取指标
curl http://localhost:8000/api/v1/monitoring/metrics
# 创建告警
curl -X POST http://localhost:8000/api/v1/alerts \
-H "Content-Type: application/json" \
-d '{
"name": "High CPU",
"condition": "cpu > 80",
"threshold": 80,
"severity": "critical"
}'
```
## 故障排除
### 端口已被占用
```
# 查找并杀死占用端口 8000 的进程 (后端)
# Windows
netstat -ano | findstr :8000
taskkill /PID /F
# Linux/Mac
lsof -i :8000
kill -9
```
### 数据库连接问题
```
# 检查 PostgreSQL 是否正在运行
docker-compose exec db pg_isready
# 重置数据库
docker-compose down -v
docker-compose up -d
```
### 前端无法加载
- 清除浏览器缓存
- 检查前端日志:`docker-compose logs -f frontend`
- 验证后端是否正在运行:`curl http://localhost:8000/health`
## 生产环境部署
1. **更新环境变量**,在 `.env` 和 `docker-compose.yml` 中
2. **使用生产级的 PostgreSQL** 实例
3. **启用 HTTPS** 并配置适当的证书
4. **为 API 设置负载均衡**
5. **为监控系统本身配置监控**
6. **为数据库设置备份**
7. **使用密钥管理**处理敏感数据
8. **更新 CORS 设置**以适配前端域名
### 在 GitHub 上部署整个项目
代码仓库包含一个单一的 GitHub Actions 工作流,它将前端部署到 GitHub Pages,并将后端镜像发布到 GitHub Container Registry。
1. 为代码仓库启用 GitHub Pages,并选择 GitHub Actions 作为来源。
2. 推送到 `main` 或 `master`,或者手动运行 `Deploy Project on GitHub` 工作流。
注意:
- 前端托管在 GitHub Pages 上。
- 后端作为容器镜像发布到 GHCR,因此可以部署到任何能够运行 Docker 的地方。
- GitHub 不直接托管 FastAPI 进程;它只存储和发布镜像。
- 前端已预先配置为调用 `https://incident-response-api.onrender.com/api/v1`。
### 在 GitHub Pages 上部署
代码仓库包含一个 GitHub Actions 工作流,用于构建 React 前端并将其发布到 GitHub Pages。
1. 为代码仓库启用 GitHub Pages,并选择 GitHub Actions 作为来源。
2. 将名为 `VITE_API_URL` 的仓库变量设置为后端 API URL,例如 `https://api.example.com/api/v1`。
3. 可选择将名为 `PAGES_CUSTOM_DOMAIN` 的仓库变量设置为您的自定义域名,例如 `dashboard.example.com`。
4. 如果您使用自定义域名,请在您的域名提供商处添加匹配的 DNS 记录,并在 GitHub Pages 设置中配置自定义域名。
5. 推送到 `main` 或 `master`,或者手动运行 `Deploy Frontend to GitHub Pages` 工作流。
注意:
- GitHub Pages 仅托管前端。
- FastAPI 后端必须单独部署并通过 HTTPS 暴露。
- 前端构建会自动使用代码仓库名称作为 Pages 基础路径。
- 当设置了 `PAGES_CUSTOM_DOMAIN` 时,工作流会在发布的构件中写入一个 `CNAME` 文件。
### 在 GitHub Container Registry 上部署后端
代码仓库还包含一个 GitHub Actions 工作流,用于构建 FastAPI 后端 Docker 镜像并将其发布到 GitHub Container Registry。
1. 推送到 `main`、`master` 或 `v*` 标签以发布新镜像。
2. 从 `ghcr.io///backend` 拉取镜像。
3. 在您首选的主机、反向代理或编排器后面运行容器,并在该运行时中设置 `DATABASE_URL` 和 `ENVIRONMENT`。
注意:
- 工作流在构建镜像之前会运行后端测试套件。
- 如果您的组织限制包发布,则必须为代码仓库启用 GitHub Packages 权限。
- 这只会发布镜像;它本身不提供数据库托管或公共运行时。
### 在 AWS ECS 上部署后端
代码仓库还包含一个 GitHub Actions 工作流,用于测试后端、构建 Docker 镜像、将其推送到 Amazon ECR 并将其部署到 ECS Fargate 服务。
1. 为 GitHub Actions 创建一个 AWS IAM 角色并将其 ARN 保存为代码仓库密钥 `AWS_ROLE_TO_ASSUME`。
2. 为 `AWS_REGION`、`AWS_ECR_REPOSITORY`、`AWS_ECS_CLUSTER` 和 `AWS_ECS_SERVICE` 设置代码仓库变量。
3. 创建 ECS 任务定义,并更新 [infrastructure/ecs-task-definition.json](infrastructure/ecs-task-definition.json) 中的占位符 IAM 角色。
4. 将 `DATABASE_URL` 和 `SECRET_KEY` 存储在 AWS Secrets Manager 或 SSM Parameter Store 中,路径需与任务定义中引用的路径一致。
5. 推送到 `main` 或 `master`,或者手动运行 `Deploy Backend to AWS ECS` 工作流。
注意:
- 后端现在支持 `DATABASE_URL`,包括标准化为异步驱动程序的 PostgreSQL URL。
- 工作流需要现有的 ECS 集群、服务和 ECR 仓库。
- 更新 ECS 任务定义的日志组和 IAM 角色以匹配您的 AWS 账户。
标签:AV绕过, CPU监控, Docker, Docker Compose, Dockerfile, FastAPI, IT运维, MITM代理, Mr. Robot, PostgreSQL, Pydantic, Python, React, REST API, Socks5代理, SQLAlchemy, SRE, Syscalls, Vite, 事件响应系统, 偏差过滤, 全栈应用, 内存监控, 后端开发, 告警管理, 多引擎聚合, 安全防御评估, 实时仪表盘, 工单系统, 异步支持, 微服务架构, 故障排查, 数据包嗅探, 数据库设计, 无后门, 无线安全, 服务健康检查, 流量嗅探, 测试用例, 版权保护, 生产就绪, 监控代理, 监控系统, 磁盘监控, 系统性能监控, 网络研究, 请求拦截, 运维平台, 逆向工具