0

我有一个流利的客户端,它将日志转发到 logstash,最后通过 Kibana 进行查看。我尝试了几种配置来将时间戳更新为日志文件中的时间条目。但是,这样做没有运气。

这是我的 fluentd 配置文件的解析部分,

<parse>
  # @type none
  @type multiline
  format_firstline /^\[([\w]+)\s*\]\s*(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})/
  format1 /\[(?<loglevel>[\w]+)\s*\]\s*(?<logtime>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\s*\[(?<thread>[^\]]*)\]\s*(?<class>[^ ]*)\s+-\s*(?<message>.*)/
  time_key logtime
  time_type string
  time_format %Y-%m-%d %H:%M:%S
  keep_time_key true
</parse>

为什么这个配置不起作用?kibana 中的时间戳仍然是 fluent_time 而不是我的日志时间。

我还尝试在“匹配”中的“注入”部分添加 time_key,如下所示,这也不起作用。参考 -如何使用 fluent 为弹性搜索添加时间戳和密钥

<inject>
   time_key @logtime
   time_type string
   time_format %Y-%m-%d %H:%M:%S
</inject>

除此之外,我还尝试了下面给出的 record_transformer,但也没有用。参考 - https://docs.fluentd.org/v0.12/articles/filter_record_transformer#renew_time_key-(可选,-string-type)

<filter pattern>
   @type record_transformer
   <record>
     renew_time_key ${record["logtime"]} 
   </record>
</filter> 

在每次尝试中,我也尝试过使用和不使用“@”作为 logtime。我也尝试在“源”部分中添加 time_key 组件,但这也不起作用。

Fluentd 和 ruby​​ 版本 - fluentd-1.0.2 ruby​​="2.4.2"

在这一点上,我难住了。我错过了什么?任何建议表示赞赏!

4

1 回答 1

-1

老实说,不确定这是如何解决问题的,但是,在 parse 中添加下面的注入标记以及我的 time_key 配置似乎已经解决了问题。时间戳基于现在 Kibana 中的 logtime。

<inject>
  time_key @timestamp
</inject>
于 2018-11-08T19:36:01.767 回答