当前位置: 首页 > 面试题库 >

如何在Logstash中解析多行XML?

丌官淇
2023-03-14
问题内容

我的s3存储桶中有多行XML文件(约800行),我想在Elasticsearch中对其进行索引,但无法在logstash中对其进行解析。字段有时为空,因此无法手动分析文件。

我的xml看起来像:

<ServiceSalesClosed>
   <ErrorLevel>0</ErrorLevel>
   <ErrorMessage/>
   <LaborSaleCustomerPay>50.00</LaborSaleCustomerPay>`
   ...

在我的输入中,我有配置:

codec => multiline
{ 
pattern => "<ServiceSalesClosed.*"
what => next
}

在我的过滤器中,以下配置:

multiline { 
pattern => ["\t\t"]
what => next
}

问题答案:

好的,看起来好像是问题所在,您对多行编解码器和XML过滤器感到困惑。

我可以建议您设置多行:

codec => multiline {
     pattern => "<ServiceSalesClosed>" 
     negate => "true"
     what => "prevhtml" target="_blank">ious"
}

这将采用 包含此标记的任何行,并将其与以前的行保持一致。这应该将XML节分成可分析的块。您应该在中看到此结果_source

然后在您的 过滤器中

filter {
  xml => {
    source => "message"
    target => "xml_content"
    xpath => [ "//ErrorLevel", "error_level" ] 
  }
}

然后,这应该解析您的XML,在elasticsearch DB中为“
xml_content”创建字段(包括您解析的XML),而且还应专门提取ErrorLevel到它自己的字段中。



 类似资料:
  • 问题内容: 我有一个格式的JSON: 我正在尝试使用logstash解析此JSON。基本上,我希望Logstash输出是可以使用kibana进行分析的key:value对的列表。我认为可以开箱即用。从大量的阅读中,我了解到我必须使用grok插件(我仍然不确定json插件的用途)。但是我无法获得所有领域的事件。我收到多个事件(甚至对于JSON的每个属性都一个)。像这样: 我应该使用多行编解码器还是j

  • 我的登录格式如下,它是一个带有嵌套字段的普通json。 如何使用Filebeat和Logstash正确地解析它,以将Kibana中的所有json字段视为单独的(已解析的)字段?我在“message”字段中遇到了一个问题,它嵌套了json字段。我解析一个在“message”中有字符串的事件没有问题,但不是JSON。 我的尝试: [2019-03-08T09:55:47,084][WARN][logs

  • 问题内容: 我有一个看起来像这样的日志文件(简化) Logline样本 我想提取 数据中 包含的json 并创建两个字段,一个用于名字,一个用于姓氏。但是,我得到的输出是这样的: 如你看到的 那不是我所需要的,我需要在kibana中为firstname和lastname创建字段,但是logstash不会使用json过滤器提取字段。 LogStash配置 非常感谢任何帮助,我敢肯定我错过了一些简单的

  • Logstash 和过去很多日志收集系统比,优势就在于其源码是用 Ruby 写的,所以插件开发相当容易。现在已经有两百多个插件可供选择。但是,随之而来的问题就是:大多数框架都用 Java 写,毕竟做大规模系统 Java 有天生优势。而另一个新生代 fluentd 则是标准的 Ruby 产品(即 Matz’s Ruby Interpreter)。logstash 为什么选用 JRuby 来实现,似乎

  • 问题内容: 首先我要说的是,我在这里已经通过了尽可能多的示例,但仍然无法奏效。我不确定是否是因为日志文件中JSON的复杂性。 我正在寻找示例日志条目,让Logstash读取它,并将JSON作为JSON发送到ElasticSearch。 (简化的)示例如下所示: 我尝试过的Logstash配置无效。到目前为止最接近的是: 我也尝试过: 我只想获取上面发布的JSON并将其“按原样”发送给Elastic

  • 问题内容: 当我在Kibana中看到结果时,我发现JSON中没有字段,而且,该字段仅包含。 是否可以解析json中的字段并将其显示在Kibana中?我有以下配置: 以及以下JSON文件: 问题答案: 是。您需要在配置中添加一个过滤器,如下所示。 在这里的文档中对此进行了很好的描述 编辑 json编解码器似乎不喜欢传入数组。单个元素与此配置一起工作: 输入: Logstash结果: } 现在有了一个