Skip to content

向量化系统阶段五实施规划——监控与优化 ​

📋 概述 ​

Phase 5 构建完善的监控体系和性能优化机制,确保系统稳定高效运行:

  • ✨ 全面监控指标: 数量、质量、性能、资源等多维度指标
  • ✨ 可视化Dashboard: 实时监控大屏和报表
  • ✨ 智能告警: 异常自动检测和通知
  • ✨ 性能优化: 自动识别瓶颈并优化
  • ✨ 审计日志: 完整的操作审计记录
  • ✨ 成本分析: API调用成本统计和优化建议

🎯 核心目标 ​

业务目标 ​

目标说明指标
可观测性全面了解系统运行状态覆盖率100%
稳定性及时发现和处理故障可用性 > 99.9%
性能优化持续提升系统性能处理速度提升30%
成本控制降低API调用成本成本降低20%

监控维度 ​

维度关键指标目的
数量指标文档数、分段数、向量数了解数据规模
质量指标质量分数、低质量率评估数据质量
性能指标处理速度、吞吐量、延迟优化性能
资源指标CPU、内存、存储、网络资源规划
业务指标成功率、失败率、重试率业务健康度
成本指标API调用次数、Token消耗成本控制

🏗️ 架构设计 ​

整体架构 ​

┌──────────────────────────────────────────────────────────────┐
│                      应用层(数据采集)                       │
│  ┌────────────┐  ┌────────────┐  ┌────────────┐            │
│  │ 向量化服务  │  │ 调度器     │  │ 数据源同步  │            │
│  │ (埋点)     │  │ (埋点)     │  │ (埋点)     │            │
│  └─────┬──────┘  └─────┬──────┘  └─────┬──────┘            │
└────────┼───────────────┼───────────────┼────────────────────┘
         │               │               │
         └───────────────┼───────────────┘
                         ▼
┌──────────────────────────────────────────────────────────────┐
│              MetricsCollector (指标收集器)                    │
│  ┌────────────────────────────────────────────────────────┐  │
│  │  收集各类指标:                                          │  │
│  │  • 实时指标 (Counter, Gauge, Histogram)               │  │
│  │  • 定时统计 (每小时/每天)                             │  │
│  │  • 事件记录 (审计日志)                                 │  │
│  └────────────────────────────────────────────────────────┘  │
└────────────────────────┬─────────────────────────────────────┘
                         │
         ┌───────────────┼───────────────┐
         ▼               ▼               ▼
┌───────────────┐ ┌───────────────┐ ┌───────────────┐
│ Prometheus    │ │ MySQL         │ │ Elasticsearch │
│ (时序指标)     │ │ (统计报表)     │ │ (审计日志)     │
└───────┬───────┘ └───────┬───────┘ └───────┬───────┘
        │                 │                 │
        └─────────────────┼─────────────────┘
                          ▼
┌──────────────────────────────────────────────────────────────┐
│                   监控与分析层                                │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌──────────┐    │
│  │ Grafana  │  │ 告警引擎  │  │ 报表系统  │  │ 优化器    │    │
│  │ Dashboard│  │ Alerting │  │ Reporting│  │ Optimizer│    │
│  └──────────┘  └──────────┘  └──────────┘  └──────────┘    │
└──────────────────────────────────────────────────────────────┘

📊 指标体系设计 ​

1. 数量指标(Counter & Gauge) ​

java
public class VectorizationMetrics {

    // ========== 文档指标 ==========
    /**
     * 总文档数
     */
    private Long totalDocuments;

    /**
     * 已向量化文档数
     */
    private Long vectorizedDocuments;

    /**
     * 向量化覆盖率(%)
     */
    private Double coverageRate;

    // ========== 分段指标 ==========
    /**
     * 总分段数
     */
    private Long totalChunks;

    /**
     * 平均每文档分段数
     */
    private Double avgChunksPerDocument;

