logstash filter/date插件

从字段中获取到时间用于logstash的@timestamp。
如果不加date,获取到的时间戳为logstash分析文件的时间。

123

添加一段配置:
date {
match => [“timestamp”, “dd/MMM/yyyy:HH:mm:ss Z”]
#默认目标就是@timestamp
target => "@timestamp"
"locale" => "en"
}
然后看一下获取到的时间戳为:

可以看到@timestamp已经改变,但是看到这里相差8个小时,即@timestamp 比我们早了 8 个小时,ELK 的解决方案是在 Kibana 上,读取浏览器的当前时区,然后在页面上转换时间内容的显示。但是在elsaticsearch中存储的数据的时间还是相差8小时的。

123

需要注意的是,如果你的字段结构如下:
"_source": {
"eventdata": {
"ad_time": "20140430 142448",
}}
那么在匹配的时候需要使用全路径,match => [“[eventdata][ad_time]”, “YYYYMMdd HHmmss”]。

几个重要的配置如下:
match:
match => [“timestamp”, “dd/MMM/yyyy:HH:mm:ss Z”]
其中timestamp为正则匹配出的字段,dd/MMM/yyyy:HH:mm:ss Z为匹配的格式。如果匹配不上的话会添加一个"_dateparsefailure"的tag。
例如日志中的时间为10/Jul/2016:07:52:14 +0800,而我的date配置为:
date {
match => [“timestamp”, “dd/MMM/yyyy”]
target => "@timestamp"
"locale" => "en"
}
那么就会报错。
"tags" => [
[0] "192.168.192.120",
[1] "_dateparsefailure"
],
tag_on_failure:
如果匹配不上的时候,添加到tags中的内容,默认为[“_dateparsefailure”],此处我修改一下。”tag_on_failure” => [“date_test”]
来看一下tags
"tags" => [
[0] "192.168.192.120",
[1] "date_test"
],
target:
需要替换的字段,默认为@timestamp。