监控运维
日志管理
日志文件位置
| 日志类型 | 路径 | 说明 |
|---|---|---|
| 服务日志 | logs/server.log |
Uvicorn 主日志 |
| API日志 | logs/security.log |
API 调用记录 |
| 错误日志 | logs/error.log |
错误追踪 |
| 分析日志 | logs/analysis.log |
分析任务记录 |
查看日志
# 实时查看服务日志
tail -f logs/server.log
# 查看最近100行
tail -100 logs/server.log
# 搜索错误
grep -i error logs/server.log
# 统计访问量
grep "GET /api" logs/security.log | wc -l
# 分析错误类型
grep "ERROR" logs/server.log | cut -d' ' -f4- | sort | uniq -c
资源监控
系统资源
# 查看 CPU 和内存
top -p $(pgrep -f uvicorn)
# 查看 GPU 状态
nvidia-smi
# 查看磁盘使用
df -h
# 查看内存
free -h
# 查看网络连接
ss -tlnp | grep 8000
服务健康检查
# 服务健康检查
curl http://localhost:8000/health
# 系统状态
curl http://localhost:8000/api/v1/system/status
# 16S服务健康
curl http://localhost:8000/api/v1/16s-pipeline/health
Prometheus 监控(可选)
添加 Prometheus 端点:
# 在 main.py 中添加
from fastapi import FastAPI
from prometheus_client import make_asgi_app
app = FastAPI()
# 挂载 Prometheus metrics
metrics_app = make_asgi_app()
app.mount("/metrics", metrics_app)
性能优化
Uvicorn Workers
# 计算 workers 数量: CPU核心数 * 2 + 1
WORKERS=$(( $(nproc) * 2 + 1 ))
nohup python -m uvicorn main:app \
--host 0.0.0.0 --port 8000 \
--workers $WORKERS \
--log-level info \
> logs/server.log 2>&1 &
Gunicorn 配置
# gunicorn_config.py
workers = 4
worker_class = "uvicorn.workers.UvicornWorker"
bind = "0.0.0.0:8000"
timeout = 300
keepalive = 65
max_requests = 1000
max_requests_jitter = 50
Redis 缓存
# 在 config.py 中启用
CACHE_ENABLED = True
REDIS_URL = "redis://localhost:6379/0"
CACHE_TTL = 3600 # 1小时
故障排查
常见问题
服务无法启动
分析超时
日志分析
# 查看慢请求 (>5秒)
grep -E "duration=[0-9]{4,}" logs/server.log
# 统计错误
grep "ERROR" logs/server.log | wc -l
# 分析访问趋势
awk '{print $4}' logs/access.log | cut -d: -f1 | sort | uniq -c