解析由JSON使用logstash序列化的多行日志消息

时间:2014-12-01 20:52:53

标签: json parsing multiline logstash

我有以下JSON消息:

{
    "type":"exception",
    "content":"2014-11-25T20:11:55+00:00 ERR (3):\nexception 'Exception' with message 'some error' in \/private\/var\/www\/index.php:88\nStack trace:\n#0 {main}\n2014-11-25T20:11:56+00:00 ERR (3):\nexception 'Exception' with message 'some error' in \/private\/var\/www\/index.php:88\nStack trace:\n#0 {main}"
}

如您所见,我想解析content字段,即多行(异常日志)。序列化为JSON时已插入\n。这是我的logstash配置文件,直到现在:

input { 
    tcp {
        port => 1337
    } 
}
filter {
    json {
        source => "message"
    }
    if [type] == "exception" {

        mutate {
            replace => ["message", "%{content}"]
            split => ["message", "\\n"]
        }
        multiline {
            pattern => "%{TIMESTAMP_ISO8601}"
            negate => true
            what => previous
        }
}
output {
    if [type] == "exception" {
        elasticsearch { host => localhost }
        stdout {
            codec => rubydebug
        }
    }
}

这里的问题是多线不起作用。我认为它将作用于message字段,因此我用内容字段替换了该消息。然后我还添加了拆分,以便再次将字符串拆分为行。但这也不起作用。我在这里做错了什么?

最重要的问题:如何访问split的输出?是否可以根据正则表达式进行拆分?

0 个答案:

没有答案