2016-09-27 787 views
0

我解析了一个以前在我的本地主机中加载的日志,我想将每一行中的事件日期字段作为时间戳,但kibana只能将它作为一个字符串获取。如何在logstash上添加新的时间戳字段?

实施例: 我有这样的事件

2016/09/27 13:33:49.701 GMT(09/27 15:33:49 +0200) INFO  BILLINGGW ConvergysDelegate.getCustomer(): Calling getCustomerFromCache: 0001:606523 

它被装载在2016年9月27日,16:04:53.222,但LOGDATE字段(事件日期)是:2016/09/27 13:33:49.701

在logstash过滤我定义:

(?<logdate>%{NUMBER:year}/%{NUMBER:month}/%{NUMBER:day} %{HOUR:hday}:%{MINUTE:min}:%{SECOND:sec}) %{GREEDYDATA:result} 

我也被证明有:

(?<logdate>%{YEAR:year}/%{MONTHNUM:month}/%{MONTHDAY:day} %{HOUR:hday}:%{MINUTE:min}:%{SECOND:sec}) %{GREEDYDATA:result} 

而且kibana像串读LOGDATE。我怎么能得到这个kibana可以读它作为时间戳?

我只能用日期证明:

(?<logdate>%{NUMBER:year}/%{NUMBER:month}/%{NUMBER:day}) 

和Kibana解释得当像时间戳,但问题是如何正确的小时,​​分​​钟和秒添加到LOGDATE领域。

任何人都可以帮助我吗?

此致敬礼。

回答

0

您必须使用date filter从字符串转换为时间戳。

date { 
    match => [ "logdate", "yyyy/MM/dd HH:mm:ss"] 
} 

这将尝试与此日期模式yyyy/MM/dd HH:mm:ss解析logdate领域,如果成功,将结果替换@timestamp领域。您可以使用target选项为解析日期指定另一个字段。

+0

Thanks @baudsp!这是我解决方案的一部分。我需要为数据过滤器添加更多行:** locale =>“ISO8601”**和** target =>“mytimestamp”**。 – ELosada