logstash 的多行模式 [英] Multiline pattern for logstash

查看:47
本文介绍了logstash 的多行模式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经搜索了SO,当然选择了搜索引擎,但没有找到有效的解决方案.

I've searched SO and of course the searchengine of choice but found no valid solution.

我尝试用logstash解析多行日志文件,但没有成功.

I try to parse a multiline logfile with logstash without any success.

日志文件如下:

appl.log

2014-02-31 11:06:55,268-WARN主com.applicationname.commons.shop.OrderDetailsjava.lang.NullPointerException在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里2014-02-31 11:06:55,268-警告主com.applicationname.commons.shop.OrderDetailsjava.lang.NullPointerException某处某处某处某处在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在这里一些文本在这里一些文本在这里在某处此处在某处此处

AFAIK以"\ t ... at"开头的行

AFAIK the lines a starting with "\t...at "

我当前的Logstash conf(非工作版本)看起来像:

My current (non working version) conf for logstash looks like:

logstash.conf

input =>

input {
    file {
        path => "/var/log/appl.log"
        type => "appl"
        codec => multiline {
            negate => true
            pattern => "^\s"
            what => "previous"
        }
    }
}

filter =>

filter =>

filter {
    if [type] == "appl" {
        grok {
            add_tag => [ "groked" ]
            match => ["message", ".*"]
            remove_tag => ["_grokparsefailure"]
        }
    }
}

欢迎为正确的多线滤波器引入正确的方向.

Any lead into the right direction for a working multiline filter is welcome.

推荐答案

尝试一下:

input =>

input {
  file {
    path => "/var/log/appl.log"
    type => "appl"
    codec => multiline {
        pattern => "^%{TIMESTAMP_ISO8601} "
        negate => true
        what => "previous"
    }
  }
}

过滤器=>

filter {
  if [type] == "appl" {
    grok {
        add_tag => [ "groked" ]
        match => ["message", ".*"]
        remove_tag => ["_grokparsefailure"]
    }
  }
}

这篇关于logstash 的多行模式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