日志归一化解决什么
归一化是把不同厂商、不同格式的日志映射成统一字段模型的过程:时间戳、源与目的地址端口、动作、规则标识、设备标识等。厂商 A 写 policy=allow,厂商 B 写 Action: Permitted,说的其实是同一件事;不先归一,就无法跨设备统计、关联和自动处置。字段模型一旦定下来,报表与告警规则都能复用。
统一字段模型
| 时间 | timestamp(统一为标准格式并明确时区) |
|---|---|
| 设备 | device(设备名或资产编号,便于回查原始日志) |
| 五元组 | src_ip、dst_ip、src_port、dst_port |
| 动作 | action(permit/deny/drop/reset 等有限取值) |
| 规则 | rule(规则名或编号,缺失时留空并标注) |
| 常用工具 | Logstash、syslog-ng 过滤器、自研解析服务 |
典型使用场景
- 多厂商设备混用时做统一报表与趋势统计
- 把网络侧拒绝日志与主机侧日志按地址和时间合并关联
- 自动化处置:解析出源地址后才能驱动封禁脚本或编排剧本
- 合规报表:按统一字段统计高危事件数量与处置率
- 更换日志平台时复用字段模型,减少报表与规则重建工作
字段映射示意
字段映射示意
厂商 A:src=192.168.1.10 dst=10.0.0.5 policy=allow # 原始格式
timestamp: 2026-10-13T02:14:33+08:00 # 统一时间与时区
device: fw-edge-01 # 设备标识
src_ip: 192.168.1.10 # 来源地址
dst_ip: 10.0.0.5 # 目的地址
action: permit # allow/permitted/pass 归一为 permit
rule: policy-100 # 保留规则标识便于回溯字段归一的常见差异
| 字段 | 常见差异 | 处理方式 |
|---|---|---|
| timestamp | 格式与时区各不相同 | 先解析为标准格式,再统一换算时区 |
| action | allow/permit/pass/accept 混用 | 建动作字典,收敛为 permit/deny/drop |
| rule | 规则名或编号缺失 | 留空并标注来源,不要用占位符冒充 |
| 端口 | NAT 后端口与真实端口不同 | 同时保留转换前后两组值 |
解析规则要像代码一样管理:进版本库、配样例测试集,设备升级或换版本后回归验证一遍,避免字段变化静默生效。
解析失败的日志不要直接丢弃:原样落到备用索引并触发告警,否则只会在事后发现某类事件从未入库。