特征缺失类型分类
在巡检告警系统中,特征缺失并非单一现象。不同缺失类型对数据质量、模型训练和告警阈值计算的影响截然不同。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% 时,阈值置信度降级,告警级别提升一级
2.3 随机缺失与非随机缺失
从统计学角度,缺失机制决定了数据填充方法的合法性。
随机缺失(MCAR):数据缺失的概率与任何观测值或未观测值无关。例如,由于采集器随机内存抖动导致个别数据点丢失。此时缺失数据可以安全地使用均值、中位数或前向填充法补全,不会引入系统性偏差。
非随机缺失(MNAR):数据缺失的概率与未观测到的真实值相关。例如,当 CPU 负载超过 95% 时,采集器因资源耗尽而无法上报数据。此时缺失的数据点恰恰是高负载的极端值。如果直接使用均值填充,会严重低估真实负载,导致告警阈值偏低,漏报风险急剧上升。
告警阈值陷阱:非随机缺失是 SRE 巡检中最危险的缺失类型。当缺失数据集中在高负载、高延迟、高错误率区间时,任何填充方法都会导致阈值偏移。建议对此类缺失直接标记为“不可信数据”,并触发补充采样或人工确认流程。
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 人工介入判断。直接使用非随机缺失数据计算阈值,可能导致告警系统在真实故障时保持沉默。