    // ========== 向量指标 ==========
    /**
     * 总向量数(与分段数相同)
     */
    private Long totalVectors;

    /**
     * 向量维度
     */
    private Integer vectorDimension;

    /**
     * 向量存储大小(MB)
     */
    private Long vectorStorageMb;

    // ========== 任务指标 ==========
    /**
     * 总任务数
     */
    private Long totalTasks;

    /**
     * 成功任务数
     */
    private Long successTasks;

    /**
     * 失败任务数
     */
    private Long failedTasks;

    /**
     * 运行中任务数
     */
    private Integer runningTasks;

    /**
     * 队列中任务数
     */
    private Integer queuedTasks;
}

2. 质量指标(Gauge) ​

java
public class QualityMetrics {

    // ========== 整体质量 ==========
    /**
     * 平均质量分数(0-1)
     */
    private Double avgQualityScore;

    /**
     * 低质量文档数(score < 0.6)
     */
    private Long lowQualityDocuments;

    /**
     * 低质量率(%)
     */
    private Double lowQualityRate;

    // ========== 分段质量 ==========
    /**
     * 过短分段数(< 50字符)
     */
    private Long tooShortChunks;

    /**
     * 过长分段数(> 2000字符)
     */
    private Long tooLongChunks;

    /**
     * 空分段数
     */
    private Long emptyChunks;

    // ========== 向量质量 ==========
    /**
     * 零向量数
     */
    private Long zeroVectors;

    /**
     * 异常向量数
     */
    private Long abnormalVectors;
}

3. 性能指标(Histogram & Summary) ​

java
public class PerformanceMetrics {

    // ========== 处理速度 ==========
    /**
     * 平均处理时间(毫秒/文档)
     */
    private Long avgProcessTimeMs;

    /**
     * P50处理时间
     */
    private Long p50ProcessTimeMs;

    /**
     * P95处理时间
     */
    private Long p95ProcessTimeMs;

    /**
     * P99处理时间
     */
    private Long p99ProcessTimeMs;

    // ========== 吞吐量 ==========
    /**
     * 吞吐量(文档/秒)
     */
    private Double throughput;

    /**
     * QPS(查询/秒)
     */
    private Double qps;

    // ========== API性能 ==========
    /**
     * Embedding API平均响应时间(毫秒)
     */
    private Long embeddingApiAvgTimeMs;

    /**
     * Embedding API P99响应时间
     */
    private Long embeddingApiP99TimeMs;

    /**
     * Milvus插入平均时间(毫秒)
     */
    private Long milvusInsertAvgTimeMs;
}

4. 资源指标(Gauge) ​

java
public class ResourceMetrics {

    // ========== 系统资源 ==========
    /**
     * CPU使用率(%)
     */
    private Double cpuUsage;

    /**
     * 内存使用率(%)
     */
    private Double memoryUsage;

    /**
     * JVM堆内存使用(MB)
     */
    private Long jvmHeapUsedMb;

    /**
     * JVM堆内存最大值(MB)
     */
    private Long jvmHeapMaxMb;

    // ========== 存储资源 ==========
    /**
     * Milvus存储使用(GB)
     */
    private Double milvusStorageGb;

    /**
     * MinIO存储使用(GB)
     */
    private Double minioStorageGb;

    /**
     * MySQL存储使用(GB)
     */
    private Double mysqlStorageGb;

    // ========== 网络资源 ==========
    /**
     * 网络入流量(MB/s)
     */
    private Double networkInMbps;

    /**
     * 网络出流量(MB/s)
     */
    private Double networkOutMbps;

    // ========== 线程池 ==========
    /**
     * 活跃线程数
     */
    private Integer activeThreads;

    /**
     * 线程池队列大小
     */
    private Integer queueSize;
}

5. 成本指标(Counter) ​

java
public class CostMetrics {

    // ========== API调用 ==========
    /**
     * Embedding API总调用次数
     */
    private Long totalApiCalls;

