logstash中输入与编解码器插件的使用方法

  

Logstash最强大的功能在于丰富的过滤器插件。此过滤器提供的并不单单是过滤的功能,还可以对进入过滤器的原始数据进行复杂的逻辑处理,甚至添加独特的事件到后续流程中。

1, Logstash基本语法组成

Logstash主要由三部分组成:输入,过滤器,输出。而过滤就是过滤器插件,这个组件可以不要,但是这样子就不能体现出logtash的强大过滤功能了。

输入{
  
  输入插件
  
  }
  
  过滤器{
  
  过滤器插件
  
  }
  
  外{
  
  输出插件
  
  }

下面我们依次对各个插件进行介绍

1.1, logstash输入插件(输入)

logstash的输入插件主要用来接收数据,logstash支持多种数据源,常见的有读取文件,标准输入,读取syslog日志,读取网络数据等,这里分别介绍下每种接收数据源的配置方法

我们先来看个例子:

输入{
  ,,,文件{
  ,,,,,,,,,,,path =祝辞,(“/var/log/messages"]
  type 才能=祝辞,“煤气报修
  ,start_position =祝辞;“timestamp"
  }
  }
  输出{
  stdout {
  ,,codec =祝辞rubydebug
  }
  }

这时我们有几个小疑问:

1, logstash的输入是怎么样接收日志的呢?

logstash使用一个名为filewatch的ruby gem库来监听文件变化,并通过一个叫。sincedb的数据库文件来记录被监听的日志文件的读取进度(时间戳)。这个sincedb数据文件的默认路径在& lt; path.data>/插件/输入/文件下面,文件名类似于.sincedb_452905a167cf4509fd08acb964fdb20c。而& lt; path.data>表示logstash插件存储目录,默认是LOGSTASH_HOME/数据。(rpm包安装则是在/usr/share/logstash目录下)。

,

2, logstash的输入技术跟Linux的那个比较像呢?

输入就跟Linux的管道右侧内容一样,在Linux管道中,左侧的输出传给管道的右侧接收机制。而输入就是如此,当他监听一个文件时,会以tail - f命令的形式逐行获取数据。不过输入可以指定从哪个地方(某一时间戳)开始读取,而start_position就是指定时间戳。如果不指定则从头开始读取.type则是用来标记时间类型。

下面举个例子来看:

1.2,标准输入

, stdin是从标准输入获取信息的。这里我们看一个稍微复杂一点的例子:

 input  {
  ,,,,,,,stdin  {
  ,,,,,,,,,,,,,,,add_field =祝辞,{““key"=; apple"}
  ,,,,,,,,,,,,,,,tags =祝辞,(“add1")
  ,,,,,,,,,,,,,,,type =祝辞,“test1",,,,,,,,}
  }
  
  output  {
  ,,,,,,,,,,,,,,,stdout  {
  ,,,,,,,,,,,,,,,,,,,,,,,codec =祝辞rubydebug
  ,,,,,,,,,,,,,,,}
  }

然后我们启动一下终端,大家要注意,我这里没有指定输入文件,而指定的是stdin,表示标准输入,意思就是交互式输入数据。

 [root@:: 172.31.22.29 /etc/logstash/conf.d] #/usr/share/logstash/bin/logstash  -f /etc/logstash/conf.d/l1.conf
  Sending  Logstash  logs 用/var/log/Logstash  which  is 你configured  via  log4j2.propertieshello  word ,,#手动输入此信息{
  ,,,,,,,,,“type",=祝辞,“test1",
  ,,,,,“@version",=祝辞,“1”,
  ,,,,,,“message",=祝辞,“hello  word"
  ,,,“@timestamp",=祝辞,2019 - 01 - 22 t05:42:08.340z
  ,,,,,,,,,“tags",=祝辞,(
  ,,,,,,,[0],“add1"
  ,,,,
  ,,,,,,,,,“host",=祝辞,“ip - 172 - 31 - 22 - 29. - ec2.internal",
  ,,,,,,,,,,“key",=祝辞,“apple"
  }

类型和标记是logstash的两个特殊字段,类型一般会放在输入中标记事件类型,标签主要用于在事件中增加标签,以便在后续的处理流程中使用,主要用于过滤器或输出阶段。

2, logstash编码插件(编解码器)

前面的例子中,其实我们就已经用过编码插件编码了,就是这个rubydebug,它就是一种编解码器。

编码插件(编解码器)可以在logstash输入或输出时处理不同类型的数据,同时,还可以更好更方便的与其他自定义格式的数据产品共存,比如:流畅、netflow, collectd等通用数据格式的其他产品,因此,logstash不只是一个输入,在过滤器,在输出的数据流,而且是一个输入,在解码——在过滤器,在编码,在输出的数据流。

编解码器支持的编码格式常见有平原,json, json_lines等,下面依次介绍:

1,编解码器插件之平原

平原是最简单的编码插件,你输入什么信息,就返回什么信息,诸如上面的例子中的时间戳、类型等都不会带有:

logstash中输入与编解码器插件的使用方法