# Flask 提示词大师 - 监控和日志系统使用指南 ## 快速开始 ### 1. 启动监控系统 #### 方法一:使用批处理脚本(推荐) ```bash # 双击运行或在命令行执行 start_monitor.bat ``` #### 方法二:直接使用Python ```bash # 激活虚拟环境 .venv\Scripts\Activate.ps1 # 启动监控管理器 python monitor_manager.py ``` ### 2. 基本操作 启动后,您将看到交互式界面,可以输入以下命令: - `start` - 启动持续监控 - `stop` - 停止监控 - `status` - 检查服务状态 - `logs` - 管理日志文件 - `report` - 生成监控报告 - `dashboard` - 显示完整仪表板 - `quit` - 退出监控系统 ## 详细功能说明 ### 1. 服务状态监控 #### 检查服务状态 ```bash # 使用监控管理器 python monitor_manager.py status # 直接使用监控脚本 python simple_monitor.py check ``` **输出示例:** ``` 🔍 检查服务状态... ✅ 服务运行正常 服务运行正常 ``` #### 启动持续监控 ```bash # 在交互式界面中输入 start # 或直接运行 python simple_monitor.py ``` **功能特点:** - 每30秒自动检查服务健康状态 - 监控响应时间,超过2秒发出警告 - 自动检测错误日志 - 生成监控报告 ### 2. 日志管理 #### 查看日志统计 ```bash # 使用监控管理器 python monitor_manager.py logs stats # 直接使用日志管理器 python log_manager.py stats ``` **输出示例:** ``` 日志统计信息: 总文件数: 2 总大小: 0.00MB 当前日志文件: app.log: 0.00MB simple_service.log: 0.00MB ``` #### 日志轮转 ```bash # 使用监控管理器 python monitor_manager.py logs rotate # 直接使用日志管理器 python log_manager.py rotate ``` **功能说明:** - 自动检测超过10MB的日志文件 - 将大文件移动到归档目录 - 自动压缩归档文件(gzip格式) #### 清理旧日志 ```bash # 使用监控管理器 python monitor_manager.py logs cleanup # 直接使用日志管理器 python log_manager.py cleanup ``` **功能说明:** - 自动删除30天前的归档日志 - 释放磁盘空间 - 保持日志目录整洁 ### 3. 监控报告 #### 生成监控报告 ```bash # 使用监控管理器 python monitor_manager.py report # 直接使用监控脚本 python simple_monitor.py report ``` **报告内容:** - 监控运行时间 - 总请求数和成功率 - 平均响应时间 - 最后检查时间 #### 显示完整仪表板 ```bash python monitor_manager.py dashboard ``` **仪表板包含:** - 服务状态检查 - 日志统计信息 - 监控报告摘要 ## 配置文件说明 ### 1. 监控配置 #### 监控间隔 **文件:** `simple_monitor.py` **参数:** `monitor_interval = 30` **说明:** 健康检查的执行间隔(秒) #### 响应时间阈值 **文件:** `simple_monitor.py` **参数:** 在 `check_health` 方法中设置 **说明:** 超过此时间会发出警告(默认2秒) ### 2. 日志配置 #### 日志轮转阈值 **文件:** `log_manager.py` **参数:** `max_file_size = 10 * 1024 * 1024` **说明:** 日志文件超过10MB自动轮转 #### 日志保留时间 **文件:** `log_manager.py` **参数:** `retention_days = 30` **说明:** 归档日志保留30天 #### 日志压缩 **文件:** `log_manager.py` **参数:** `compress_files = True` **说明:** 启用gzip压缩归档文件 ## 自动化配置 ### 1. Windows 定时任务 #### 创建监控任务 ```batch # 每天上午9点运行监控 schtasks /create /tn "FlaskMonitor" /tr "python D:\wxxcx\aitsc\simple_monitor.py" /sc daily /st 09:00 # 每天凌晨2点维护日志 schtasks /create /tn "FlaskLogMaintenance" /tr "python D:\wxxcx\aitsc\log_manager.py" /sc daily /st 02:00 ``` #### 管理定时任务 ```batch # 查看任务 schtasks /query /tn "FlaskMonitor" # 删除任务 schtasks /delete /tn "FlaskMonitor" /f ``` ### 2. 服务集成 #### 与Windows服务集成 可以将监控脚本集成到现有的Windows服务中: 1. 修改 `simple_windows_service.py` 2. 在服务启动时自动启动监控 3. 在服务停止时自动停止监控 #### 与Docker集成 如果使用Docker部署: 1. 将监控脚本添加到Dockerfile 2. 配置日志卷挂载 3. 使用Docker的健康检查机制 ## 故障排除 ### 1. 常见问题 #### 问题:监控显示服务异常 **可能原因:** - 应用服务未启动 - 端口配置错误 - 网络连接问题 **解决方法:** ```bash # 检查服务是否运行 curl http://localhost:5000/health # 检查端口占用 netstat -an | findstr :5000 # 重启应用服务 python simple_windows_service.py start ``` #### 问题:日志文件编码错误 **可能原因:** - 日志文件包含非UTF-8字符 - 系统编码设置问题 **解决方法:** ```bash # 清理损坏的日志文件 del logs\app.log # 重新启动服务生成新日志 python simple_windows_service.py restart ``` #### 问题:监控脚本无法启动 **可能原因:** - 虚拟环境未激活 - 依赖包未安装 - Python路径问题 **解决方法:** ```bash # 激活虚拟环境 .venv\Scripts\Activate.ps1 # 安装依赖 pip install -r requirements.txt # 检查Python路径 python -c "import sys; print(sys.path)" ``` ### 2. 调试方法 #### 查看监控日志 ```bash # 实时查看监控日志 tail -f logs/monitor.log # 查看最近的监控日志 type logs\monitor.log ``` #### 查看日志管理日志 ```bash # 实时查看日志管理日志 tail -f logs/log_manager.log # 查看最近的日志管理日志 type logs\log_manager.log ``` #### 手动测试健康检查 ```bash # 使用curl测试 curl http://localhost:5000/health # 使用PowerShell测试 Invoke-WebRequest -Uri http://localhost:5000/health ``` ## 性能优化 ### 1. 监控性能优化 #### 调整监控间隔 - 生产环境:30-60秒 - 开发环境:10-30秒 - 调试环境:5-10秒 #### 优化响应时间阈值 - 根据实际性能调整警告阈值 - 考虑网络延迟和服务器负载 ### 2. 日志性能优化 #### 日志轮转策略 - 根据磁盘空间调整轮转阈值 - 考虑日志写入频率 #### 压缩策略 - 启用压缩减少存储空间 - 平衡压缩时间和存储空间 ## 扩展功能 ### 1. 告警系统 #### 邮件告警 可以扩展监控脚本,添加邮件告警功能: ```python import smtplib from email.mime.text import MIMEText def send_alert(subject, message): # 配置邮件服务器 # 发送告警邮件 pass ``` #### 短信告警 可以集成短信服务提供商的API: ```python def send_sms_alert(message): # 调用短信API # 发送告警短信 pass ``` ### 2. 监控面板 #### Web监控面板 可以开发一个Web界面来显示监控数据: ```python from flask import Flask, render_template app = Flask(__name__) @app.route('/monitor') def monitor_dashboard(): # 读取监控报告 # 渲染监控面板 return render_template('monitor.html') ``` #### 集成Grafana 可以将监控数据发送到Grafana进行可视化: ```python def send_to_grafana(metrics): # 发送指标到Grafana # 配置数据源和面板 pass ``` ## 最佳实践 ### 1. 监控最佳实践 1. **设置合理的监控间隔**:避免过于频繁的检查 2. **配置适当的告警阈值**:避免误报和漏报 3. **定期检查监控日志**:及时发现和解决问题 4. **备份监控配置**:确保配置的可恢复性 ### 2. 日志最佳实践 1. **定期清理旧日志**:避免磁盘空间不足 2. **监控日志文件大小**:及时进行轮转 3. **保留重要日志**:确保问题可追溯 4. **配置日志级别**:根据环境调整日志详细程度 ### 3. 运维最佳实践 1. **自动化部署监控**:将监控系统集成到部署流程 2. **定期更新监控脚本**:保持功能的最新性 3. **建立监控文档**:记录监控配置和操作流程 4. **培训运维人员**:确保团队能够有效使用监控系统 ## 总结 通过本指南,您应该能够: 1. **快速启动监控系统**:使用提供的脚本和命令 2. **有效管理日志文件**:轮转、清理、压缩日志 3. **生成监控报告**:了解服务运行状态 4. **解决常见问题**:使用故障排除方法 5. **优化系统性能**:根据实际需求调整配置 6. **扩展监控功能**:添加告警和可视化功能 这套监控和日志系统为Flask提示词大师项目提供了完整的运维支持,确保服务的稳定运行和问题的及时发现。