我想通过XML文件中的Logstash中的Xpath插件提取数据(时间戳和消息),以便仅在kibana中的字段中显示它们。
XML示例:
<log4j:event logger="logger4test" timestamp="1496297008092"><log4j:message>sample message</log4j:message></log4j:event>
Logstash conf:
input {
file {
path => "/opt/logs/*"
start_position => beginning
sincedb_path => "/dev/null"
type => "xml"
}
}
filter {
xml {
remove_namespaces => true
source => "file"
store_xml => false
xpath => [
"//event/@timestamp", "time",
"//message/text()", "lmessage"
]
}
if [type] == "xml" {
mutate {
replace => [
"time", "%{time}",
"lmessage", "%{lmessage}"
]
}
}
}
然而,结果是lmessage是值{lmessage}及时间:%{time}而不是预期的真实消息和时间。
请有人帮帮我吗? Logstash日志中也没有错误。
答案 0 :(得分:0)
我自己解决了这个问题。问题是“来源”领域。我不得不用“消息”替换“文件”,因为logstash需要从读取数据的地方获取此信息,“message”是logstash的拟合属性。
xml {
remove_namespaces => true
source => "message"
store_xml => false
xpath => [
"//event/@timestamp", "time",
"//message/text()", "lmessage"
]
}