    /**
     * Embedding API今日调用次数
     */
    private Long todayApiCalls;

    /**
     * Embedding API本月调用次数
     */
    private Long monthApiCalls;

    // ========== Token消耗 ==========
    /**
     * 总Token消耗
     */
    private Long totalTokens;

    /**
     * 今日Token消耗
     */
    private Long todayTokens;

    /**
     * 本月Token消耗
     */
    private Long monthTokens;

    // ========== 费用估算 ==========
    /**
     * 今日费用(元)
     */
    private BigDecimal todayCost;

    /**
     * 本月费用(元)
     */
    private BigDecimal monthCost;

    /**
     * 预计月费用(元)
     */
    private BigDecimal estimatedMonthCost;

    // ========== 优化建议 ==========
    /**
     * 可节省费用(元/月)
     */
    private BigDecimal savableCost;

    /**
     * 优化建议列表
     */
    private List<String> optimizationSuggestions;
}

📦 核心组件设计 ​

1. MetricsCollector - 指标收集器 ​

职责: 收集各类指标数据

实现方式:

方式1: Micrometer + Prometheus
  - 使用 Spring Boot Actuator + Micrometer
  - 自动暴露 /actuator/prometheus 端点
  - Prometheus 定时拉取指标

方式2: 自定义指标收集
  - 定时任务统计数据库数据
  - 保存到 kb_metrics_snapshot 表
  - 提供 API 查询

推荐: 方式1 + 方式2 组合
  - 实时指标用 Prometheus
  - 历史统计用数据库

Prometheus指标定义:

java
@Component
public class VectorizationMetricsCollector {

    // Counter: 累计指标
    private final Counter totalDocumentsCounter;
    private final Counter apiCallsCounter;

    // Gauge: 瞬时指标
    private final Gauge queueSizeGauge;
    private final Gauge activeThreadsGauge;

    // Histogram: 分布指标
    private final Timer processTimer;

    @Autowired
    public VectorizationMetricsCollector(MeterRegistry registry) {
        // 文档计数器
        this.totalDocumentsCounter = Counter.builder("vectorization.documents.total")
            .description("Total number of vectorized documents")
            .tag("type", "document")
            .register(registry);

        // API调用计数器
        this.apiCallsCounter = Counter.builder("vectorization.api.calls")
            .description("Total Embedding API calls")
            .tag("provider", "openai")
            .register(registry);

        // 队列大小
        this.queueSizeGauge = Gauge.builder("vectorization.queue.size", scheduler, VectorizationScheduler::getQueueSize)
            .description("Task queue size")
            .register(registry);

        // 处理时间分布
        this.processTimer = Timer.builder("vectorization.process.time")
            .description("Document processing time")
            .publishPercentiles(0.5, 0.95, 0.99)
            .register(registry);
    }

    // 埋点方法
    public void recordDocument() {
        totalDocumentsCounter.increment();
    }

    public void recordApiCall() {
        apiCallsCounter.increment();
    }

    public <T> T recordProcessTime(Supplier<T> operation) {
        return processTimer.record(operation);
    }
}

2. MetricsAggregator - 指标聚合器 ​

职责: 定时聚合指标到数据库

数据库表设计:

