logstash 多行编解码器不起作用

标签 logstash

我已将 logstash 管道配置为向 elastic 报告。我能够读取日志文件。我的日志文件包含多行消息,但每一行都作为一条消息报告给 elastic。以下是我的 logstash 配置文件

LogConf 文件:

input {
        file {
            path => ["abc.log" ]
            start_position => "beginning"
            codec => multiline
            {
                pattern => "^%{LOGLEVEL}"
                negate => "false"
                what => "next"
            }
        }
    }
    filter {

    }
    output {
        # only for debug purposes
        stdout {
            codec => rubydebug
        }
        elasticsearch {
            hosts => ["http://abcd:9200"]
            index => "logstash"
        }
    }

日志文件:

DEBUG - LogBO={
    message:############ ##############
------------>>!User Info[################################]
------------>>!Debug Info[ ############################# ]
***************isABCEnabled*********************true
}
DEBUG - LogBO={
    message:############ ##############
------------>>!User Info[################################]
------------>>!Debug Info[ ############################# ]
***************isABCEnabled*********************true
}

我能够看到向 Elastic 报告的日志,但是每一行日志都是一条单独的消息。我要整个日志

DEBUG - LogBO={
    message:############ ##############
------------>>!User Info[################################]
------------>>!Debug Info[ ############################# ]
***************isABCEnabled*********************true
}

将作为一条消息报告给 Elastic。请帮我解决这个问题。

请帮我解决这个问题。

最佳答案

通过使用

codec => multiline {
    pattern => "^%{LOGLEVEL}"
    negate => "false"
    what => "next"
}

您告诉编解码器加入任何匹配 ^%{LOGLEVEL} 的行以加入下一行。这会将第一行连接到第二行,因为第一行匹配 ^%{LOGLEVEL}。其他行将被忽略,模式将不会继续匹配并向下连接同一行。因此,您最终会得到一堆乱七八糟的部分日志事件。

你会想要使用

codec => multiline {
    pattern => "^%{LOGLEVEL}"
    negate => "true"
    what => "previous"
}

相反。这告诉 logstash 将任何与 ^%{LOGLEVEL} 不匹配的行加入到上一行。这可确保事件始终以 ^%{LOGLEVEL} 匹配行开始,这正是您想要的。

关于logstash 多行编解码器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46161726/

相关文章:

elasticsearch - Kibana 4-为什么在使用.raw时我的简单查询会返回正确的结果,但并非没有?

configuration - 处理大型 logstash 配置文件的最佳实践是什么?

elasticsearch - 重复数据-Elasticsearch

elasticsearch - Logstash Elasticsearch压缩

elasticsearch - Elasticsearch forcemerge 和磁盘空间问题

elasticsearch - 如何在kibana中的字段上启用排序?

docker - 在docker-compose期间,Kibana数据已丢失

xml - Filebeat进程多XML

linux - Logstash 不产生输出

indexing - Logstash 未将数据从外部文件写入Elasticsearch