如何使用 logstash 过滤器解析 xml 文件
How to parse a xml-file with logstash filters
我正在尝试使用 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中的每个参数都是我可以搜索的键值。由于文档让我无处可去,这样的过滤器看起来如何?我也曾尝试使用 this and this 中的答案,但没有任何运气。
在您的 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 消息添加到您的日志文件中时。每个条目都将被处理并存储在您的弹性搜索服务器中。
谢谢,
我正在尝试使用 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中的每个参数都是我可以搜索的键值。由于文档让我无处可去,这样的过滤器看起来如何?我也曾尝试使用 this and this 中的答案,但没有任何运气。
在您的 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 消息添加到您的日志文件中时。每个条目都将被处理并存储在您的弹性搜索服务器中。
谢谢,