2017-02-24 3 views
0

logstashのXMLフィルタを使用してXMLファイルを解析するときにXMLコンテンツに基づいてフィールドを自動的に定義する方法はありますか?logstashでXMLを解析するときにフィールドを自動的に定義

<?xml version="1.0" encoding="UTF-8"?> 

<bookstore> 

<book category="cooking"> 
    <title lang="en">Everyday Italian</title> 
    <author>Giada De Laurentiis</author> 
    <year>2005</year> 
    <price>30.00</price> 
</book> 

<book category="children"> 
    <title lang="en">Harry Potter</title> 
    <author>J K. Rowling</author> 
    <year>2005</year> 
    <price>29.99</price> 
</book> 

<book category="web"> 
    <title lang="en">XQuery Kick Start</title> 
    <author>James McGovern</author> 
    <author>Per Bothner</author> 
    <author>Kurt Cagle</author> 
    <author>James Linn</author> 
    <author>Vaidyanathan Nagarajan</author> 
    <year>2003</year> 
    <price>49.99</price> 
</book> 

<book category="web"> 
    <title lang="en">Learning XML</title> 
    <author>Erik T. Ray</author> 
    <year>2003</year> 
    <price>39.95</price> 
</book> 

</bookstore> 

私はlogstashが自動的例えばbookstore.book.titleと呼ばれるフィールドを定義しlogstashとそれを解析したいと思います。たとえば

、のは、私が(https://www.w3schools.com/xml/xml_xpath.aspからコピー)以下のXMLを持っているとしましょう"Everyday Italian"という値と "en"という値を持つbookstore.book.title.langというフィールドがあり、これを手動で(xpathを使用して)すべて定義する必要はありません。問題は、さまざまなXMLファイルをさまざまな複雑な構造で解析しようとしているため、各ファイルの構造を個別に定義することができないということです。

答えて

0

問題が見つかりました。 Logstashはxmlファイルの属性をネイティブに分解します(必要なものは実際にはlogstashによってサポートされています)。問題は私のxmlファイルでxml属性の末尾(​​たとえば</book>)が別の行にあるため、log300のために属性<book>が「壊れていました」が原因でxml解析エラーが発生していました。この問題を解決するには、入力に複数行コーデックを追加して、解析する必要がある各属性が1行に完全に配置されるようにする必要がありました。

関連する問題