0

我正在用一个时间字段将 json 结构化日志消息写入标准输出,称为origin_timestamp.

我使用 Fluent Bit 和尾部输入插件收集日志消息,该插件使用 parser docker。解析器配置了Time_Key time.

关于的文档Time_Key说:

如果日志条目提供带有时间戳的字段,则此选项指定该字段的名称。

由于time!= origin_timestamp,我原以为 Fluent Bit 不会添加时间字段,但是最终在 Elasticsearch 中的日志消息具有以下时间字段:

  • origin_timestamp在包含原始日志消息的字段日志中)
  • origin_timestamp
  • time
  • @timestamp(有时甚至多次)。

@timestamp字段可能是由我在 Fluent Bit 中使用的 es 输出插件添加的,但time字段到底是从哪里来的?

4

2 回答 2

2

我在 Fluent-bit 问题跟踪器中遇到了以下问题,Duplicate @timestamp fields in elasticsearch output,这听起来可能与您的问题有关。

我已经深度链接到其中一位贡献者的特定评论,其中概述了两种可能的解决方案,具体取决于您是使用他们的 Kubernetes 过滤器插件,还是直接将日志摄取到 Elasticsearch 中。

希望这可以帮助。

于 2019-09-10T12:13:23.403 回答
1

docker json 插件添加的时间字段。默认情况下,Docker 日志插件从您的标准输出中获取日志并记录到以下格式的文件中:

{"log":"Log line is here\n","stream":"stdout","**time**":"2019-01-01T11:11:11.111111111Z"}

因此,您可能会在最终日志中观察到三个时间戳:

  1. 由您添加(origin_timestamp)
  2. 由 docker 驱动程序添加(时间)
  3. 由流利的位插件(@timestamp)添加

参考 - https://docs.docker.com/config/containers/logging/json-file/

于 2019-11-20T09:27:38.767 回答