Logstash不只是一个input|filter|output的数据流,而是一个input|decode|filter|encode|output的数据流。codec就是用来decode,encode 事件的。所以codec常用在input和output中

常用的codec插件有plain,json,multiline等

plain插件:

主要用于事件之间没有分隔的纯文本。

使用:

input {

    stdin {

        codec => plain {}

    }

}

示例:

logstash事件output到kafka默认的codec为json,如果设置codec为plain,除了message数据之外还会有一个主机名和时间戳的字段生成,如果只需要message字段,配置如下:

output {

    kafka {

       codec => plain {

            format => "%{message}"

        }

    }

}

json插件:

如果数据为json格式,可直接使用该插件,从而省掉filter/grok的配置,降低过滤器的cpu消耗

使用:

input {

    stdin {

        codec => json

    }

}

multiline插件:

用于合并多行数据

有些时候,应用程序调试日志会包含非常丰富的内容,为一个事件打印出很多行内容。这种日志通常都很难通过命令行解析的方式做分析。multiline插件用于解决此类问题。

示例:

tomcat的日志catalina.out有很多调试的日志,日志都以时间戳格式"20-Apr-2016 11:29:28.535"开头,那么我们可以配置如下:

input {

    file {

        path => "/path/to/catalina.out"

        start_position => "beginning"

        type => "tomcat_log"

        codec => multiline {

            pattern => "^%{MONTHDAY}[./-]%{MONTH}[./-]%{YEAR}"

            auto_flush_interval => 10

            negate => true

            what => "previous"

        }

    }

}

pattern为正则表达式匹配

negate为布尔类型,true表示否定正则表达式,即不匹配正则表达式。false为匹配正则表达式。默认值为false

what表示如果正则匹配与否,事件属于上一个或者下一个事件。有两个值可选previous(上一个)或者next(下一个)

auto_flush_interval表示当多长时间没有新的数据,之前积累的多行数据转换为一个事件。这里的10表示10秒

以上的配置可以解释为:不匹配pattern时间戳格式开头的行数据,都归属到上一个事件中,即在下一个匹配的时间戳出现之前的所有行的输出都属于同一个事件,从而达到合并多行的目的,同时等待10秒没有新数据产生,那么最后一个时间戳格式后的所有行数据就是最后一个事件。

转载于:https://blog.51cto.com/zengestudy/1832801

logstash之codec插件相关推荐

  1. Logstash(二)input、codec插件详解

    input input 插件指定数据输入源,一个pipeline可以有多个input插件,我们主要讲解下面的几个input插件: - stdin- file- kafka Input Plugin – ...

  2. logstash的output插件

    logstash 的output插件 nginx,logstash和redis在同一台机子上 yum -y install redis,vim /etc/redis.conf 设置bind 0.0.0 ...

  3. Docker 安装 ES 7.7.0 及 Head、Kibana、IK分词器、Logstash、Filebeat 插件

    目录 环境信息 ES安装 ElasticSearch-Head安装 IK分词器安装 环境信息 Docker version 1.13.1, build 4ef4b30/1.13.1 CentOS Li ...

  4. Logstash的filter插件介绍

    一 官网说明 过滤器插件对事件执行中介处理.通常根据事件的特征有条件地应用过滤器. 以下过滤器插件在下面可用. Plugin Description Github repository aggrega ...

  5. ELK logstash KV过滤插件

    过滤插件:通用配置字段 add_field 如果过滤成功,添加一个字段到这个事件 add_tags 如果过滤成功,添加任意数量的标签到这个事件 remove_field 如果过滤成功,从这个事件移除任 ...

  6. 使用logstash csv filter插件时自动检测表头失败

    在logstash中使用csv filter解析表头时,一种方法是用coulmn直接把每个表头一一对应写进去,另一种方法是在csv插件中使用autdetect_column_names => & ...

  7. logstash 中multiline插件的用法

    input {stdin {codec =>multiline {charset=>... #可选 字符编码 max_bytes=>... #可选 bytes类型 设置最大的字节数m ...

  8. Logstash~filter.kv插件使用教程(附带示例)

    一.kv介绍 用于解析key=value类型的消息,可以配置任意字符串来拆分数据,不一定非要用=符号,kv对的间隔也不一定非要用空格 二.allow_duplicate_values 功能:允许重复键 ...

  9. ELK技术栈—Logstash—Input插件

    原文作者:归来朝歌 原文地址:logstash之Input插件 1.stdin标准输入和stdout标准输出 Logsrtash含有两个非常重要的基础插件,input与output:首先执行命令: b ...

  10. Logstash【从无到有从有到无】【L24】贡献了Java插件

    目录 1.贡献了Java插件 1.1.流程概述 1.2.如何编写Java输入插件 1.2.1.设置环境 1.2.2.代码插件 1.2.3.打包和部署 1.2.4.与Java输入插件运行Logstash ...

最新文章

  1. Freemarker详细解释
  2. idea mybatis generator插件_在idea中使用mybatis generator逆向工程生成代码
  3. 中国人口较少民族作家研讨会
  4. 浅析MATLAB中的内联函数、匿名函数和函数函数
  5. 五、规则组织的衍生组织——纬山形组织数学模型的建立
  6. C语言编程快速入门黎明,何用C语言模拟键盘输入?
  7. 终于有人把内卷和囚徒困境讲明白了
  8. OpenShift 4 - 提权运行容器
  9. Java调用db2cmd命令导出数据
  10. 翻译:group_concat()函数(已提交到MariaDB官方手册)
  11. ExcelHelper代码
  12. python计算无穷级数求和,无穷级数求和的积分审敛法
  13. Git(7):git撤销已经push到远端的commit
  14. vld在MFC 中内存泄漏检测
  15. CVTE(视源股份)前端实习生面经
  16. 超酷炫技:10 个牛逼的单行代码编程技巧
  17. TaoAudio: 淘宝直播短视频音频解决方案
  18. 拼多多API接口大全
  19. :after伪类 content内容生成经典应用举例——张鑫旭
  20. 自己动手写操作系统0

热门文章

  1. GUI练习——列出指定目录内容
  2. 异常处理与调试 - 零基础入门学习Delphi50
  3. JQuery Dialog(转)
  4. supervisord的安装
  5. EasyRTMP实现对接海康、大华等IPCamera SDK进行RTMP推送直播功能
  6. 在gfs2中关闭selinux
  7. Linux上vi(vim)编辑器使用教程
  8. CCV 调试 (一)
  9. 在java中什么管理内存_Java是如何管理内存
  10. xgboost算法_xgboost算法学习心得