Skip to content

系统监控与告警

监控指标

指标说明告警参考
延迟 P50/P95/P99请求响应时间分位数P99 > 2s 需关注
错误率5xx 响应占比> 1% 触发告警
QPS每秒请求数配合容量规划
CPU / 内存 / 磁盘资源使用率> 80% 需关注
连接池数据库/Redis 活跃连接接近上限需扩容

日志设计

python
import logging
import json
from datetime import datetime

# 结构化日志
class JSONFormatter(logging.Formatter):
    def format(self, record):
        log = {
            "timestamp": datetime.utcnow().isoformat(),
            "level": record.levelname,
            "message": record.getMessage(),
            "module": record.module,
            "request_id": getattr(record, "request_id", None),
        }
        return json.dumps(log, ensure_ascii=False)

# 配置
logger = logging.getLogger("app")
handler = logging.StreamHandler()
handler.setFormatter(JSONFormatter())
logger.addHandler(handler)
logger.setLevel(logging.INFO)

日志级别使用:DEBUG 调试信息 / INFO 关键流程 / WARNING 异常但不影响主流程 / ERROR 需要处理 / CRITICAL 系统不可用

Prometheus + Grafana

yaml
# prometheus.yml - 指标采集配置
scrape_configs:
  - job_name: "fastapi"
    metrics_path: "/metrics"
    static_configs:
      - targets: ["api:8000"]

  - job_name: "postgres"
    static_configs:
      - targets: ["postgres-exporter:9187"]
yaml
# 告警规则
groups:
  - name: api-alerts
    rules:
      - alert: HighErrorRate
        expr: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.01
        for: 5m
        labels:
          severity: critical
        annotations:
          summary: "API 错误率超过 1%"

AI 应用特有监控

监控项说明采集方式
Token 消耗每次请求的 input/output token 数从 API 响应中提取
模型延迟首 Token 时间 (TTFT)、总生成时间请求耗时统计
幻觉率生成内容与事实不符的比例抽样人工评估 + 自动化校验
成本追踪按 model / project / user 统计费用tokens * 单价 计算

告警策略

策略说明示例
阈值告警指标超过固定值错误率 > 5%
趋势告警指标持续上升磁盘使用率 1 小时增长 > 10%
分级通知P1 电话/P2 短信/P3 邮件P1: 服务不可用立即电话

告警原则:可操作性(收到告警知道怎么处理)、避免告警疲劳(减少误报)、分级明确。

基于 VitePress 构建