我正在用一个称为origin_timestamp
的唯一时间字段将json结构的日志消息写到stdout。
我使用Fluent Bit和尾部输入插件收集日志消息,该插件使用解析器docker
。解析器使用Time_Key time
配置。
有关Time_Key
的文档说:
如果日志条目提供带有时间戳记的字段,则此选项 指定该字段的名称。
由于time
!= origin_timestamp
,我本来以为Fluent Bit不会添加任何时间字段,但是最终以Elasticsearch结尾的日志消息具有以下时间字段:
origin_timestamp
)origin_timestamp
time
@timestamp
(有时甚至多次)。 @timestamp
字段可能是我在Fluent Bit中使用的es输出插件添加的,但是 time
字段到底来自哪里?
答案 0 :(得分:2)
我在Fluent位问题跟踪器Duplicate @timestamp fields in elasticsearch output中遇到了以下问题,这听起来可能与您所讨论的问题有关。
我已经深深地链接到其中一位贡献者的特定评论,其中概述了两种可能的解决方案,具体取决于您是使用他们的Kubernetes Filter插件,还是直接将日志导入Elasticsearch。
希望这会有所帮助。
答案 1 :(得分:0)
docker json插件添加的时间字段。 Docker日志记录插件默认会从您的stdout中获取日志并以以下格式记录到文件中:
{"log":"Log line is here\n","stream":"stdout","**time**":"2019-01-01T11:11:11.111111111Z"}
因此,您可能会在最终日志中观察到三个时间戳:
Ref-https://docs.docker.com/config/containers/logging/json-file/