日志平台最危险的失败不是明确报错,而是解析规则变化后字段悄悄为空。管道应保留原始事件、标记解析状态,并允许逐步迁移 schema。
优先在源端结构化
{"timestamp":"2025-12-09T10:20:30Z","level":"error","service":"checkout","event":"payment_failed","order_id":"o_123"}
稳定字段使用固定类型和名称,消息字段供人阅读。不要把堆栈、动态键或用户输入展开成无限字段;敏感值应在离开应用边界前脱敏。
管道分层
- 接收层补充来源、环境和采集时间。
- 解析层处理 JSON、多行和兼容版本。
- 规范化层映射公共字段并执行脱敏。
- 路由层按价值决定索引、归档或丢弃。
解析失败事件进入独立索引,并保留 raw_message 与失败原因,避免主流程直接丢弃。
质量指标
parse_success_rate
events_dropped_total{reason="..."}
pipeline_lag_seconds
field_type_conflicts_total
收尾清单
为格式变更准备样例测试和灰度窗口。上线后按服务比较解析成功率、延迟和事件量,异常下降与异常增长都应被调查。