I have log lines as belows:
11:05:44,924 DEBUG DataFeed:? - Data received: data=TextMessage={
Header={ JMSMessageID={ID:someId} JMSDestination={Topic[someTopic]}
JMSReplyTo={null} JMSDeliveryMode={NON_PERSISTENT}
JMSRedelivered={false} JMSCorrelationID={null} JMSType={null}
JMSTimestamp={Tue Aug 30 11:05:44 BST 2016} JMSExpiration={Tue Aug 30
11:06:44 BST 2016} JMSPriority={4} } Properties={ ACTION={String:ADD}
XT_S_USER={String:someString} APPNAME={String:someFeeName}
XT_BOOK={String:someBook} } Text={..XML Tags..} }
I am trying to apply XML filter on the above log line which fails with:
Error parsing xml with XmlSimple {:source=>"message", :value=>"<XMLMessage was here>", :exception=>#<NoMethodError: undefined method
start_with?' for nil:NilClass>, :backtrace=>["logstash/2.3.2/common/vendor/bundle/jruby/1.9/gems/logstash-core-event-2.3.2-java/lib/logstash/event.rb:130:in []='", "logstash/2.3.2/common/vendor/bundle/jruby/1.9/gems/logstash-filter-xml-2.1.4/lib/logstash/filters/xml.rb:166:in
filter'", "logstash/2.3.2/common/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/filters/base.rb:151:in multi_filter'", "org/jruby/RubyArray.java:1613:in
each'", "logstash/2.3.2/common/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/filters/base.rb:148:in multi_filter'", "(eval):41:in
filter_func'", "logstash/2.3.2/common/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/pipeline.rb:267:in filter_batch'", "org/jruby/RubyArray.java:1613:in
each'", "org/jruby/RubyEnumerable.java:852:in inject'", "logstash/2.3.2/common/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/pipeline.rb:265:in
filter_batch'", "logstash/2.3.2/common/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/pipeline.rb:223:in worker_loop'", "logstash/2.3.2/common/vendor/bundle/jruby/1.9/gems/logstash-core-2.3.2-java/lib/logstash/pipeline.rb:201:in
start_workers'"], :level=>:warn}`
Logstash Config:
input {
beats {
port => 5066
}
}
filter {
xml {
source => "message"
}
}
output {
elasticsearch {
hosts => ["localhost:9200"]
manage_template => false
index => "indexNameHere"
}
}
Also certain lines do not have XML content I want to send them under grok filter how should i achieve this?
TIA!