使用Logstash和Xpath提取数据

时间:2017-07-20 09:30:18

标签: xml xpath logstash

我想通过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日志中也没有错误。

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题。问题是“来源”领域。我不得不用“消息”替换“文件”,因为logstash需要从读取数据的地方获取此信息,“message”是logstash的拟合属性。

xml {
        remove_namespaces => true
        source => "message"
        store_xml => false
        xpath => [
                "//event/@timestamp", "time",
                "//message/text()", "lmessage"
        ]
}