Files
ai/docs/system_b/14_部署运维_日志监控_备份设计.md
T
2026-06-15 17:45:28 +08:00

259 lines
3.6 KiB
Markdown
Executable File

# 14_部署运维_日志监控_备份设计
## 1. 文档目标
本文档定义系统 B 的部署结构、服务目录、环境变量、日志、监控、备份、告警和清理策略。
## 2. 推荐部署架构
第一阶段单服务器即可:
```text
Nginx
NestJS API
BullMQ Workers
MySQL
Redis
MinIO
FFmpeg
Geeker-Admin 静态文件
uni-app H5 静态文件
```
后续可拆分:
```text
API 服务器
Worker 服务器
数据库服务器
对象存储
视频渲染服务器
```
## 3. 目录结构建议
```text
/opt/system-b/
backend/
admin-web/
user-web/
workers/
logs/
ffmpeg-temp/
docker-compose.yml
.env
```
## 4. 环境变量
```text
NODE_ENV=production
APP_PORT=3000
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_USER=system_b
MYSQL_PASSWORD=xxx
MYSQL_DATABASE=system_b
REDIS_HOST=127.0.0.1
REDIS_PORT=6379
MINIO_ENDPOINT=127.0.0.1
MINIO_PORT=9000
MINIO_ACCESS_KEY=xxx
MINIO_SECRET_KEY=xxx
JWT_SECRET=xxx
OPENAI_API_KEY=xxx
```
Provider 密钥建议使用密钥管理或环境变量,不直接写入数据库明文。
## 5. Nginx 配置目标
反代:
```text
/api → NestJS
/admin → Geeker-Admin
/ → uni-app H5
/ws → WebSocket
```
静态文件不直接暴露 MinIO 私密 bucket。
## 6. 进程管理
可选:
- PM2
- systemd
- Docker Compose
服务:
```text
api-server
worker-photo
worker-text
worker-image
worker-video
worker-ffmpeg
worker-qc
```
## 7. 日志设计
日志类型:
```text
api.log
worker.log
error.log
provider.log
payment.log
ffmpeg.log
audit.log
```
日志要求:
- 按天切割
- 保留 30-90 天
- 敏感信息脱敏
- 重要错误报警
## 8. 监控指标
应用指标:
- API 响应时间
- API 错误率
- 队列积压数
- 任务失败率
- Provider 失败率
- 视频合成耗时
系统指标:
- CPU
- 内存
- 磁盘
- 网络
- MinIO 容量
- MySQL 连接数
- Redis 内存
业务指标:
- 今日订单数
- 今日收入
- 今日 AI 成本
- 项目完成数
- 待审核数
## 9. 告警规则
触发:
- API 5xx 错误率过高
- 队列积压超过阈值
- Provider 连续失败
- 磁盘剩余空间低于 20%
- MinIO 容量不足
- MySQL 备份失败
- 单日 AI 成本超阈值
## 10. 数据库备份
建议:
```text
每日全量备份
每小时 binlog 增量
备份保留 7-30 天
定期恢复演练
```
备份目录:
```text
/backups/mysql/YYYY-MM-DD/
```
## 11. MinIO 备份
策略:
- 重要成品每日同步
- 用户原图按隐私策略备份
- 临时文件不备份
- 公开案例单独备份
## 12. Redis 持久化
Redis 用于队列和缓存:
- 开启 AOF 或 RDB
- 定期检查内存
- 设置合适 maxmemory 策略
## 13. 临时文件清理
清理对象:
- FFmpeg 临时文件
- 预览临时素材
- 失败任务中间文件
- 过期下载包
策略:
```text
每晚 cleanup_queue 执行
临时文件保留 1-3 天
失败任务文件保留 7 天
```
## 14. 项目素材保留策略
建议:
| 类型 | 保留 |
|---|---|
| 用户上传原图 | 按用户协议,默认 90-180 天或项目删除后清理 |
| 预览图 | 30 天 |
| 正式图 | 180 天或长期,按套餐 |
| 成品视频 | 180 天或长期,按套餐 |
| 公开案例 | 授权有效期间保留 |
## 15. 发布流程
```text
代码提交
→ 自动测试
→ 构建后端
→ 构建后台
→ 构建用户端
→ 数据库迁移
→ 灰度发布
→ 检查日志
→ 正式发布
```
## 16. 回滚方案
必须保留:
- 上一个后端版本
- 上一个前端静态包
- 数据库迁移回滚脚本
- 配置备份
## 17. 安全要求
- HTTPS
- 后台登录二次验证,后续可加
- 密钥不提交代码仓库
- 上传文件类型限制
- API 限流
- 防刷验证码
- 后台操作日志