我正在解析以前在我的localhost中加载的日志,我希望将每行中的事件日期字段作为时间戳,但kibana只能将其作为字符串获取。
示例: 我有这个活动
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 :(得分:0)
您必须使用date filter将字符串转换为时间戳。
date {
match => [ "logdate", "yyyy/MM/dd HH:mm:ss"]
}
这会尝试使用此日期模式logdate
解析yyyy/MM/dd HH:mm:ss
字段,如果成功,则会将@timestamp
字段替换为结果。您可以使用target
选项为解析日期指定另一个字段。