Elasticsearch 8.x无法识别自定义时间戳,Fluent-Bit配置问题排查
问题分析与修复方案
你的配置存在两个核心问题,导致ES的@timestamp与pw_time不一致:
1. 时间格式解析不匹配
你的日志时间是9位纳秒精度(yyyy-MM-dd HH:mm:ss.sssssssss),但解析器中Time_Format用的%L是毫秒精度(仅3位小数),这会导致Fluent-Bit解析时间时截断或错误转换,生成的内部时间与原始pw_time不符。
修复方法
修改Parsers.conf中的Time_Format,用%N匹配纳秒:
[PARSER] Name pw_tmstp Format regex Regex (?<pw_time>\d{4}-\d{2}-\d{2}\s\d{2}:\d{2}:\d{2}.\d{9})\s+(?<log>.*) Time_Key pw_time Time_Format %Y-%m-%d %H:%M:%S.%N # 替换%L为%N Preserve_Key On Reserve_Data On
2. Elasticsearch输出插件的Time_Key配置错误
ES输出插件的Time_Key参数是用来指定日志记录中已存在的字段名,该字段的值会被用来填充ES的@timestamp。你当前配置的Time_Key @timestamp是ES的目标字段名,而非日志里的pw_time字段,Fluent-Bit找不到对应字段时会默认使用日志的采集时间,导致和pw_time不一致。
修复方法
修改Output插件的Time_Key为解析出的pw_time:
[OUTPUT] Name es ... Time_Key pw_time # 替换@timestamp为pw_time
修改完成后重启Fluent-Bit,即可让ES的@timestamp与pw_time保持一致。
内容的提问来源于stack exchange,提问作者kamokoba
相关产品推荐
相关产品推荐

