首页 文章

如何使用logstash过滤器解析xml文件

提问于
浏览
1

我正在尝试使用elasticsearch和logstash索引一些简单的XML文件 . 到目前为止,我已经设置了ELK-stack和logstash-forwarder . 我试图使用documentation来设置一个xml过滤器,但我似乎无法正确使用它 .

我的XML格式很顺利;

<Recording>

  <DataFile description="desc" fileName="test.wav" Source="mic" startTime="2014-12-12_121212" stopTime="2014-12-12_131313"/>

</Recording>

我只想让每个文件成为elasticsearch中的一个条目,并且DataFile-tag中的每个参数都是我可以搜索的键值 . 由于文档让我无处可去,这样的滤镜怎么样?我也尝试使用thisthis的答案,没有任何运气 .

1 回答

  • 1

    在logstash-forwarder配置中添加以下内容,并相应地更改logstash服务器IP,证书路径和日志路径 .

    {
    "network": {
    "servers": [ "x.x.x.x:5043" ],
    "ssl ca": " / cert/server.crt",
    "timeout": 15
    },
    "files": [
    {
    "paths": [
    "D:/ELK/*.log"
    ],
    "fields": { "type": "log" }
    }
    ]
    }
    

    在logstash服务器配置中添加以下输入插件 . 相应地更改证书,密钥路径和名称 .

    lumberjack {
      port => 5043
      type => "lumberjack"
      ssl_certificate => " /cert/server.crt"
      ssl_key => "D:/ELK/logstash/cert/server.key"
      codec => multiline {
                 pattern => "(\/Recording>)"
                 what => "previous"
                negate => true
                }
    }
    

    现在在logstash过滤器部分下添加下面的grok过滤器

    grok {
            match   =>  ["message", "(?<content>(< Recording(.)*?</Recording>))"]
            tag_on_failure => [ ]
    
            }
    

    最后在logstash输出会话中添加

    elasticsearch {
                        host => "127.0.0.1"
                        port => "9200"
                        protocol => "http"
                        index => "Recording-%{+YYYY.MM.dd}"
                        index_type => "log"
                    }
    

    现在,当您将xml消息添加到日志文件中时 . 每个条目都将被处理并存储在您的弹性搜索服务器中 .

    谢谢,

相关问题