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

3.6 KiB
Executable File

14_部署运维_日志监控_备份设计

1. 文档目标

本文档定义系统 B 的部署结构、服务目录、环境变量、日志、监控、备份、告警和清理策略。

2. 推荐部署架构

第一阶段单服务器即可:

Nginx
NestJS API
BullMQ Workers
MySQL
Redis
MinIO
FFmpeg
Geeker-Admin 静态文件
uni-app H5 静态文件

后续可拆分:

API 服务器
Worker 服务器
数据库服务器
对象存储
视频渲染服务器

3. 目录结构建议

/opt/system-b/
  backend/
  admin-web/
  user-web/
  workers/
  logs/
  ffmpeg-temp/
  docker-compose.yml
  .env

4. 环境变量

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 配置目标

反代:

/api → NestJS
/admin → Geeker-Admin
/ → uni-app H5
/ws → WebSocket

静态文件不直接暴露 MinIO 私密 bucket。

6. 进程管理

可选:

  • PM2
  • systemd
  • Docker Compose

服务:

api-server
worker-photo
worker-text
worker-image
worker-video
worker-ffmpeg
worker-qc

7. 日志设计

日志类型:

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. 数据库备份

建议:

每日全量备份
每小时 binlog 增量
备份保留 7-30 天
定期恢复演练

备份目录:

/backups/mysql/YYYY-MM-DD/

11. MinIO 备份

策略:

  • 重要成品每日同步
  • 用户原图按隐私策略备份
  • 临时文件不备份
  • 公开案例单独备份

12. Redis 持久化

Redis 用于队列和缓存:

  • 开启 AOF 或 RDB
  • 定期检查内存
  • 设置合适 maxmemory 策略

13. 临时文件清理

清理对象:

  • FFmpeg 临时文件
  • 预览临时素材
  • 失败任务中间文件
  • 过期下载包

策略:

每晚 cleanup_queue 执行
临时文件保留 1-3 天
失败任务文件保留 7 天

14. 项目素材保留策略

建议:

类型 保留
用户上传原图 按用户协议,默认 90-180 天或项目删除后清理
预览图 30 天
正式图 180 天或长期,按套餐
成品视频 180 天或长期,按套餐
公开案例 授权有效期间保留

15. 发布流程

代码提交
→ 自动测试
→ 构建后端
→ 构建后台
→ 构建用户端
→ 数据库迁移
→ 灰度发布
→ 检查日志
→ 正式发布

16. 回滚方案

必须保留:

  • 上一个后端版本
  • 上一个前端静态包
  • 数据库迁移回滚脚本
  • 配置备份

17. 安全要求

  • HTTPS
  • 后台登录二次验证,后续可加
  • 密钥不提交代码仓库
  • 上传文件类型限制
  • API 限流
  • 防刷验证码
  • 后台操作日志