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