elasticsearch Logstash将日期转换为有效的joda时间(@timestamp),elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch Logstash将日期转换为有效的joda时间(@timestamp),elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch Logstash将日期转换为有效的joda时间(@timestamp)

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只是添加了自己的时间戳 代码: 我需要这

希望有人能帮助我

我有一个关于logstash的问题。我成功地申请了以下日期:2013年6月26日:14:00:26+0200

接下来,我想将这个日期用作事件的@timestamp。如您所知,logstash会自动添加时间戳

替换logstash正在添加的时间戳可以由日期过滤器完成。我添加了以下日期过滤器:match=>[“date”,“dd/MMM/YYYY:HH:mm:ss Z”]

但是,出于某种原因,这是行不通的。当我测试它时,我看到logstash只是添加了自己的时间戳

代码:

我需要这样做,以便我可以向elasticsearch添加事件


提前谢谢

我使用了以下方法:

# 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"
}