跳转至

监控运维

日志管理

日志文件位置

日志类型 路径 说明
服务日志 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小时

故障排查

常见问题

服务无法启动

# 检查端口占用
lsof -i :8000

# 检查虚拟环境
source .venv/bin/activate

# 检查依赖
pip install -r requirements.txt

上传文件失败

# 检查磁盘空间
df -h

# 检查目录权限
ls -la data/uploads/

# 检查文件大小限制
# 在 config.py 中修改 MAX_FILE_SIZE

分析超时

# 检查 GPU 状态
nvidia-smi

# 检查 Ollama 服务
curl http://localhost:11434/api/tags

# 查看分析日志
tail -f logs/analysis.log

日志分析

# 查看慢请求 (>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

返回运维手册