如何在logstash中解析XML日志文件

时间:2015-05-08 17:44:02

标签: logstash kibana kibana-4 logstash-grok

我有一个示例日志文件,如下所示

<error message="file missing">
      <value>01</value>
 </error>
<dealer id="01" data="some text">Approved</dealer>

我想解析上面的代码,并希望在Kibana中显示数据,如@message="file missing", @value="01", @dealer_id="01", @dealer_data = "some text"

我是ELK框架的新手。我尝试过使用xpath过滤器,但如果有人帮我提供示例代码就没有运气,这意味着它会有很大的帮助。

2 个答案:

答案 0 :(得分:5)

可以使用xpath获取数据,如下所示:

    xml {
      source => "message"
      store_xml => false
      xpath => {
        "//site/text()" => "site"
        "//dateCreation[1]/text()" => "date_creation"
        "//commande:Tiers[1]/identifiant/text()" => "tiers_id"
      }
    }

然后xpath的每个结果都存储在目标字段中 您可以替换/删除事件的现有字段,以仅保留所需的数据。

答案 1 :(得分:0)

如果您的样本是一条消息,则需要一个容器,例如:

<foo>
  <error message="file missing">
    <value>01</value>
  </error>
  <dealer id="01" data="some text">Approved</dealer>
<foo>

这个xml {}过滤器会处理它(注意“消息”而不是你的“@message”)

filter {
  xml {
   source => "message"
  } 
}