Logstash插件开发介绍 本次文档一共分为3部分,分别为下面3个部分,并且会附上不同的参考文档 - Logstash输入插件介绍 - Filter插件开发详解 - 开发过程遇到一些问题总结 ##logstash介绍 >Logstash 是一款强大的数据处理工具,它可以实现数据传输,格式处理,格式化输出,还有强大的插件功能,常用于日志处理。其工作流程如下:

windows Logstash安装json_lines插件 logstash 插件开发_插件

它处理数据有3个阶段

  • Input
  • Filter
  • Output
  • input 数据输入端,可以接收来自任何地方的源数据
  • Filter 数据中转层,主要进行格式处理,数据类型转换、数据过滤、字段添加,修改等,常用的过滤器如下
  • output 是logstash工作的最后一个阶段,负责将数据输出到指定位置,兼容大多数应用

安装下载参考文档:

注意:在window中,用bin/logstash.agent -f logstash 命令来启动logstash

Logstash插件介绍

###FileInput插件介绍
FileInput插件是经常用到的输入插件,主要从文本中提取数据,然后经过一系列的Filter插件过滤和处理后,把数据再传递到Output插件,然后对数据进行输出,这主要介绍FilterInput插件的配置参数,可以参照官网。

配置参数

示例

详解

path

path => ["/var/log/nginx/access.log"],path => “/var/log/nginx/*.log”

文件源,可以检测若干文件,String或者数组类型

codec

codec=>plain{charset=>“UTF-8”}

codec插件,默认是plain,可以设置编码格式

discover_interval

discover_interval=>20

检查一次被监听的path下是否有新文件,默认值是15秒

exclude

exclude=>“Message.log”,exclude=>[1.log,*.txt]

排除不需要监测的文件,string或者数组类型

sincedb_path

sincedb_path=>"/home/hadoop/1.txt"

记录处理文件的位置,默认为$HOME/.sincedb,如果设置为:/dev/null,则代表忽略检测位置

stat_interval

stat_interval=>10

隔多久检查一次被监听文件状态,默认1秒

start_position

start_position=>“beginning”,start_position=>“end”

logstash从什么位置开始读取文件数据,配置为[beginning,end]中的一个,默认是结束位置

tags

tags=>“logstash”

标记,一个字段

close_order

close_order=>3600

文件输入会关闭上一次读取指定时间间隔的文件。 这取决于文件是否被拖尾或读取,具有不同的含义。 如果拖尾,并且输入数据中存在大的时间间隔,则可以关闭文件(允许打开其他文件),但在检测到新数据时将排队等待重新打开。 如果读取,文件将在从最后一个字节读取后的closed_older秒后关闭。 默认值为1小时

delimiter

delimiter=>"\n"

读取事件的分割,默认是’\n’,也就是以一行为一个事件

sincedb_write_interval

sincedb_write_interval=>10

多久写一次读取位置的文件,就是是sincedb_path,默认15秒

这个是FileInput插件读取的详细参数

下面来介绍几个常用到的Filter插件
###KV插件

KV插件设置一定的格式,来读取字段中的键值对

其中有两个比较重要的参数,如下:

- field_split - value_split

field_split为两个键值对间的分隔符,而value_split则是两个key,value之间的分隔符

>若要切割的字段如下: >message="messagid=123&name=logstash" >kv的配置如下: >kv{ source=>"message" field_split =>"&" value_split =>"=" } >则message会把切割成 messageid="123" name="logstash"

###multiline插件
mutile插件的主要作用是根据正则表达式,把多条事件合并或者切割成一条,详细了解请点击:mutiline插件详解: ###mutate插件
mutate插件可以把一些字符串替换成别的字符串,通过gsub来实现。或者通过split来切割不同的字符串

mutate {
 gsub=>[“message”, “\n”, “$”]
 split=>[“message”,“keyword”]
 }这样配置,message会把message字段中的\n替换成$,并且根据keyword把messageqi切割字符串,通过[message][0],[message][1]来获取字段。
 ###Output插件WebHDFS介绍
 webhdfs插件主要是把日志上传到HDFS文件系统中,其格式为:
 webhdfs{
 host => “127.0.0.1”
 port => 50070
 user => “hadoop”
 path => “/logstash/data”
 codec => plain
 {
 charset=>“UTF-8”
 format=>"%{message}"
 }
 }