【发布时间】:2019-08-17 07:59:54
【问题描述】:
我正在 deviantony/docker-elk 映像上运行最新的 ELK 堆栈 6.6。我有以下 XML 文件,我尝试将其解析为 ES JSON 对象:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<ChainId>7290027600007</ChainId>
<SubChainId>001</SubChainId>
<StoreId>001</StoreId>
<BikoretNo>9</BikoretNo>
<DllVerNo>8.0.1.3</DllVerNo>
</root>
我的配置文件是:
input {
file {
path => "/usr/share/logstash/logs/example1.xml"
type => "xml"
start_position => "beginning"
sincedb_path => "/dev/null"
codec => multiline {
pattern => "<?xml version"
negate => true
what => "previous"
}
}
}
filter {
xml {
source => "message"
store_xml => false
xpath => [ "/root/ChainId/text()", "ChainId" ]
}
}
output {
elasticsearch {
hosts => "elasticsearch:9200"
index => "xml_index"
manage_template => false
}
}
我的 Logstash 输出是:
{ logstash_1 | "@timestamp" => 2019-03-26T06:45:27.941Z, logstash_1 | “标签” => [ logstash_1 | [0]“多行” logstash_1 | ], logstash_1 | "主机" => "751b3a8bf341", logstash_1 | "链ID" => [], logstash_1 | "message" => "\r\n消息下的 XML 正文显示为带有转义和 \r\n 的字符串。 XPathChainId 字段返回空数组。我也尝试使用其他 XML 文件,结果相同。
更新:
在尝试删除 \r\n 后仍然没有得到 XPath 解析的字段。我的输出是:
logstash_1 | "message" => "7290027600007 001 001 9 8.0.1.3 ", logstash_1 | "StoreId" => [], logstash_1 | "BikoretNo" => [], logstash_1 | "链ID" => [], logstash_1 | “类型” => “xml”, logstash_1 | “标签” => [ logstash_1 | [0]“多行” logstash_1 | ], logstash_1 | "@timestamp" => 2019-03-27T20:51:09.575Z, logstash_1 | "DllVerNo" => [], logstash_1 | "路径" => "/usr/share/logstash/logs/example1.xml", logstash_1 | "主机" => "751b3a8bf341", logstash_1 | "子链 ID" => [], logstash_1 | “@版本”=>“1” logstash_1 | }
【问题讨论】:
标签: xml elasticsearch logstash elastic-stack