Logstash converting date to valid joda time (@timestamp)
希望有人能帮助我!
我有一个关于logstash的问题。 我成功完成以下日期:26 / Jun / 2013:14:00:26 +0200
接下来,我希望将此日期用作事件的@timestamp。 如您所知,logstash自动添加时间戳。
可以通过日期过滤器替换logstash添加的时间戳。 我添加了以下日期过滤器:match => [" date"," dd / MMM / YYYY:HH:mm:ss Z"]
但是,由于某种原因,这是行不通的。 当我对其进行测试时,我看到logstash只是添加了自己的时间戳。
码:
1 2 3 4 5 6 7 8 9 | grok { type =>"log-date" pattern =>"%{HTTPDATE:date}" } date{ type =>"log-date" match => ["date","dd/MMM/YYYY:HH:mm:ss Z"] } |
我需要这样做,因此我可以将事件添加到elasticsearch中。
提前致谢!
我使用以下方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | # strip the timestamp and force event timestamp to be the same. # the original string is saved in field %{log_timestamp}. # the original logstash input timestamp is saved in field %{event_timestamp}. grok { patterns_dir =>"./patterns" match => ["message","%{IRODS_TIMESTAMP:log_timestamp}" ] add_tag =>"got_syslog_timestamp" add_field => ["event_timestamp","%{@timestamp}" ] } date { match => ["log_timestamp","MMM dd HH:mm:ss" ] } mutate { replace => ["@timestamp","%{log_timestamp}" ] } |
我现在的问题是,即使替换了@timestamp,我也要先将其转换为与ISO8601兼容的格式,以便其他程序在解析它时不会遇到问题,例如" event_timestamp"中的时间戳:
1 2 3 4 5 6 7 8 9 10 11 12 | "@timestamp" =>"Mar 5 14:38:40", "@version" =>"1", "type" =>"irods.relog", "host" =>"ids-dev", "path" =>"/root/logstash/reLog.2013.03.01", "pid" =>"5229", "level" =>"NOTICE", "log_timestamp" =>"Mar 5 14:38:40", "event_timestamp" =>"2013-09-17 12:20:28 UTC", "tags" => [ [0]"got_syslog_timestamp" ] |
由于您具有年份信息,因此可以轻松进行转换...就我而言,我将不得不从"路径"(文件名)属性中解析出它……但是,仍然似乎没有convert_to_iso8901 => @ 时间戳指令。
希望这对您的问题有所帮助! :)
上面的答案只是解决方法,请尝试在代码中添加
如果未添加,则将使用默认的平台区域设置语言(西班牙语,法语或其他语言)来解析日期的工作日和月份名称,这就是为什么它不起作用的原因(因为您的日志为英文)。
1 2 3 4 5 | date{ type =>"log-date" match => ["date","dd/MMM/YYYY:HH:mm:ss Z"] locale =>"en" } |