SVCG 开发者文档SVCG 开发者文档
首页
快速开始
  • 前端开发
  • 后端开发
  • API 文档
部署运维
更新日志
GitHub
首页
快速开始
  • 前端开发
  • 后端开发
  • API 文档
部署运维
更新日志
GitHub
  • 部署运维

    • 部署运维
    • Docker 部署指南
    • 生产环境配置
    • 监控和日志

监控和日志

本指南介绍如何监控系统性能、收集日志和进行故障排查。

📊 监控架构

监控栈

应用层 (Backend/Frontend)
    ↓
指标收集 (Prometheus)
    ↓
时序数据库 (Prometheus)
    ↓
可视化 (Grafana)
    ↓
告警 (AlertManager)

🔍 日志收集

后端日志配置

在 main.go 中配置日志:

import "github.com/sirupsen/logrus"

func init() {
    logrus.SetFormatter(&logrus.JSONFormatter{})
    logrus.SetLevel(logrus.InfoLevel)
    
    file, _ := os.OpenFile("logs/backend.log", 
        os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
    logrus.SetOutput(file)
}

日志级别

级别说明示例
DEBUG调试信息SQL 查询详情
INFO一般信息服务启动
WARN警告信息已弃用的 API
ERROR错误信息数据库连接失败
FATAL致命错误无法启动服务

日志文件位置

logs/
├── backend.log          # 后端应用日志
├── nginx_access.log    # Nginx 访问日志
├── nginx_error.log     # Nginx 错误日志
└── system.log          # 系统日志

日志轮转配置

# /etc/logrotate.d/svcg
/var/log/svcg/*.log {
    daily
    rotate 30
    compress
    delaycompress
    missingok
    notifempty
    create 0640 root root
    sharedscripts
    postrotate
        systemctl reload svcg-backend > /dev/null 2>&1 || true
    endscript
}

📈 性能指标

系统指标

指标说明正常范围
CPU 使用率处理器使用百分比<70%
内存使用率内存占用百分比<80%
磁盘使用率磁盘空间占用<85%
网络 I/O网络流量<100Mbps

应用指标

指标说明正常范围
请求延迟 (P50)中位数响应时间<100ms
请求延迟 (P95)95%百分位响应时间<500ms
请求延迟 (P99)99%百分位响应时间<1000ms
错误率失败请求百分比<0.1%
吞吐量每秒请求数>100 req/s

RAG 指标

指标说明正常范围
Embedding 延迟向量化所需时间<500ms
检索延迟知识库查询时间<100ms
知识库大小总块数>50 chunks

🛠️ 监控工具

Prometheus

安装

wget https://github.com/prometheus/prometheus/releases/download/v2.40.0/prometheus-2.40.0.linux-amd64.tar.gz
tar xzf prometheus-2.40.0.linux-amd64.tar.gz
cd prometheus-2.40.0.linux-amd64

配置

prometheus.yml:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'svcg-backend'
    static_configs:
      - targets: ['localhost:7777']
    metrics_path: '/metrics'
    scrape_interval: 5s

  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']

启动

./prometheus --config.file=prometheus.yml
# 访问: http://localhost:9090

Grafana

安装

sudo apt-get install -y addons.zulu.openjdk.z@11-jdk-headless
wget https://dl.grafana.com/oss/release/grafana-9.3.0.linux-amd64.tar.gz
tar xzf grafana-9.3.0.linux-amd64.tar.gz
cd grafana-9.3.0

配置数据源

  1. 访问 http://localhost:3000
  2. 登录(默认:admin/admin)
  3. 添加数据源:Prometheus
  4. URL: http://localhost:9090

创建仪表板

在 Grafana 中创建面板:

  • CPU 使用率
  • 内存使用率
  • 请求延迟
  • 错误率
  • RAG 性能

Node Exporter

导出系统指标:

wget https://github.com/prometheus/node_exporter/releases/download/v1.5.0/node_exporter-1.5.0.linux-amd64.tar.gz
tar xzf node_exporter-1.5.0.linux-amd64.tar.gz
cd node_exporter-1.5.0.linux-amd64
./node_exporter
# 访问: http://localhost:9100/metrics

🚨 告警配置

AlertManager 配置

alertmanager.yml:

global:
  resolve_timeout: 5m

route:
  receiver: 'default'

receivers:
  - name: 'default'
    email_configs:
      - to: 'admin@example.com'
        from: 'alerts@example.com'
        smarthost: 'smtp.example.com:587'
        auth_username: 'alerts@example.com'
        auth_password: 'password'

告警规则

alert.yml:

groups:
  - name: svcg
    rules:
      - alert: HighCPUUsage
        expr: node_cpu > 80
        for: 5m
        annotations:
          summary: "CPU 使用率超过 80%"

      - alert: HighMemoryUsage
        expr: node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes < 0.2
        for: 5m
        annotations:
          summary: "内存使用率超过 80%"

      - alert: HighErrorRate
        expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.01
        for: 5m
        annotations:
          summary: "错误率超过 1%"

📝 日志查询示例

查看后端日志

# 实时查看
tail -f logs/backend.log

# 查看最近 100 行
tail -100 logs/backend.log

# 搜索错误
grep "ERROR" logs/backend.log

# 统计错误数
grep "ERROR" logs/backend.log | wc -l

使用 grep 分析日志

# 查看特定请求
grep "POST /api/rag/chat" logs/backend.log

# 查看特定时间范围
grep "2025-10-16" logs/backend.log

# 查看响应时间
grep "duration:" logs/backend.log | awk '{print $NF}'

使用 jq 解析 JSON 日志

# 查看所有错误
jq 'select(.level=="error")' logs/backend.log

# 统计请求方法
jq '.method' logs/backend.log | sort | uniq -c

# 查看平均响应时间
jq '.duration' logs/backend.log | \
  awk '{sum+=$1; count++} END {print sum/count}'

🔧 故障排查指南

问题1:高 CPU 使用率

症状:CPU 使用率持续 >80%

诊断:

top -b -n 1 | grep svcg-backend
ps aux | grep svcg-backend

解决:

  • 检查是否有无限循环
  • 增加并发处理能力
  • 优化数据库查询

问题2:内存泄漏

症状:内存占用持续增长

诊断:

free -h
# 或使用 Grafana 看趋势

解决:

  • 检查日志中是否有"连接泄漏"
  • 重启服务
  • 检查代码中的资源释放

问题3:响应缓慢

症状:请求延迟 >1000ms

诊断:

curl -w "@curl-format.txt" http://localhost:7777/api/rag/status

解决:

  • 检查数据库连接
  • 检查 Deepseek API 延迟
  • 优化查询语句

问题4:磁盘空间不足

症状:磁盘使用率 >90%

诊断:

df -h
du -sh logs/
du -sh data/

解决:

  • 清理旧日志:find logs/ -mtime +30 -delete
  • 压缩数据库:进行碎片整理
  • 扩展磁盘空间

📊 仪表板模板

系统监控仪表板

关键面板:

  • CPU/内存/磁盘使用率(饼图)
  • 系统负载(折线图)
  • 网络 I/O(面积图)
  • 进程列表(表格)

应用性能仪表板

关键面板:

  • 请求吞吐量(折线图)
  • 响应时间分布(柱状图)
  • 错误率趋势(折线图)
  • 端点性能对比(表格)

RAG 性能仪表板

关键面板:

  • Embedding 延迟(直方图)
  • 检索性能(柱状图)
  • 知识库统计(卡片)
  • 查询热力图(热力图)

🔗 相关资源

  • Docker 部署
  • 生产环境配置
  • 系统架构设计

有任何监控问题,请参考相关工具文档或联系运维团队。

在 GitHub 上编辑此页
上次更新: 2025/10/16 11:45
贡献者: NingBye
Prev
生产环境配置