【问题标题】:Unable to fetch XML Element using XML path config through Logstash xml filter plugin无法通过 Logstash xml 过滤器插件使用 XML 路径配置获取 XML 元素
【发布时间】:2017-02-28 08:58:00
【问题描述】:

我正在从 Kafka 主题中提取一些 XML 文件流,并尝试使用 XML 过滤器插件通过 Logstash 获取 XML 文件的元素之一,但无法这样做;在下面提到细节;

流的 XML 块:

`<?xml v="1.0" enc="UF-8"?> 
   <\ns0:LogRequest xmlns:ns0="http://SOME/URL/SOME.xsd"> 
   <\ns1:Header xmlns:ns1="http://SOME/URL/SOME1.xsd">
   <\ns1:ApplicationID>ABC<\/ns1:ApplicationID>
   <\ns1:ComponentName>XYZ<\/ns1:ComponentName>
   <\ns1:Hostname>MYHOST<\/ns1:Hostname>
   <\ns1:Timestamp>2017-02-27T23:07:44.318+05:30<\/ns1:Timestamp>
   <\ns1:TransactionDomain>Some Domain <\/ns1:TransactionDomain> 
   <\ns1:TransactionType>Some Type<\/ns1:TransactionType>
   <\ns1:Message>Some Message <\/ns1:Message>
   <\ns1:AltKey>\n 
   <\ns1:AltKeyName>LOG<\/ns1:Alt\KeyName>
   <\ns1:AltKeyValue>Some Key <\/ns1:AltKeyValue>\n 
   <\TimeDuration>1488217064317<\/TimeDuration>\n 
   <\Status>Some Status <\/Status>\n 
   <\Audit>true\n<\/ns0:LogRequest>`

我想获取“时间戳”的值并将其保存为新字段但无法这样做,

Logstash.conf:

    filter {

        xml {
          store_xml => "false"
          remove_namespaces => "false"
          source => "message"
          namespaces => {
              "ns0" => "http://SOME/URL/SOME.xsd"
              "ns1" => "http://SOME/URL/SOME1.xsd"
            }
           xpath => [ "/ns0:LogRequest/ns1:Timestamp/text()", "mytime" ]

        }

        mutate {
                                #convert => { "mytime" => "string" }
                                add_field => ["time_stamp", "%{mytime}"]
              }

    }

Expected Output :

"time_stamp" => "2017-02-27T23:07:44.318+05:30"

Actual/Present Output : 
"time_stamp" => "%{mytime}"

Any help will be really appreciated !!

【问题讨论】:

    标签: xml logstash


    【解决方案1】:

    好吧,我通过以下步骤解决了这个问题,

    • 从 Logstash 处理中删除了命名空间;
    • 更新了 Timestamp 元素的 X 路径;

    所以现在我的配置看起来像,

    filter {
    
    xml {
      store_xml => "false"
      remove_namespaces => "true"
      source => "message"
       xpath =>["//[localname()='LogRequest']/*/[localname()='Timestamp']/text()", "mytime" ]
    
         }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多