(二)logstash之插件的简单介绍

一、codec

1、简介

codec plugin 作用于input 和output plugin,负责将数据在原始与logstash event之间切换,常见的 codec如下:

  • plain 读取原始数据
  • dots 将内容简化为点进行输出
  • rubydebug 将 logstash event 按照ruby 格式输出,方便调试
  • line 处理带有换行符的内容
  • json 处理json 格式的内容
  • multiline 处理多行数据的内容,将其作为一条数据输出(多行变一条)

2、multiline 介绍

当一个event 的 message 有多行组成时,需要使用multiline,常见的场景是堆栈日志信息的处理,如:

// 此种数据特点:一是多行二是开头有空格
Caused by: java.net.SocketTimeoutException: connect timed out
	at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
	at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)

主要设置参数如下:

  • pattern: 设置行匹配的正则表达式,可以使用 grok
  • what:取值为previous或next,如果匹配成功,那么匹配行是归属于上一个事件还是下一个事件
  • negate:取值为true或false,意为是否对 pattern 的结果取反

举例:收集时间开头的数据

input {
    stdin {
        codec => multiline {
            pattern => "^\[%{TIMESTAMP_ISO8601}\]"
            negate => true
            what => "previous"
        }
    }
}

二、filter

1、简介

filter 是 logstash 功能强大的主要原因,他可以对logstash event 进行丰富的处理,比如解析数据、删除字段、类型转换等等,常见如下:

  • date 日期解析
  • grok 正则匹配解析
  • dissect 分隔符解析
  • mutate 对字段进行处理,如重命名、删除、替换等
  • json 按照json 解析字段内容到指定字段
  • geoip 增加地理位置数据
  • ruby 利用ruby 代码来动态修改 logstash event

2、date 介绍

将日期字符串解析为日期类型,然后替换@timestamp 字段或者指定的其他字段。

参数:

  • match:类型为数组,用于指定日期匹配的格式,可设置多个
  • target:类型为字符串,用于指定赋值的字段名,默认是@timestamp
  • timezone:类型为字符串,用于指定时区

3、grok 介绍

参数:

  • match:匹配多种样式
  • overwrite:替换目标字段值(区别于追加)
  • tag_on_fail

补充:热加载

启动命令加上 -r 即可。此时修改配置文件,就会被加载,无需重启。

4、dissect 介绍

基于分隔符原理解析数据,解决 grok 解析时消耗过多 cpu 资源的问题。

语法:

  • %{}:大括号之间的是字段
  • %{}:这个格式之间的是分隔符
  • %{}:如果大括号之间什么也不写,就相当于占位符,但是不输出到结果
  • +:追加到某个字段
  • /:设置字段的顺序

参数:

dissect分割后的字段值都是字符串类型,可以使用convert_datatype 属性进行类型转化,如下:

filter {
    dissect {
        convert_datatype => {
            age => "int"
        }
    }
}

5、mutate 介绍

可以对字段进行各种操作,如重命名、删除、替换、更新等,主要操作如下:

  • convert:类型转换
  • gsub:字符串替换,清洗数据
  • split/join/merge:字符串切割 / 数组合并为字符串 /2个 数组合并为1个数组
  • rename:字段重命名
  • update/replace:字段内容更新或替换
  • remove_field:删除字段

6、json 介绍

将字段内容为json 格式的数据进行解析

参数:

  • source:需要解析的字段
  • target:解析完成的数据存储的字段
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章