Fluent Bit 解析器的 Time_Key 有什么用?
Time_Key 告诉 Fluent Bit 解析器:日志里哪个字段是真实时间戳。不配则用采集时间。配合 Time_Format 指定格式、Time_Keep 保留原字段。本文说明三者关系与配置示例。
Time_Key 指定日志中哪个字段包含真实时间——解析器读到它就把该字段值(按 Time_Format 解析)作为事件时间戳;不配的话,事件时间默认是采集时刻,日志延迟到达时时间线就乱了。
配置示例
日志:{"timestamp": "2024-01-15 10:30:00", "msg": "下单成功"}。此示例未带时区,应按日志实际时区设置 Time_Offset 等选项,不能直接假定为本地时间。
[PARSER]
Name app_json
Format json
Time_Key timestamp
Time_Format %Y-%m-%d %H:%M:%S
解析成功后设置 Fluent Bit 事件时间戳,不会自动在记录中新增 @timestamp 字段;输出端如何命名时间字段取决于插件配置。解析器还需通过 Parsers_File 加载,并由输入/过滤器的 Parser 设置实际引用。
三兄弟参数
| 参数 | 作用 |
|---|---|
Time_Key |
指定时间字段名 |
Time_Format |
解析格式(strptime 风格,并有 Fluent Bit 扩展) |
Time_Keep |
On 时原字段保留在记录里,Off 则解析后删除 |
一般建议 Time_Keep On——保留原字段便于核对。
常见问题(FAQ)
Q:时间格式不对会怎样? 具体行为依解析器、输入及版本而异,不能保证统一回退采集时间;需用无效时间样本检查事件是否保留、丢弃以及实际时间戳。
Q:时区怎么指定? Time_Format 里带 %z;日志无时区信息时用 Time_Offset 参数补偿。