Codec plugins ? multiline

Codec plugins ? multiline

multiline codec 会折叠多行消息,合并它们到一个事件


这个codec 原始的目的是允许 连接多行信息从文件到一个单独的事件。

比如, 连接Java 异常和stacktrace 消息到一个单独的事件


配置看起来像这样:

input {
  stdin {
    codec => multiline {
      pattern => "pattern, a regexp"
      negate => "true" or "false"
      what => "previous" or "next"
    }
  }
}

input {
        file {
                type => "zj_api"
                path => ["/data01/applog_backup/zjzc_log/zj-api*catalina*"]
                codec => multiline {
                pattern => "^\s+%{TIMESTAMP_ISO8601}"
                negate => true
               what => "previous"
                }
            }
    
       file { 
                type => "wj_api" 
                path => ["/data01/applog_backup/winfae_log/wj-api*catalina*"] 
                  codec => multiline {
                pattern => "^\s+%{TIMESTAMP_ISO8601}"
                negate => true
               what => "previous"
                }
        } 

 
}

pattern 应该匹配你相信的作为一个指示字段是一个多行事件的一部分

what 必须是 previous or next 表明和多行事件的关系

negate 可以是true 或者false(默认false) 如果是true, 一个消息不匹配模式 会组成一个多行过滤器的匹配

例如, Java stack traces 是多行匹配和通常有消息开始在左边,每个后续行是缩进的 像这样:

input {
  stdin {
    codec => multiline {
      pattern => "^\s"
      what => "previous"
    }
  }
}


这个意思是任何行以空格开头属于先前的行

另外一个例子是合并多行不是以日志开始的 合并到上一行

input {
  file {
    path => "/var/log/someapp.log"
    codec => multiline {
      # Grok pattern names are valid! :)
      pattern => "^%{TIMESTAMP_ISO8601} "
      negate => true
      what => previous
    }
  }
}
这个意思是任何行不以时间戳开头的都合并到上一行

一个常见的例子是C的续行(反斜杠),

filter {
  multiline {
    type => "somefiletype"
    pattern => "\\$"
    what => "next"
  }
}

这表示, 任何行以反斜杠借宿应该合并到下一行

Synopsis 简介:

插件支持下面的配置选项:

需要的配置选项:

multiline {
      pattern => ...
      what => ...
  }

posted @ 2016-10-13 15:09  czcb  阅读(138)  评论(0编辑  收藏  举报