3. 数据采集基础:交易日志、系统指标、业务指标的采集规范与清洗
实时风控巡检的稳定性,首先取决于数据采集的质量。如果采集层出现延迟、丢失或格式错乱,后续的告警阈值计算将失去意义。本章从交易日志、系统指标、业务指标三个维度,定义采集规范与清洗策略,确保进入阈值引擎的数据是“干净且可信的”。
3.1 三类数据源的采集规范
实时风控巡检依赖三类数据:交易日志(事件流)、系统指标(资源与中间件状态)、业务指标(聚合后的风控特征)。三者采集方式与粒度差异显著,需分别制定规范。
| 数据类别 | 采集源 | 推荐协议/格式 | 采集粒度 | 关键字段 |
|---|---|---|---|---|
| 交易日志 | API网关、交易核心服务 | JSON over Kafka / Flume | 单笔交易事件 | 交易ID、时间戳、金额、商户号、设备指纹、风控标签 |
| 系统指标 | 主机、容器、中间件 | Prometheus Exporter / Telegraf | 10s ~ 60s 周期 | CPU使用率、内存占用、GC暂停、QPS、连接数 |
| 业务指标 | 风控引擎、特征平台 | HTTP/gRPC Push 或 Pull | 1min ~ 5min 窗口 | 拒绝率、人工审核率、平均响应耗时、特征缺失率 |
采集规范要点:交易日志必须携带全局唯一 TraceID,用于关联上下游;系统指标必须打上机房、集群、实例标签;业务指标必须包含统计窗口的起止时间,避免因数据延迟导致窗口错位。
3.2 数据清洗:从原始日志到可度量指标
原始数据在进入阈值计算之前,必须经过清洗层。清洗的目标是消除“脏数据”对阈值的干扰,避免因异常点导致告警阈值偏移。
3.2.1 清洗规则清单
- 去重:基于交易ID或指标唯一键,在窗口内去重,防止重复上报导致指标虚高。
- 空值填充:对于缺失的数值型指标,采用“前值填充”或“默认值(如 -1)”标记,不直接丢弃。
- 异常值截断:对明显超出物理上限的值(如 CPU > 100%、金额为负数)进行截断或标记为无效。
- 时间戳对齐:将乱序到达的日志按事件时间(而非采集时间)重新排序,确保窗口聚合正确。
- 格式标准化:统一时间戳格式为 Unix 毫秒或 ISO 8601,统一金额单位为“分”。
清洗示例:某交易日志中金额字段出现字符串 "12.34元",清洗层需将其转换为整数 1234(单位:分),若转换失败则标记为“格式异常”并写入死信队列,不参与阈值计算。
3.3 采集链路稳定性设计
数据采集链路本身需要具备高可用与容错能力,否则阈值引擎将面临“无数据可算”的风险。下图展示了标准采集链路的架构与关键容错节点。
3.4 采集质量监控与告警
即使采集链路设计再完善,也必须对采集本身进行监控。建议对以下指标设置基础告警,确保数据源“活着且正常产出”:
- 采集延迟:从事件产生到进入清洗层的时间差,超过 30s 触发警告。
- 采集丢失率:单位时间内采集端接收量与源端产出量的比值,丢失率 > 1% 触发告警。
- 清洗异常率:清洗层标记为“格式异常”或“丢弃”的记录占比,超过 5% 需人工介入。
- 数据空洞:连续 2 个采集周期无数据到达,立即触发 P0 告警。
常见陷阱:不要只关注“采集成功”而忽略“采集延迟”。在交易高峰期,Kafka 消费积压可能导致数据延迟 10 分钟以上,此时阈值引擎基于过时数据计算出的告警阈值完全不可用。务必为采集延迟设置独立的告警规则。
3.5 清洗后的数据格式规范
清洗后的数据应统一为结构化的指标事件,便于阈值引擎直接消费。以下是一个清洗后的交易日志示例格式:
{
"event_id": "txn_20250321143000_abc123",
"event_type": "transaction",
"timestamp_ms": 1742562600000,
"fields": {
"amount_cents": 123400,
"merchant_id": "M10086",
"risk_score": 0.87,
"is_approved": true
},
"tags": {
"region": "cn-east",
"cluster": "prod-a",
"version": "v3.2.1"
},
"quality": {
"cleaned": true,
"original_format": "json",
"cleaning_rules_applied": ["dedup", "timestamp_align", "unit_convert"]
}
}
该格式包含元数据(event_id、timestamp)、业务字段(fields)、环境标签(tags)以及清洗记录(quality),确保阈值引擎在计算时能够追溯数据来源与清洗过程。
3.6 采集规范检查清单
在接入新的数据源或调整采集配置时,建议对照以下清单逐项确认:
| 检查项 | 验收标准 | 优先级 |
|---|---|---|
| 数据源是否携带 TraceID | 每条日志/指标可关联到唯一请求链路 | P0 |
| 时间戳是否统一为事件时间 | 采集时间与事件时间分离,窗口聚合基于事件时间 | P0 |
| 采集端是否配置重试与背压 | 网络抖动时自动重试 3 次,背压阈值明确 | P1 |
| 清洗层是否输出死信队列 | 格式异常数据不丢失,可回溯分析 | P1 |
| 采集延迟告警是否已配置 | 延迟 > 30s 触发告警,延迟 > 5min 触发 P0 | P0 |
| 数据格式是否包含 quality 字段 | 清洗记录可追溯,便于排查阈值异常 | P2 |
完成上述采集规范与清洗策略的落地后,阈值引擎将获得稳定、干净的数据输入。下一阶段将基于这些数据,进行告警阈值的统计建模与动态调优。