【问题标题】:XML parsing with Logstash使用 Logstash 解析 XML
【发布时间】:2016-05-21 13:17:49
【问题描述】:

我是 ELK 堆栈的新手,正在尝试使用 Logstash 处理以下示例 XML 文件

<Book:Body>
    <Book:Head>
        <bookname>Book:Name</bookname>
            <ns:Hello xmlns:ns="www.example.com">
                <ns:BookDetails>
                    <ns:ID>123456</ns:ID>
                    <ns:Name>ABC</ns:Name>
                </ns:BookDetails>
        </ns:Hello xmlns:ns="www.example.com">
    </Book:Head>
</Book:Body>

我正在使用以下配置来处理数据:

input{ 
        file{ 
                path =>"/opt/data/book3.xml"
                                codec => multiline { 
                                pattern =>"<Book:Body>" 
                                negate => "true" 
                                what => "previous"} 
        }
} 

filter { 

                xml { 
                        store_xml => "false" 
                        source => "message" 
                        remove_namespaces => "true" 

                       xpath => [ 
                "/Body/Head/Hello/BookDetails/ID/text()", "ID", 
                "/Body/Head/Hello/BookDetails/Name/text()", "Name" 
                ] 
                    } 

                mutate { 
                        add_field => ["IDIndexed", "%{ID}"] 
                        add_field => ["NameIndexed", "%{Name}"] 
                        } 
} 
output{ 
        elasticsearch {hosts=>"localhost"} 
                stdout { codec => rubydebug } 
        }

我已为 Logstash 启用详细模式,并且没有显示错误,但输出在以下点停止

Starting pipeline {:id=>"main", :pipeline_workers=>1, :batch_size=>125, :batch_delay=>5, :max_inflight=>125, :level=>:info}
Pipeline main started

我已确保该文件只被读取一次

感谢您对此的任何帮助

【问题讨论】:

  • 检查您的 XPath。它没有任何命名空间

标签: logstash elastic-stack logstash-configuration


【解决方案1】:

使用多行过滤器和 XML 有点棘手,而且不是很稳定。我建议保持简单,确保文件中没有新行,然后尝试使用 XML 过滤器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-14
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多