Logstash编解码器多行

时间:2016-04-06 19:13:41

标签: logstash multiline codec

我尝试配置logstash以从蜜罐中提取日志条目,该蜜罐每个条目都有多行。日志配置为以下格式:

 ##############################################
{
    "data": [
        {
            "count": 8,
            "honeypot": "anum",
            "source_ip": "ip1"
        },
        {
            "count": 10,
            "honeypot": "anum",
            "source_ip": "ip2"
        }
    ],
    "meta": {
    ...
    }
}
##############################################

现在,我可以在模式部分中指定三个条目("计数","蜜罐"和" source_ip")以及如何?

然后,从那里我可以指定grok模式使用这三个值?

1 个答案:

答案 0 :(得分:0)

您可以尝试以下配置:

input {
    stdin {
        codec => multiline {
                pattern => "\#+"
                negate => true
                what => previous
            }
    }
}

filter  {


    if "multiline" in [tags] {
        mutate  {
            gsub => [
                "message", "\n", "",
                "message", "\#", ""
            ]
        }

        json {
            source => "message"
        }

        if  "_jsonparsefailure" not in [tags] {
            split {
               field=>"data" 
            }
        }

    }
}
output {
    stdout {
        codec => rubydebug
    }
}

使用split过滤器,您的事件将被多事件拆分,因此您可以将以下三个值分开:

[data][count]
[data][honeypot]
[data][source_ip]