生产环境问题捕获和同步 - 使用指南

🎯 目标

真实生产环境自动收集问题,在开发环境修复,确保修复方案经过测试后再部署到生产。


🏗️ 系统架构

生产环境 (8000) ──┐
                  │
                  ├─> 问题收集 ─> 生成任务 ─> 人工审批
                  │
                  └─> 同步到开发 ─────────────────────┐
                                                      │
开发环境 (8001) <────────────────────────────────────┘
                  │
                  └─> 复现问题 ─> 修复代码 ─> 测试 ─> 部署到生产

✅ 当前实现

1. 生产问题收集 ✅

已创建: src/feedback/production_collector.py

收集的问题类型:

  • 🐌 慢响应(>5秒)
  • ❌ 错误和异常
  • 🔄 专家切换(用户不满意)
  • 🔁 用户重试(答案质量差)
  • ⚠️ 会话中断(用户放弃)

数据来源:

  • TITANS 记忆系统(对话记录)
  • 性能监控系统(响应时间)
  • 专家路由器(切换记录)
  • 错误日志(异常记录)

2. 定时监控 ✅

已创建: scripts/production_monitor.py

运行模式:

  • 单次运行: 立即分析最近24小时
  • 守护进程: 每小时自动监控
  • 测试模式: 使用模拟数据测试

3. 环境同步 ✅

已创建: scripts/sync_prod_to_dev.py

同步功能:

  • 从生产导出任务
  • 自动数据脱敏
  • 导入到开发环境
  • 支持持续同步

🚀 使用方法

方法1: 手动监控生产环境

# 分析最近24小时的生产数据
python scripts/production_monitor.py --hours 24

# 分析最近1小时(快速检查)
python scripts/production_monitor.py --hours 1

# 测试模式(使用模拟数据)
python scripts/production_monitor.py --test

结果:

  • 生成生产环境报告: reports/production/prod_YYYYMMDD_HHMMSS_xxxxx.json
  • 自动创建修改任务(已去重)
  • 任务进入待审批状态

方法2: 定时自动监控

# 每小时自动监控生产环境
python scripts/production_monitor.py --daemon --interval 3600

# 每30分钟监控
python scripts/production_monitor.py --daemon --interval 1800

建议在生产环境运行,作为后台服务:

# docker-compose.prod.yml
services:
  mbe-monitor:
    image: mises-behavior-engine-mbe-api
    command: python scripts/production_monitor.py --daemon --interval 3600
    environment:
      - ENVIRONMENT=production
      - MONITOR_THRESHOLD_SLOW_RESPONSE=5.0
      - MONITOR_THRESHOLD_ERROR_RATE=0.05
    volumes:
      - ./data:/app/data
      - ./reports:/app/reports
      - ./logs:/app/logs
    depends_on:
      - mbe-api
      - postgres

方法3: 同步到开发环境

# 一次性同步待审批任务
python scripts/sync_prod_to_dev.py

# 持续同步(每小时)
python scripts/sync_prod_to_dev.py --continuous --interval 3600

# 不脱敏(仅限内部开发)
python scripts/sync_prod_to_dev.py --no-anonymize

# 自定义 URL
python scripts/sync_prod_to_dev.py \
  --prod-url http://mbe.hi-maker.com \
  --dev-url http://localhost:8001

结果:

  • 生产任务 → 开发环境
  • 自动去重
  • 数据脱敏保护隐私

📊 工作流程示例

场景: 生产环境出现慢响应

第1步: 自动检测(每小时)

# 监控脚本运行
🔍 开始监控生产环境 (最近 1 小时)
📊 收集到 1 个生产问题
🐌 检测到慢响应问题: 15 个请求
📄 报告已保存: reports/production/prod_20260128_143000_abc123.json
📋 生成 1 个修改任务
📬 通知: 生产环境检测到 1 个问题,已生成 1 个修改任务

第2步: 查看任务(Web UI)

访问: http://localhost:8000/admin/tasks
或: https://mbe.hi-maker.com/admin/tasks

任务列表:
- [HIGH] slow_response
  描述: 生产环境响应时间过长 (平均 8.5秒)
  影响: 15个请求,8个用户
  指标: 平均: 8.5s, P95: 12.3s

第3步: 同步到开发(可选)

python scripts/sync_prod_to_dev.py

