elasticsearch Logstash将日期转换为有效的joda时间(@timestamp)
希望有人能帮助我 我有一个关于logstash的问题。我成功地申请了以下日期:2013年6月26日:14:00:26+0200 接下来,我想将这个日期用作事件的@timestamp。如您所知,logstash会自动添加时间戳 替换logstash正在添加的时间戳可以由日期过滤器完成。我添加了以下日期过滤器:match=>[“date”,“dd/MMM/YYYY:HH:mm:ss Z”] 但是,出于某种原因,这是行不通的。当我测试它时,我看到logstash只是添加了自己的时间戳 代码: 我需要这样做,以便我可以向elasticsearch添加事件elasticsearch Logstash将日期转换为有效的joda时间(@timestamp),elasticsearch,logstash,elasticsearch,Logstash,希望有人能帮助我 我有一个关于logstash的问题。我成功地申请了以下日期:2013年6月26日:14:00:26+0200 接下来,我想将这个日期用作事件的@timestamp。如您所知,logstash会自动添加时间戳 替换logstash正在添加的时间戳可以由日期过滤器完成。我添加了以下日期过滤器:match=>[“date”,“dd/MMM/YYYY:HH:mm:ss Z”] 但是,出于某种原因,这是行不通的。当我测试它时,我看到logstash只是添加了自己的时间戳 代码: 我需要这
提前谢谢 我使用了以下方法:
# 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”中的时间戳:
你可以很容易地转换它,因为你有年份信息。。。在我的例子中,我将不得不从“path”(filename)属性中解析它。。。但仍然没有convert_to_iso8901=>@timestamp指令
希望这对您的问题有所帮助!:) 以上的答案只是一个解决办法!,尝试将
locale=>“en”
添加到代码中。如果不添加,则将使用默认平台语言(西班牙语、法语或其他语言)解析日期工作日和月份名称,这就是它不起作用的原因(因为您的日志是英语的)
我试着通过IRC频道与人们联系,到目前为止,没有人能帮我。我认为这是一个bug。我刚刚用一个额外的grok解决了路径问题:
grok{match=>[“path”,“%{YEAR:log_YEAR}]}
这里有更多关于这个特定示例的指针:在logstash邮件列表上跟进这个主题:这个功能是否会被合并,而不是每次都扮演这个角色?同意。有日期解析错误。我的LANG
env变量被设置为fr\u CA.UTF-8
添加locale=>“en”
启用logstash,以正确解析系统发送的日期格式为英语的日志。
# 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" => "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"
]
date{
type => "log-date"
match => [ "date", "dd/MMM/YYYY:HH:mm:ss Z"]
locale => "en"
}