sql
CREATE TABLE `kb_metrics_snapshot` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `snapshot_time` datetime NOT NULL COMMENT '快照时间',
  `snapshot_type` varchar(32) NOT NULL COMMENT '快照类型: HOURLY/DAILY/MONTHLY',
  `dataset_id` bigint COMMENT '数据集ID(可选)',
  `metrics_data` json NOT NULL COMMENT '指标数据(JSON)',
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_snapshot` (`snapshot_time`, `snapshot_type`, `dataset_id`),
  KEY `idx_snapshot_time` (`snapshot_time`),
  KEY `idx_dataset_id` (`dataset_id`)
) ENGINE=InnoDB COMMENT='指标快照表';

聚合逻辑:

java
@Component
public class MetricsAggregator {

    /**
     * 每小时聚合一次
     */
    @Scheduled(cron = "0 0 * * * ?")
    public void aggregateHourly() {
        LocalDateTime now = LocalDateTime.now();

        // 统计过去1小时的数据
        VectorizationMetrics metrics = calculateMetrics(now.minusHours(1), now);

        // 保存快照
        saveSnapshot(now, SnapshotType.HOURLY, null, metrics);
    }

    /**
     * 每天聚合一次
     */
    @Scheduled(cron = "0 0 0 * * ?")
    public void aggregateDaily() {
        LocalDateTime now = LocalDateTime.now();

        // 统计昨天的数据
        VectorizationMetrics metrics = calculateMetrics(now.minusDays(1), now);

        // 保存快照
        saveSnapshot(now, SnapshotType.DAILY, null, metrics);
    }

    /**
     * 计算指标
     */
    private VectorizationMetrics calculateMetrics(LocalDateTime start, LocalDateTime end) {
        // 从数据库统计
        return VectorizationMetrics.builder()
            .totalDocuments(documentMapper.countByTimeRange(start, end))
            .successTasks(taskMapper.countSuccess(start, end))
            .failedTasks(taskMapper.countFailed(start, end))
            .avgProcessTimeMs(taskMapper.avgProcessTime(start, end))
            // ...
            .build();
    }
}

3. AlertingEngine - 告警引擎 ​

职责: 检测异常并发送告警

告警规则配置:

yaml
alerting:
  enabled: true
  channels:
    - type: email
      enabled: true
      recipients: ["admin@example.com"]
    - type: webhook
      enabled: true
      url: "https://hooks.dingtalk.com/xxx"
    - type: sms
      enabled: false

  rules:
    # 失败率告警
    - name: high_failure_rate
      condition: "failureRate > 10"
      severity: WARNING
      message: "向量化失败率过高: {{failureRate}}%"
      cooldown: 3600  # 冷却时间(秒)

    # 队列积压告警
    - name: queue_backlog
      condition: "queueSize > 1000"
      severity: CRITICAL
      message: "任务队列积压严重: {{queueSize}} 个任务"
      cooldown: 1800

    # 资源告警
    - name: high_memory_usage
      condition: "memoryUsage > 90"
      severity: WARNING
      message: "内存使用率过高: {{memoryUsage}}%"
      cooldown: 600

    # 成本告警
    - name: high_daily_cost
      condition: "todayCost > 1000"
      severity: INFO
      message: "今日费用超过预算: ¥{{todayCost}}"
      cooldown: 86400

告警检测:

java
@Component
public class AlertingEngine {

    @Scheduled(fixedRate = 60000) // 每分钟检测一次
    public void checkAlerts() {
        // 获取当前指标
        VectorizationMetrics metrics = metricsService.getCurrentMetrics();

        // 遍历告警规则
        for (AlertRule rule : alertRules) {
            if (rule.evaluate(metrics) && !rule.isInCooldown()) {
                // 触发告警
                sendAlert(rule, metrics);

                // 记录到数据库
                saveAlertHistory(rule, metrics);

                // 设置冷却时间
                rule.startCooldown();
            }
        }
    }

    private void sendAlert(AlertRule rule, VectorizationMetrics metrics) {
        String message = rule.formatMessage(metrics);

        for (AlertChannel channel : alertChannels) {
            if (channel.isEnabled()) {
                channel.send(rule.getSeverity(), message);
            }
        }
    }
}

4. PerformanceOptimizer - 性能优化器 ​

职责: 自动识别性能瓶颈并优化

优化策略:

java
@Component
public class PerformanceOptimizer {

    /**
     * 每小时分析一次性能
     */
    @Scheduled(cron = "0 30 * * * ?")
    public void analyzeAndOptimize() {
        PerformanceReport report = analyzePerformance();

        List<OptimizationAction> actions = generateOptimizations(report);

        // 自动执行低风险优化
        for (OptimizationAction action : actions) {
            if (action.getRisk() == Risk.LOW) {
                executeOptimization(action);
            }
        }

        // 高风险优化需要人工审核
        notifyHighRiskOptimizations(actions);
    }

    /**
     * 分析性能
     */
    private PerformanceReport analyzePerformance() {
        return PerformanceReport.builder()
            .slowQueries(findSlowQueries())
            .bottlenecks(identifyBottlenecks())
            .resourceUsage(getResourceUsage())
            .build();
    }

    /**
     * 生成优化建议
     */
    private List<OptimizationAction> generateOptimizations(PerformanceReport report) {
        List<OptimizationAction> actions = new ArrayList<>();

        // 检测慢查询
        if (report.getSlowQueries().size() > 0) {
            actions.add(OptimizationAction.builder()
                .type(OptimizationType.ADD_INDEX)
                .description("为慢查询添加索引")
                .risk(Risk.LOW)
                .build());
        }

        // 检测批处理大小
        if (report.getAvgProcessTimeMs() > 5000) {
            actions.add(OptimizationAction.builder()
                .type(OptimizationType.ADJUST_BATCH_SIZE)
                .description("调整批处理大小以提升性能")
                .risk(Risk.LOW)
                .build());
        }

        // 检测线程池配置
        if (report.getQueueSize() > 100 && report.getActiveThreads() < report.getMaxThreads()) {
            actions.add(OptimizationAction.builder()
                .type(OptimizationType.INCREASE_THREADS)
                .description("增加线程池大小以处理积压")
                .risk(Risk.MEDIUM)
                .build());
        }

        return actions;
    }
}

5. CostAnalyzer - 成本分析器 ​

职责: 分析API调用成本并提供优化建议

成本计算:

java
@Component
public class CostAnalyzer {

    // Embedding API 价格(美元/1000 tokens)
    private static final BigDecimal EMBEDDING_PRICE_PER_1K_TOKENS = new BigDecimal("0.0001");
    private static final BigDecimal USD_TO_CNY = new BigDecimal("7.2");

    /**
     * 计算成本
     */
    public CostMetrics calculateCost(LocalDateTime start, LocalDateTime end) {
        // 统计Token消耗
        Long totalTokens = tokenUsageMapper.sumTokens(start, end);

        // 计算费用(美元)
        BigDecimal costUsd = BigDecimal.valueOf(totalTokens)
            .divide(BigDecimal.valueOf(1000), 6, RoundingMode.HALF_UP)
            .multiply(EMBEDDING_PRICE_PER_1K_TOKENS);

        // 转换为人民币
        BigDecimal costCny = costUsd.multiply(USD_TO_CNY);

        return CostMetrics.builder()
            .totalTokens(totalTokens)
            .totalCost(costCny)
            .build();
    }

    /**
     * 生成成本优化建议
     */
    public List<String> generateCostOptimizations() {
        List<String> suggestions = new ArrayList<>();

        // 检查重复向量化
        Long duplicates = findDuplicateVectorizations();
        if (duplicates > 0) {
            suggestions.add(String.format("发现 %d 个重复向量化,建议启用去重", duplicates));
        }

        // 检查低质量文档
        Long lowQualityDocs = findLowQualityDocuments();
        if (lowQualityDocs > 0) {
            suggestions.add(String.format("发现 %d 个低质量文档,建议清理后再向量化", lowQualityDocs));
        }

        // 检查过大文档
        Long largeDocs = findLargeDocuments();
        if (largeDocs > 0) {
            suggestions.add(String.format("发现 %d 个超大文档,建议优化分块策略", largeDocs));
        }

        return suggestions;
    }
}

📈 可视化仪表板 ​

Grafana Dashboard设计 ​

1. 概览面板 ​

┌─────────────────────────────────────────────────────────┐
│  向量化系统监控大屏                                      │
├─────────────────────────────────────────────────────────┤
│  ┌───────────┐  ┌───────────┐  ┌───────────┐          │
│  │ 总文档数   │  │ 已向量化   │  │ 今日新增   │          │
│  │ 12,345    │  │ 11,890    │  │ +234      │          │
│  └───────────┘  └───────────┘  └───────────┘          │
│                                                         │
│  ┌───────────────────────────────────────────────┐    │
│  │ 向量化趋势(7天)                             │    │
│  │ [折线图: 每日向量化文档数]                    │    │
│  └───────────────────────────────────────────────┘    │
│                                                         │
│  ┌─────────────────┐  ┌─────────────────┐            │
│  │ 任务成功率       │  │ 平均处理时间     │            │
│  │ [饼图: 95.2%]   │  │ [仪表盘: 2.3s]  │            │
│  └─────────────────┘  └─────────────────┘            │
└─────────────────────────────────────────────────────────┘

2. 性能监控面板 ​

┌─────────────────────────────────────────────────────────┐
│  性能指标                                                │
├─────────────────────────────────────────────────────────┤
│  ┌───────────────────────────────────────────────┐    │
│  │ 处理时间分布(P50/P95/P99)                   │    │
│  │ [折线图: 实时变化]                            │    │
│  └───────────────────────────────────────────────┘    │
│                                                         │
│  ┌─────────────────┐  ┌─────────────────┐            │
│  │ 吞吐量           │  │ QPS              │            │
│  │ [面积图]         │  │ [折线图]         │            │
│  └─────────────────┘  └─────────────────┘            │
│                                                         │
│  ┌───────────────────────────────────────────────┐    │
│  │ API响应时间                                    │    │
│  │ [热力图: Embedding API各时段响应时间]         │    │
│  └───────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────┘

3. 资源监控面板 ​

┌─────────────────────────────────────────────────────────┐
│  资源使用                                                │
├─────────────────────────────────────────────────────────┤
│  ┌─────────────────┐  ┌─────────────────┐            │
│  │ CPU使用率        │  │ 内存使用率       │            │
│  │ [仪表盘: 45%]   │  │ [仪表盘: 68%]   │            │
│  └─────────────────┘  └─────────────────┘            │
│                                                         │
│  ┌───────────────────────────────────────────────┐    │
│  │ 线程池状态                                     │    │
│  │ [堆叠面积图: 活跃线程 / 队列大小]             │    │
│  └───────────────────────────────────────────────┘    │
│                                                         │
│  ┌───────────────────────────────────────────────┐    │
│  │ 存储使用(Milvus / MinIO / MySQL)            │    │
│  │ [柱状图]                                       │    │
│  └───────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────┘

4. 成本监控面板 ​

┌─────────────────────────────────────────────────────────┐
│  成本分析                                                │
├─────────────────────────────────────────────────────────┤
│  ┌───────────┐  ┌───────────┐  ┌───────────┐          │
│  │ 今日费用   │  │ 本月费用   │  │ 预计月费用 │          │
│  │ ¥123      │  │ ¥2,456    │  │ ¥3,200    │          │
│  └───────────┘  └───────────┘  └───────────┘          │
│                                                         │
│  ┌───────────────────────────────────────────────┐    │
│  │ API调用趋势(30天)                           │    │
│  │ [柱状图: 每日API调用次数]                     │    │
│  └───────────────────────────────────────────────┘    │
│                                                         │
│  ┌───────────────────────────────────────────────┐    │
│  │ 成本优化建议                                   │    │
│  │ • 发现234个重复向量化,可节省¥45/月           │    │
│  │ • 低质量文档清理可节省¥23/月                  │    │
│  └───────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────┘

🔄 实施方案 ​

Phase 5.1: 指标收集(Week 1-2) ​

任务清单:

  1. ✅ 集成 Micrometer + Prometheus
  2. ✅ 定义核心指标
  3. ✅ 在关键位置埋点
  4. ✅ 实现 MetricsAggregator
  5. ✅ 创建数据库表

Phase 5.2: 可视化Dashboard(Week 3) ​

任务清单:

  1. ✅ 部署 Prometheus + Grafana
  2. ✅ 创建 Grafana Dashboard
  3. ✅ 配置数据源
  4. ✅ 设计面板布局

Phase 5.3: 告警系统(Week 4) ​

任务清单:

  1. ✅ 实现 AlertingEngine
  2. ✅ 配置告警规则
  3. ✅ 集成告警渠道(邮件/钉钉/短信)
  4. ✅ 测试告警流程

Phase 5.4: 性能优化(Week 5) ​

任务清单:

  1. ✅ 实现 PerformanceOptimizer
  2. ✅ 定义优化策略
  3. ✅ 实现自动优化逻辑
  4. ✅ 添加手动优化接口

Phase 5.5: 成本分析(Week 6) ​

任务清单:

  1. ✅ 实现 CostAnalyzer
  2. ✅ 统计Token消耗
  3. ✅ 计算费用
  4. ✅ 生成优化建议

⚙️ 配置示例 ​

application.yml ​

yaml
management:
  metrics:
    export:
      prometheus:
        enabled: true
  endpoints:
    web:
      exposure:
        include: prometheus,health,metrics

vectorization:
  monitoring:
    # Prometheus配置
    prometheus:
      enabled: true
      pushgateway:
        enabled: false

    # 指标聚合配置
    aggregation:
      hourly-enabled: true
      daily-enabled: true
      monthly-enabled: true

    # 告警配置
    alerting:
      enabled: true
      check-interval: 60000  # 检测间隔(毫秒)
      channels:
        email:
          enabled: true
          smtp-host: smtp.example.com
          smtp-port: 587
          username: alerts@example.com
          password: xxx
          recipients:
            - admin@example.com
        dingtalk:
          enabled: true
          webhook-url: https://oapi.dingtalk.com/robot/send?access_token=xxx

    # 成本配置
    cost:
      embedding-price-per-1k-tokens: 0.0001  # 美元
      usd-to-cny-rate: 7.2
      monthly-budget: 5000  # 月预算(元)

⚠️ 注意事项 ​

1. 性能影响 ​

  • 指标收集对性能影响 < 1%
  • 避免高频埋点(建议采样)
  • Prometheus抓取间隔建议 30s-60s

2. 存储空间 ​

  • Prometheus数据保留期: 15天
  • 数据库快照保留期: 90天
  • 定期清理历史数据

3. 告警疲劳 ​

  • 设置合理的阈值
  • 使用冷却时间避免重复告警
  • 区分告警级别(INFO/WARNING/CRITICAL)

📊 预期效果 ​

监控覆盖率 ​

  • 核心指标覆盖: 100%
  • 关键组件埋点: 100%
  • 可视化Dashboard: 4个

故障发现 ​

  • 异常检测时间: < 1分钟
  • 告警通知时间: < 30秒
  • 故障定位时间: < 5分钟

性能提升 ​

  • 识别性能瓶颈: 自动化
  • 优化建议生成: 实时
  • 性能提升: 20-30%

成本节约 ​

  • 成本可视化: 实时
  • 优化建议: 自动生成
  • 成本降低: 15-25%

🎉 总结 ​

Phase 5 完成后,向量化系统将具备:

✅ 全面可观测性: 了解系统运行的每一个细节 ✅ 智能告警: 第一时间发现问题 ✅ 性能优化: 持续提升系统性能 ✅ 成本控制: 有效控制API调用成本 ✅ 数据驱动决策: 基于数据做出优化决策


最后更新: 2025-12-12 版本: Phase 5 规划 v1.0.0