美文网首页
Logstash Codec详解

Logstash Codec详解

作者: 我是一名搬运工 | 来源:发表于2019-08-04 19:09 被阅读0次

codec支持的编码格式常见有plain、json、json_lines等。

1、plain

plain是最简单的编码插件,你输入什么信息,就返回什么信息,诸如上面的例子中的timestamp、type等都不会带过来。

input {
       stdin {
       }
}
output {
        stdout {
               codec => plain
        }
}

2、json、json_lines

有时候logstash采集的日志是JSON格式,那我们可以在input字段加入codec => json来进行解析,这样就可以根据具体内容生成字段,方便分析和储存。如果想让logstash输出为json格式,可以在output字段加入codec=>json。下面是一个包含json编码的时间配置文件:

input {
        stdin {
        }
}

output {
       stdout {
              codec => json
       }
}

你会发现插件是json的时候,会自带一些信息,诸如host、@version、@timestamp。json的每个字段都是key:value格式,多个字段之间通过逗号分隔。这种输出比较长,因此我们采用json_lines编码格式稍微好一点。json_lines会把Json数据以每个key:value一行的形式展开出来。

3、multiline

logstash处理事件默认是单行的,如果要把多行数据进行合并,那么需要使用multiline插件。
multiline可以配置在input当中,也可以配置在filter当中。
Input中配置如下:

input {
    file {
        type => "jinyiweiapi" # 稍后说作用
        path => "/home/dockermount/jinyiwei/logs/catalina.out" # 日志路径
        codec => multiline {
            pattern => "^\["  # 正则表达式,匹配开头为 "[" 的为一条日志的开始
            negate => true     # true表示若pattern正则匹配失败,则执行合并;false表示若pattern正则匹配失败,则执行合并。默认为false
            what => "previous"   # previous表示跟前面的行合并;next表示跟后面的行合并
        }
    }

Filter中配置如下:

filter {
    multiline {
        pattern => "^\["
        negate => true
        what => "previous"
    }
}    

相关文章

网友评论

      本文标题:Logstash Codec详解

      本文链接:https://www.haomeiwen.com/subject/bhlvdctx.html