📤 从生产环境导出任务
✅ 导出 1 个任务
🔒 数据脱敏中...
📥 导入 1 个任务到开发环境
✅ 导入完成: 成功 1, 跳过 0, 错误 0

第4步: 在开发环境修复

访问: http://localhost:8001/admin/tasks

1. 查看同步过来的任务
2. 在开发环境复现问题
3. 批准任务
4. 执行 AI 修改
5. 测试修复效果

第5步: 部署到生产

# 修复验证通过后
git commit -m "fix: 优化响应速度,解决生产慢响应问题"
git push

# 部署
docker-compose -f docker-compose.prod.yml up -d --build

🔧 配置说明

环境变量

# .env (生产环境)
ENVIRONMENT=production
ENABLE_PRODUCTION_MONITOR=true
MONITOR_INTERVAL=3600
MONITOR_THRESHOLD_SLOW_RESPONSE=5.0
MONITOR_THRESHOLD_ERROR_RATE=0.05
MONITOR_THRESHOLD_SWITCH_RATE=0.15

# .env (开发环境)
ENVIRONMENT=development
ACCEPT_PRODUCTION_TASKS=true

监控阈值

指标 阈值 说明
慢响应 >5秒 响应时间超过此值触发告警
错误率 >5% 错误请求比例超过此值
切换率 >15% 专家切换比例超过此值

🎯 优势

vs 测试样本数据

对比项 测试样本 生产数据
真实性 ⚠️ 模拟 ✅ 真实用户
数据量
问题类型 预设 实际发生
优先级 估计 基于影响面
修复价值

生产监控的价值

  1. 真实问题: 基于实际用户使用
  2. 准确优先级: 基于受影响用户数量
  3. 完整上下文: 包含真实的使用场景
  4. 趋势分析: 可以看到问题的时间分布
  5. A/B测试: 可以对比修复前后效果

📋 当前状态

✅ 已完成

  1. 基础监控能力 - 可以从生产收集数据
  2. 任务生成 - 自动生成修改任务
  3. 去重机制 - 避免重复任务
  4. 人工审批 - Web UI 审批流程

🚧 需要完善

  1. 数据源集成 - 连接实际的TITANS记忆和性能系统
  2. 错误追踪 - 集成错误日志系统
  3. 通知系统 - 发现问题时通知团队
  4. 监控Dashboard - 可视化生产健康状况

🚀 快速开始

立即测试(使用模拟数据)

# 1. 测试生产监控
python scripts/production_monitor.py --test

# 2. 查看生成的任务
# 访问: http://localhost:8000/admin/tasks

# 3. 测试同步到开发
python scripts/sync_prod_to_dev.py

部署到生产(持续监控)

# docker-compose.prod.yml - 添加监控服务
services:
  mbe-monitor:
    image: mises-behavior-engine-mbe-api
    command: python scripts/production_monitor.py --daemon --interval 3600
    environment:
      - ENVIRONMENT=production
    restart: always

💡 最佳实践

  1. 监控频率: 建议每小时监控一次
  2. 数据脱敏: 同步到开发时始终脱敏
  3. 优先级: 根据受影响用户数确定优先级
  4. 测试充分: 在开发环境充分测试后再部署
  5. 持续改进: 根据监控结果持续优化阈值

❓ 常见问题

Q: 会不会产生太多任务?
A: 有去重机制,相同问题只保留一个。可以调整阈值控制敏感度。

Q: 数据脱敏会影响问题分析吗?
A: 不会。保留了所有技术指标和统计数据,只移除用户身份信息。

Q: 开发环境能复现生产问题吗?
A: 大部分可以,少数环境相关问题需要在生产环境调试。

Q: 修复后如何验证效果?
A: 部署后继续监控相同指标,对比修复前后数据。


📞 总结

现在可以:

  1. 捕获生产版问题 - 通过生产监控脚本
  2. 统一到开发版 - 通过同步脚本
  3. 自动化流程 - 定时监控+自动任务生成
  4. 人工把关 - 审批后再执行修改
  5. 安全可控 - 数据脱敏+环境隔离

立即测试:

python scripts/production_monitor.py --test

开始使用:

# 生产环境定时监控
python scripts/production_monitor.py --daemon --interval 3600

# 同步到开发环境
python scripts/sync_prod_to_dev.py

🎉 完整的生产级监控和修复流程已就绪!