Logstash多行xml过滤器

时间:2015-09-22 17:54:43

标签: xml-parsing logstash logstash-configuration

我有一个包含

形式事件的日志文件
<ae cat="fixed" ts="2015-09-11T05:57:27.500-07:00">
 <s u="admin"></s>
</ae>

我希望在此文件上使用xml logstash过滤器来解析它并获取@ cat = fixed

filter {
     multiline {
         pattern => '^<ae'
         negate => true
         what => "next"
         }
      xml {
          store_xml => "false"
          source => "message"
          xpath => [ "/ae/@cat", "cat" ]
       }
    }

这只获得事件的第一行。我已经尝试过几种否定“假”或“先前”的东西,但似乎没有任何效果。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

&#34;如果该行不以&lt; ae开头,请将其与下一行保持一致?&#34;

似乎倒退了。

尝试:

 multiline {
     pattern => '^<ae'
     negate => true
     what => "previous"
 }

请注意,它不会发布第一条消息,直到下一条消息开始,因此,为了进行测试,请始终粘贴至少两条消息。

我得到的输出:

{
       "message" => "<ae cat=\"fixed\" ts=\"2015-09-11T05:57:27.500-07:00\">\n <s u=\"admin\"></s>\n</ae>\n",
      "@version" => "1",
    "@timestamp" => "2015-09-22T19:39:12.371Z",
          "host" => "0.0.0.0",
          "tags" => [
        [0] "multiline"
    ]
}