jaisuriya153/-Real-Time-Cloud-Log-Monitoring-Incident-Response-System
GitHub: jaisuriya153/-Real-Time-Cloud-Log-Monitoring-Incident-Response-System
一套基于 Node.js 与 React 的全栈云日志监控与事件响应系统,通过实时日志流和自动告警帮助团队快速发现和跟踪系统异常。
Stars: 0 | Forks: 0
# 🔍 实时云日志监控与事件响应系统
一个用于实时云日志监控和事件响应管理的简单全栈 Web 应用程序。
## 🎯 功能
- 👤 **用户认证** - 使用 JWT 进行登录/注册
- 📊 **实时日志** - 基于 WebSocket 的实时日志流
- ⚠️ **错误检测** - 自动检测 error 和 critical 日志
- 🚨 **事件管理** - 创建、跟踪和解决事件
- 📈 **仪表盘** - 带有图表和统计数据的可视化分析
- 🔔 **实时警报** - 针对关键事件的即时通知
## 🛠️ 技术栈
### 后端
- **Node.js + Express** - RESTful API 服务器
- **Socket.io** - 实时 WebSocket 通信
- **MongoDB** - 文档数据库
- **JWT** - 认证 token
- **bcryptjs** - 密码哈希
### 前端
- **React.js** - UI 库
- **Socket.io Client** - 实时客户端
- **Axios** - HTTP 客户端
- **Chart.js** - 数据可视化
- **CSS3** - 样式设计
## 📁 项目结构
```
cloud computing/
├── backend/
│ ├── models/
│ │ ├── User.js
│ │ ├── Log.js
│ │ └── Incident.js
│ ├── routes/
│ │ ├── auth.js
│ │ ├── logs.js
│ │ └── incidents.js
│ ├── middleware/
│ │ └── auth.js
│ ├── server.js
│ ├── seed.js
│ ├── package.json
│ └── .env
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ ├── Auth.js
│ │ │ ├── Dashboard.js
│ │ │ ├── Logs.js
│ │ │ └── Incidents.js
│ │ ├── services/
│ │ │ ├── api.js
│ │ │ └── socket.js
│ │ ├── App.js
│ │ ├── index.js
│ │ └── index.css
│ ├── public/
│ │ └── index.html
│ ├── package.json
│ └── .gitignore
└── README.md
```
## 🚀 快速开始
### 前置条件
- Node.js (v14+)
- MongoDB (本地或 Atlas)
- npm 或 yarn
### 安装说明
#### 1. 克隆并设置后端
```
cd "cloud computing/backend"
npm install
```
#### 2. 配置后端
编辑 `.env` 文件:
```
PORT=5000
MONGODB_URI=mongodb://localhost:27017/log-monitoring
JWT_SECRET=your_jwt_secret_key_keep_it_safe_12345
NODE_ENV=development
```
#### 3. 填充示例数据
```
npm run seed
```
**预期输出:**
```
Connected to MongoDB
Test user created: [user_id]
10 sample logs created
Sample incidents created
✅ Database seeded successfully!
Test User: testuser / test@example.com / password123
```
#### 4. 启动后端服务器
```
npm start
```
服务器将在 `http://localhost:5000` 上运行
#### 5. 设置前端
```
cd "../frontend"
npm install
```
#### 6. 启动前端
```
npm start
```
React 应用将在 `http://localhost:3000` 上打开
## 🔐 演示凭证
填充数据后,请使用:
- **Email:** test@example.com
- **Password:** password123
## 📊 模块与功能
### 1. **日志收集**
- 实时收集日志
- 支持多个微服务
- 不同的日志级别:info、warning、error、critical
### 2. **日志存储**
- MongoDB 用于持久化存储
- 索引查询以实现快速检索
- 元数据支持以实现丰富的日志记录
### 3. **错误检测**
- 在出现 error/critical 日志时自动创建事件
- 错误跟踪和关联
- 严重性分类
### 4. **事件与警报**
- 通过 WebSocket 进行实时事件通知
- 状态跟踪:Open → In Progress → Resolved
- 错误计数跟踪
- 时间戳跟踪
### 5. **仪表盘**
- 实时统计数据
- 日志分布图表
- 事件概览
- 带有用户信息的欢迎消息
## 🔌 API 端点
### 认证
- `POST /api/auth/register` - 注册新用户
- `POST /api/auth/login` - 用户登录
### 日志(受保护)
- `GET /api/logs` - 获取所有日志
- `GET /api/logs/level/:level` - 按级别获取日志
- `GET /api/logs/stats/summary` - 获取今日统计数据
### 事件(受保护)
- `GET /api/incidents` - 获取所有事件
- `GET /api/incidents/status/:status` - 按状态筛选
- `POST /api/incidents` - 创建事件
- `PUT /api/incidents/:id` - 更新事件状态
## 🔌 WebSocket 事件
### 客户端 → 服务器
- `join` - 加入用户房间
- `submit-log` - 提交新日志
- `request-logs` - 请求日志数据
### 服务器 → 客户端
- `new-log` - 接收到新日志
- `new-incident` - 创建了新事件
- `logs-data` - 日志数据响应
- `error` - 错误消息
## 📝 示例日志数据
填充脚本将创建:
- 10 条具有不同级别和服务的示例日志
- 3 个具有不同状态的示例事件
- 1 个测试用户
## 🎨 UI 组件
### 页面
1. **登录/注册** - 认证页面
2. **仪表盘** - 统计数据和图表
3. **日志视图** - 带有过滤功能的实时日志流
4. **事件视图** - 带有状态更新的事件管理
### 功能特性
- 深色友好设计
- 响应式布局
- 实时更新
- 状态指示器
- 快速操作按钮
## ⚙️ 配置
### 后端 MongoDB 连接
**本地 MongoDB:**
```
mongodb://localhost:27017/log-monitoring
```
**MongoDB Atlas (云端):**
```
mongodb+srv://username:password@cluster.mongodb.net/log-monitoring
```
请相应地在 `.env` 中更新 MONGODB_URI。
## 🐛 故障排除
### 后端无法启动
- 检查 MongoDB 是否正在运行:`mongod`
- 验证 PORT 5000 未被占用
- 检查 `.env` 文件配置
### 前端无法连接
- 确保后端在端口 5000 上运行
- 检查 server.js 中的 CORS 设置
- 清除浏览器缓存并重新加载
### 数据库连接错误
- 验证 MongoDB 连接字符串
- 检查 MongoDB 服务是否正在运行
- 验证 Atlas 的网络访问权限
### Socket.io 不工作
- 检查浏览器控制台是否有错误
- 验证前端的 socket URL
- 确保后端已配置 CORS
## 📚 开发
### 添加新模型
1. 在 `backend/models/` 中创建文件
2. 定义 schema 并导出模型
3. 在路由中使用 `require()` 引入
### 添加新路由
1. 在 `backend/routes/` 中创建文件
2. 导入模型和中间件
3. 使用 `app.use()` 将其添加到 `server.js` 中
### 添加新组件
1. 在 `frontend/src/components/` 中创建
2. 在 `App.js` 中导入
3. 在导航栏中添加导航按钮
## 🚀 部署(可选)
### 将后端部署到 Heroku
```
cd backend
heroku create your-app-name
git push heroku main
```
### 将前端部署到 Netlify
```
cd frontend
npm run build
# 部署 build/ folder 到 Netlify
```
## 📞 支持
对于问题和疑问:
1. 查看故障排除部分
2. 检查控制台错误消息
3. 确保已安装所有依赖项
4. 确保 MongoDB 正在运行
## 📄 许可证
该项目是开源的,并基于 MIT 许可证提供。
**用 ❤️ 构建,旨在实现简单的云日志监控**
标签:GNU通用公共许可证, MITM代理, Node.js, React, Syscalls, WebSocket, 依赖分析, 运维监控