用流利的日志时间更新时间戳/ time_key没有运气

时间:2018-11-07 20:46:25

标签: logstash fluentd td-agent

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

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

<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,而不是我的登录时间。

我也尝试过在'match'的'inject'部分中添加time_key,如下所示,这也不起作用。参考-How to add timestamp & key for elasticsearch using 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-(optional,-string-type)

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

在每次尝试中,我也都尝试了是否使用“ @”作为登录时间。我也尝试过在'source'部分中添加time_key组件,但也没有用。

Fluentd和ruby版本-fluentd-1.0.2 ruby​​ =“ 2.4.2”

在这一点上,我很困惑。我想念什么?任何建议表示赞赏!

1 个答案:

答案 0 :(得分:0)

老实说,不确定如何解决此问题,但是在解析中添加下面的inject标签以及我的time_key配置似乎已经成功了。时间戳基于现在的Kibana中的日志时间。

<inject>
  time_key @timestamp
</inject>