2. PSI监控体系设计:因子库PSI监控的整体架构、数据流与告警链路

一个稳健的PSI监控体系是因子库稳定性的“免疫系统”。本章从整体架构、数据流转和告警链路三个维度,拆解如何构建一个覆盖全生命周期的PSI监控方案。

2.1 整体架构:三层监控模型

因子库PSI监控体系采用“采集层 → 计算层 → 决策层”三层架构,确保从原始数据到最终告警的端到端闭环。

架构设计原则: 分层解耦、实时与离线并行、阈值可配置、告警可追溯。
层级 核心组件 职责说明 技术选型示例
采集层 数据管道、日志收集器 实时/批量采集线上评分分布、特征值分布;记录时间戳与版本号 Kafka、Flume、Spark Streaming
计算层 PSI计算引擎、窗口聚合器 按时间窗口(日/周/月)计算各因子PSI值;支持滑动窗口与累积窗口 Flink、Spark SQL、ClickHouse
决策层 告警规则引擎、阈值管理器 根据预设阈值判断是否触发告警;支持动态阈值与分级告警 Drools、自研规则引擎、Prometheus Alertmanager
因子库PSI监控三层架构 PSI监控三层架构 采集层 数据管道 · 日志收集 · 版本对齐 输入:线上评分/特征分布 → 输出:标准化分布快照 计算层 PSI计算引擎 · 窗口聚合 · 分布对比 输入:分布快照 → 输出:各因子PSI时序值 决策层 告警规则引擎 · 阈值管理器 · 通知分发 输入:PSI时序值 → 输出:告警事件/工单 数据流方向:自下而上

2.2 数据流:从原始分布到PSI指标

数据流是监控体系的“血液循环”。一个完整的数据流包含5个关键环节,每个环节都需要考虑延迟、准确性和容错。

  1. 分布采集: 从线上服务日志或数据库抽取评分/特征的分桶计数,按时间戳 + 模型版本分区存储。
  2. 分布对齐: 将当前分布与基准分布(如训练集分布或上一周期分布)进行分桶对齐,处理缺失桶和零频桶。
  3. PSI计算: 逐桶计算 (实际占比 - 预期占比) * ln(实际占比 / 预期占比),累加得到单因子PSI。
  4. 时序聚合: 按时间窗口(如最近7天滑动窗口)聚合PSI值,生成因子_PSI_时序表。
  5. 阈值判定: 将聚合后的PSI值与预设阈值(如0.1、0.25)比较,输出告警等级。
数据流避坑: 分布对齐阶段容易忽略“零桶”问题。当某个分桶在基准分布中有值但当前分布为0时,建议加一个极小平滑值(如1e-6),避免ln(0)导致计算异常。
PSI监控数据流与告警链路 数据流与告警链路 分布采集 线上日志/DB 分布对齐 桶对齐+平滑 PSI计算 逐桶累加 时序聚合 滑动窗口 阈值判定 规则引擎 告警分发 邮件/企微/工单 告警链路关键节点 1. 数据延迟监控:采集时间戳与计算时间戳差值 > 30min 触发“数据延迟”告警 2. PSI阈值告警:单因子PSI > 0.25 触发“严重漂移”告警;0.1~0.25 触发“关注”告警 3. 连续告警抑制:同一因子连续3次触发同一等级告警,自动升级并通知值班负责人 4. 告警恢复:PSI回落至阈值以下并持续2个窗口,自动发送恢复通知

2.3 告警链路:分级与收敛策略

告警链路的核心目标是“不漏报、不轰炸”。通过分级告警和收敛策略,将有效信息传递给正确的人。

告警等级 PSI阈值范围 通知方式 响应要求 升级条件
INFO(提示) 0.05 ≤ PSI < 0.10 监控看板标记 无需立即处理 持续3个窗口 → 提升为WARN
WARN(关注) 0.10 ≤ PSI < 0.25 邮件 + 企微群消息 24h内分析原因 持续2个窗口 → 提升为CRITICAL
CRITICAL(严重) PSI ≥ 0.25 邮件 + 企微 + 电话 2h内响应并介入 持续1个窗口 → 触发值班负责人
告警收敛要点: 避免“告警风暴”。建议对同一因子在1小时内只发送1次同等级告警;对批量因子同时漂移的情况,合并为一条“批量漂移摘要”告警,而非逐条发送。

2.4 监控体系的关键指标

除了PSI本身,监控体系还需要关注以下元监控指标,确保体系自身健康运行:

  • 数据覆盖率: 实际参与PSI计算的因子数 / 因子库总因子数。低于95%需排查采集链路。
  • 计算延迟P99: 从数据到达采集层到PSI结果可查询的耗时。建议P99 < 10分钟。
  • 告警准确率: 人工确认的有效告警数 / 总告警数。低于80%需调整阈值或规则。
  • 误报率: 误报告警数 / 总告警数。高于20%需优化收敛策略。
最佳实践: 建议在监控看板上同时展示“PSI时序曲线”和“因子分布对比直方图”,帮助分析师快速定位漂移发生的具体分桶。