特征缺失类型分类

在巡检告警系统中,特征缺失并非单一现象。不同缺失类型对数据质量、模型训练和告警阈值计算的影响截然不同。SRE 团队需要根据缺失类型选择不同的巡检策略与补偿算法。以下从统计学与工程实践两个维度,将特征缺失划分为五大类。

2.1 缺失类型总览

缺失类型 英文术语 核心特征 对告警阈值的影响
完全缺失 Complete Missing 特征列全部为空 阈值计算直接失败,需阻断告警
部分缺失 Partial Missing 特征列存在部分有效值 阈值需基于有效样本动态调整
随机缺失 Missing Completely at Random (MCAR) 缺失与数据本身无关 可安全使用均值/中位数填充
非随机缺失 Missing Not at Random (MNAR) 缺失与未观测值相关 填充会引入偏差,需标记告警
结构性缺失 Structural Missing 由系统架构或业务逻辑导致 需配置白名单或默认值规则
SRE 实战提示:在巡检告警阈值配置中,完全缺失和结构性缺失是最容易被误判为系统故障的两类。前者通常需要立即触发告警阻断,后者则可能属于正常业务逻辑,需要提前配置豁免规则。

2.2 完全缺失与部分缺失

完全缺失指某个特征在巡检时间窗口内没有任何有效数据点。常见场景包括:采集器宕机、网络分区导致数据无法上报、数据库表被误删除。此时阈值计算引擎无法获得任何统计量,必须直接进入告警阻断流程。

部分缺失指特征列中存在一定比例的有效值,但存在时间断点或采样空洞。例如,CPU 使用率在 10 分钟内只有 8 分钟的数据,缺失 2 分钟。此时阈值计算可以基于有效样本进行,但需要引入有效样本率作为置信度指标。

巡检阈值公式(部分缺失场景):
有效样本率 = 实际采集点数 / 期望采集点数
当有效样本率 < 80% 时,阈值置信度降级,告警级别提升一级
完全缺失 vs 部分缺失 巡检对比 完全缺失 采集点数 = 0 时间窗口内无任何数据 阈值计算:失败 告警动作:立即阻断 典型原因:采集器宕机 部分缺失 采集点数 > 0 且 < 期望值 存在有效数据点 阈值计算:基于有效样本 告警动作:置信度降级 典型原因:网络抖动丢包 巡检策略:完全缺失走阻断,部分缺失走置信度降级

2.3 随机缺失与非随机缺失

从统计学角度,缺失机制决定了数据填充方法的合法性。

随机缺失(MCAR):数据缺失的概率与任何观测值或未观测值无关。例如,由于采集器随机内存抖动导致个别数据点丢失。此时缺失数据可以安全地使用均值、中位数或前向填充法补全,不会引入系统性偏差。

非随机缺失(MNAR):数据缺失的概率与未观测到的真实值相关。例如,当 CPU 负载超过 95% 时,采集器因资源耗尽而无法上报数据。此时缺失的数据点恰恰是高负载的极端值。如果直接使用均值填充,会严重低估真实负载,导致告警阈值偏低,漏报风险急剧上升。

告警阈值陷阱:非随机缺失是 SRE 巡检中最危险的缺失类型。当缺失数据集中在高负载、高延迟、高错误率区间时,任何填充方法都会导致阈值偏移。建议对此类缺失直接标记为“不可信数据”,并触发补充采样或人工确认流程。
随机缺失 vs 非随机缺失 填充效果对比 随机缺失 (MCAR) 缺失概率与数据值无关 填充方法:均值/中位数/前向填充 偏差风险:低,可安全使用 非随机缺失 (MNAR) 缺失概率与未观测值相关 填充方法:禁止自动填充 偏差风险:高,需标记告警 典型案例:CPU 高负载场景 当 CPU 负载 > 95% 时,采集器因资源耗尽无法上报数据 缺失的数据点全部集中在高负载区间 若使用均值填充,阈值将严重偏低,导致告警漏报

2.4 结构性缺失

结构性缺失并非数据采集故障,而是由系统架构设计或业务逻辑导致的预期性缺失。例如:

  • 微服务架构:A 服务不包含 B 服务的特征字段,在聚合数据时该字段自然为空。
  • 灰度发布:新版本实例上报了新增指标,旧版本实例没有该指标。
  • 业务时段:夜间无用户访问时,某些业务特征(如 QPS)为 0 或空。
  • 地域差异:某些地域的机房不部署特定服务,对应特征长期缺失。

结构性缺失的巡检策略与前三类完全不同:

处理策略 说明 配置示例
白名单豁免 将已知结构性缺失的特征加入巡检白名单 feature_whitelist: ["service_b_latency", "new_metric_v2"]
默认值注入 为结构性缺失字段配置业务默认值 default_value: {"qps_night": 0, "error_rate_no_traffic": 0}
条件巡检 仅在特定条件下检查该特征 if: region == "cn-east" then check feature_x
SRE 最佳实践:建议在巡检告警系统初始化阶段,由架构师和 SRE 共同梳理特征缺失白名单。将已知的结构性缺失提前配置为豁免项,避免每次巡检都产生误报。同时,白名单需要随架构变更定期 review,防止真正的故障被白名单掩盖。

2.5 缺失类型巡检决策矩阵

在实际巡检告警阈值计算中,SRE 需要根据缺失类型选择不同的处理路径。以下决策矩阵可作为巡检引擎的规则引擎配置参考:

缺失类型 是否阻断告警 是否允许填充 推荐填充方法 阈值置信度
完全缺失 是 否 — 0%
部分缺失 否 是(有条件) 前向填充 / 插值 有效样本率
随机缺失 否 是 均值 / 中位数 100%
非随机缺失 是(建议) 否 — 0%
结构性缺失 否 是(业务默认值) 白名单 / 默认值注入 100%
注意:非随机缺失的“阻断告警”并非指触发告警通知,而是指阻断阈值计算流程,并生成一条“数据不可信”的内部告警记录,由 SRE 人工介入判断。直接使用非随机缺失数据计算阈值,可能导致告警系统在真实故障时保持沉默。