Logstash 日志存储:解析日期失败

Logstash 日志存储:解析日期失败,logstash,Logstash,总结: 调试输出中显示的logstash->elasticsearch-->解析日期失败 日志文件中的事件包含@timestamp字段(格式:2014-06-18T11:52:45.370636+02:00) 事件实际上被处理为elasticsearch,但显示“解析失败”错误 版本: 日志存储1.4.1 弹性搜索1.20 我做错什么了吗 我有包含以下事件的日志文件: {"@timestamp":"2014-06-18T11:52:45.370636+02:00","Level":"Info",

总结:
调试输出中显示的logstash->elasticsearch-->解析日期失败
日志文件中的事件包含@timestamp字段(格式:2014-06-18T11:52:45.370636+02:00)
事件实际上被处理为elasticsearch,但显示“解析失败”错误

版本:
日志存储1.4.1
弹性搜索1.20

我做错什么了吗

我有包含以下事件的日志文件:

{"@timestamp":"2014-06-18T11:52:45.370636+02:00","Level":"Info","Machine":"X100","Session":{"MainId":0,"SubId":"5otec"},"Request":{"Url":"http://www.localhost:5000/Default.aspx","Method":"GET","Referrer":"http://www.localhost:5000/Default.aspx"},"EndRequest":{"Duration":{"Main":0,"Page":6720}}}
我使用此日志存储配置:

input {
  file {
    path => "D:/testlogs/*.log"
    codec => "json"
    start_position => [ "beginning" ]
  }
}
filter {
  date { 
    match => [ "@timestamp", "ISO8601" ]
    }
}
output {
  stdout { 
    codec => json 
    }
  elasticsearch {
    protocol => http
    host => "10.125.26.128"
  }
}
当我对日志文件中的事件使用此配置运行logstash时,会出现以下错误:

[33mFailed parsing date from field {:field=>"@timestamp", :value=>"2014-06-18T12:18:34.717+02:00", :exception=>#<TypeError: cannot convert instance of class org.jruby.RubyTime to class java.lang.String>
[33M未能从字段{:field=>“@timestamp”,:value=>“2014-06-18T12:18:34.717+02:00”解析日期,异常=>#
现在的问题是,实际上事件是在elasticsearch中导入的,但我看到了这些错误。

这可能是一个问题,还是这些解析失败的错误被忽略了?

您的日志已经是json格式的,因此不需要解析日期。 您可以使用json过滤器解析所有字段和值

例如,使用此配置:

input {
    file {
       path => "D:/testlogs/*.log"
       codec => "json"
    }
}

filter {
    json {
        source => "message"
    }
}

output {
    stdout {
            codec => rubydebug
    }
}
我可以成功解析您的日志。输出为:

{
"@timestamp" => "2014-06-18T17:52:45.370+08:00",
     "Level" => "Info",
   "Machine" => "X100",
   "Session" => {
    "MainId" => 0,
     "SubId" => "5otec"
},
   "Request" => {
         "Url" => "http://www.localhost:5000/Default.aspx",
      "Method" => "GET",
    "Referrer" => "http://www.localhost:5000/Default.aspx"
},
"EndRequest" => {
    "Duration" => {
        "Main" => 0,
        "Page" => 6720
    }
},
  "@version" => "1",
      "host" => "ABC",
      "path" => "D:/testlogs/*.log"
}
我还尝试过文件输入中的
codec=>json
不起作用,但在stdin输入中起作用。也许这是logstash中的一个bug


希望这能对您有所帮助。

谢谢您的回复。奇怪的是,如果我使用您的设置,屏幕上就不会出现任何标准输出。我似乎找不到任何逻辑解释为什么我没有得到您的输出。我用我自己的事件创建了一个test.log,就像我的问题一样。将其保存在D:/testlogs中。使用您的配置并运行logstash.I还尝试将日志文件保存为UTF-8和ANSI,删除了codec=>json然后它工作了,但不总是。使用not always,我的意思是运行logstash->output ok。再次终止logstash run->no output。再次感谢您的anwser。我再次尝试了您的配置,它工作了。我之前遇到的问题,可能是sincedb功能。因此,当我将自添加到/dev/null时,它工作了好的,谢谢。