无法使用Logstash过滤器解析xml输入 [英] can't parse xml input with logstash filter
本文介绍了无法使用Logstash过滤器解析xml输入的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试解析以下xml:
Hi I'm trying to parse the following xml :
<msg time='2014-08-04T14:36:02.136+03:00' org_id='oracle' comp_id='rdbms'
msg_id='opistr_real:953:3971575317' type='NOTIFICATION' group='startup'
level='16' host_id='linux4_l' host_addr='127.0.0.1'
pid='8986' version='1'>
<txt>Starting ORACLE instance (normal)
</txt>
</msg>
使用此配置:
input {
stdin {
type => "stdin-type"
}
}
filter { multiline {
pattern => "^\s|</msg>|^[A-Za-z].*"
what => "previous"
}
xml {
store_xml => "false"
source => "message"
xpath => [
"/msg/@client_id", "msg_client_id",
"/msg/@host_id", "msg_host_id",
"/msg/@host_addr", "msg_host_addr",
"/msg/@level", "msg_level",
"/msg/@module", "msg_module",
"/msg/@msg_id", "msg_msg_id",
"/msg/@pid", "msg_pid",
"/msg/@org_id", "msg_org_id",
"/msg/@time", "msg_time",
"/msg/@level", "msg_level",
"/msg/txt/text()","msg_txt"
]
}
date {
match => [ "msg_time", "ISO8601" ]
}
mutate {
add_tag => "%{type}"
}
}
output { elasticsearch { host => localhost } stdout { codec => rubydebug } }
但是当我运行logstash时,出现以下错误:
but when i run logstash I get the following error :
{:timestamp=>"2014-09-04T17:28:39.428000+0300", :message=>"Exception in filterworker", "exception"=>#<NoMethodError: undefined method `split' for ["msg_level", "msg_level"]:Array>, "backtrace"=>["/opt/logstash/lib/logstash/util/accessors.rb:19:in `parse'", "/opt/logstash/lib/logstash/util/accessors.rb:15:in `get'", "/opt/logstash/lib/logstash/util/accessors.rb:59:in `store_path'", "/opt/logstash/lib/logstash/util/accessors.rb:55:in `lookup'", "/opt/logstash/lib/logstash/util/accessors.rb:34:in `get'", "/opt/logstash/lib/logstash/event.rb:127:in `[]'", "/opt/logstash/lib/logstash/filters/xml.rb:117:in `filter'"
.... "/opt/logstash/lib/logstash/pipeline.rb:143:在`start_filters'中"],:level =>:error} {:timestamp =>"2014-09-04T17:30:47.805000 + 0300",:message =>收到中断.正在关闭管道.",:level =>:warn}
.... "/opt/logstash/lib/logstash/pipeline.rb:143:in `start_filters'"], :level=>:error} {:timestamp=>"2014-09-04T17:30:47.805000+0300", :message=>"Interrupt received. Shutting down the pipeline.", :level=>:warn}
推荐答案
我发现我在xpath/msg @ level apper上重复解析两次的问题.
I've found my problem I've duplicated parsing on xpath , /msg@level apper twice .
这篇关于无法使用Logstash过滤器解析xml输入的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文