配置监控和日志系统

This commit is contained in:
2025-08-17 22:10:51 +08:00
parent 799416335b
commit 23a5c907f7
8 changed files with 1706 additions and 1 deletions

View File

@@ -0,0 +1,409 @@
# 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提示词大师项目提供了完整的运维支持确保服务的稳定运行和问题的及时发现。

View File

@@ -0,0 +1,311 @@
# Flask 提示词大师 - 监控和日志系统配置总结
## 概述
本文档总结了为 Flask 提示词大师项目配置的监控和日志系统,包括服务监控、日志管理、性能监控等功能。
## 系统架构
### 1. 监控系统
#### 1.1 简化监控脚本 (`simple_monitor.py`)
- **功能**: 基础服务健康检查、响应时间监控、日志文件检查
- **特点**: 不依赖外部库,轻量级实现
- **监控项目**:
- 应用健康状态 (`/health` 端点)
- 响应时间统计
- 错误日志检测
- 监控报告生成
#### 1.2 监控管理脚本 (`monitor_manager.py`)
- **功能**: 统一管理监控和日志功能
- **特点**: 支持交互式操作和命令行操作
- **管理功能**:
- 启动/停止监控
- 服务状态检查
- 日志管理
- 报告生成
- 监控仪表板
### 2. 日志管理系统
#### 2.1 日志管理脚本 (`log_manager.py`)
- **功能**: 日志轮转、清理、压缩
- **特点**: 自动化日志维护
- **管理功能**:
- 日志文件轮转超过10MB自动轮转
- 旧日志清理保留30天
- 日志文件压缩gzip格式
- 日志统计信息
## 文件结构
```
aitsc/
├── simple_monitor.py # 简化监控脚本
├── log_manager.py # 日志管理脚本
├── monitor_manager.py # 监控管理脚本
├── logs/ # 日志目录
│ ├── app.log # 应用日志
│ ├── simple_service.log # 服务日志
│ ├── monitor.log # 监控日志
│ ├── log_manager.log # 日志管理日志
│ ├── monitor_report.json # 监控报告
│ └── archive/ # 归档目录
│ └── *.log.gz # 压缩的归档日志
```
## 使用方法
### 1. 监控系统使用
#### 1.1 启动监控
```bash
# 交互式模式
python monitor_manager.py
# 直接启动监控
python monitor_manager.py start
# 直接运行监控脚本
python simple_monitor.py
```
#### 1.2 检查服务状态
```bash
# 使用监控管理器
python monitor_manager.py status
# 直接使用监控脚本
python simple_monitor.py check
```
#### 1.3 生成监控报告
```bash
# 使用监控管理器
python monitor_manager.py report
# 直接使用监控脚本
python simple_monitor.py report
```
#### 1.4 显示监控仪表板
```bash
python monitor_manager.py dashboard
```
### 2. 日志管理系统使用
#### 2.1 查看日志统计
```bash
# 使用监控管理器
python monitor_manager.py logs stats
# 直接使用日志管理器
python log_manager.py stats
```
#### 2.2 日志轮转
```bash
# 使用监控管理器
python monitor_manager.py logs rotate
# 直接使用日志管理器
python log_manager.py rotate
```
#### 2.3 清理旧日志
```bash
# 使用监控管理器
python monitor_manager.py logs cleanup
# 直接使用日志管理器
python log_manager.py cleanup
```
#### 2.4 完整日志维护
```bash
# 轮转和清理
python log_manager.py
```
## 配置参数
### 1. 监控配置
#### 1.1 监控间隔
- **默认值**: 30秒
- **位置**: `simple_monitor.py` 中的 `monitor_interval`
- **说明**: 健康检查的执行间隔
#### 1.2 响应时间阈值
- **默认值**: 2.0秒
- **位置**: `simple_monitor.py` 中的阈值检查
- **说明**: 超过此时间会发出警告
### 2. 日志配置
#### 2.1 日志轮转阈值
- **默认值**: 10MB
- **位置**: `log_manager.py` 中的 `max_file_size`
- **说明**: 日志文件超过此大小会自动轮转
#### 2.2 日志保留时间
- **默认值**: 30天
- **位置**: `log_manager.py` 中的 `retention_days`
- **说明**: 归档日志的保留时间
#### 2.3 日志压缩
- **默认值**: 启用
- **位置**: `log_manager.py` 中的 `compress_files`
- **说明**: 是否压缩归档的日志文件
## 监控指标
### 1. 服务健康指标
- **状态**: 运行/停止
- **环境**: development/production
- **响应时间**: 平均响应时间
- **成功率**: 健康检查成功率
### 2. 性能指标
- **总请求数**: 监控期间的总请求数
- **成功请求数**: 成功的健康检查次数
- **失败请求数**: 失败的健康检查次数
- **平均响应时间**: 健康检查的平均响应时间
### 3. 日志指标
- **日志文件数量**: 当前日志文件总数
- **日志总大小**: 所有日志文件的总大小
- **错误日志**: 最近发现的错误日志数量
## 报告生成
### 1. 监控报告 (`monitor_report.json`)
```json
{
"timestamp": "2025-08-17T21:58:19.822324",
"uptime": "0:00:00",
"total_requests": 0,
"successful_requests": 0,
"failed_requests": 0,
"success_rate": "0.00%",
"avg_response_time": "0.00s",
"last_check": null
}
```
### 2. 日志统计报告
- 当前日志文件列表及大小
- 归档日志文件列表及大小
- 总文件数和总大小
## 自动化建议
### 1. 定时任务配置
#### 1.1 Windows 任务计划程序
```batch
# 创建定时监控任务
schtasks /create /tn "FlaskMonitor" /tr "python D:\wxxcx\aitsc\simple_monitor.py" /sc daily /st 09:00
# 创建定时日志维护任务
schtasks /create /tn "FlaskLogMaintenance" /tr "python D:\wxxcx\aitsc\log_manager.py" /sc daily /st 02:00
```
#### 1.2 Linux Cron 任务
```bash
# 编辑 crontab
crontab -e
# 添加定时任务
# 每天上午9点运行监控
0 9 * * * cd /path/to/aitsc && python simple_monitor.py
# 每天凌晨2点维护日志
0 2 * * * cd /path/to/aitsc && python log_manager.py
```
### 2. 服务集成
#### 2.1 与 Windows 服务集成
- 将监控脚本集成到现有的 Windows 服务中
- 在服务启动时自动启动监控
- 在服务停止时自动停止监控
#### 2.2 与 Docker 集成
- 将监控脚本添加到 Docker 容器中
- 使用 Docker 的健康检查机制
- 配置日志卷挂载
## 故障排除
### 1. 常见问题
#### 1.1 编码问题
- **问题**: Unicode 字符显示异常
- **解决**: 已移除所有 Unicode 表情符号,使用纯文本
#### 1.2 权限问题
- **问题**: 无法访问日志文件
- **解决**: 确保脚本有读写权限
#### 1.3 服务连接问题
- **问题**: 无法连接到应用服务
- **解决**: 检查服务是否运行,端口是否正确
### 2. 调试方法
#### 2.1 查看监控日志
```bash
tail -f logs/monitor.log
```
#### 2.2 查看日志管理日志
```bash
tail -f logs/log_manager.log
```
#### 2.3 手动测试健康检查
```bash
curl http://localhost:5000/health
```
## 扩展建议
### 1. 监控扩展
- 添加数据库连接监控
- 添加磁盘空间监控
- 添加网络连接监控
- 添加邮件/短信告警
### 2. 日志扩展
- 添加日志分析功能
- 添加日志搜索功能
- 添加日志可视化
- 集成 ELK 栈
### 3. 性能扩展
- 添加性能指标收集
- 添加慢查询监控
- 添加内存使用监控
- 添加 CPU 使用监控
## 总结
通过配置这套监控和日志系统,我们实现了:
1. **自动化监控**: 服务健康状态自动检查
2. **日志管理**: 自动轮转、清理、压缩日志文件
3. **统一管理**: 通过监控管理器统一管理所有功能
4. **报告生成**: 自动生成监控报告和统计信息
5. **故障排除**: 提供完整的故障排除工具
这套系统为 Flask 提示词大师项目提供了完整的运维支持,确保服务的稳定运行和问题的及时发现。
## 下一步建议
1. **配置告警系统**: 添加邮件或短信告警功能
2. **集成监控面板**: 集成 Grafana 等可视化监控面板
3. **性能优化**: 根据监控数据优化应用性能
4. **自动化部署**: 将监控系统集成到 CI/CD 流程中