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时,它工作了好的,谢谢。