LogStash事件处理管道具有三个阶段:input->filter->output。input生成事件,filter修改它们,output将它们发送到其他地方。input和output支持编解码器,能够在数据进入或退出管道时对其进行编码或解码,而无需使用单独的过滤器

1.input

input插件的官方文档

使用输入将数据输入LogStash,一些常用的输入包括:

  • file:从文件系统上的文件中读取
  • syslog:在514端口上监听syslog消息并根据RFC3164格式进行解析
  • beats:处理Beats发送的事件

2.filter

filter是LogStash管道中的中间处理设备。如果事件符合特定条件,可以将过滤器与条件结合起来对事件执行操作。一些常用的过滤器包括:

  • grok:解析和构造任意文本。Grok目前是LogStash中将非结构化日志数据解析为结构化和可查询的最佳方式
  • mutate:对事件字段执行一般转换。可以重命名、删除、替换和修改事件中的字段
  • drop:完全删除事件,例如调试事件
  • clone:复制一个事件,可能添加或删除字段
  • geoip:添加有关IP地址地理位置的信息系

3.output

output的官方文档

output是LogStash的最后阶段。一个事件可以通过多个输出,但是一旦所有输出处理完成,事件就完成了它的执行。一些常用的输出包括:

  • elasticsearch:将事件数据发送到ElasticSearch。
  • file:将事件数据写入磁盘上的文件
  • graphite:将事件数据发送到Graphite,用于存储和绘制指标
  • statsd:将事件数据发送到statsd,这是一项“监听统计信息,如计数器和计时器,通过UDP发送并将聚合发送到一个或多个可插入后端服务”的服务

4.codec

codec是基础的流过滤器,可以作为输入或输出的一部分进行操作。编码器能够将消息的传输与序列化过程分开。

  • json:以JSON格式编码或解码数据
  • multiline:将多行文本事件合并为单个事件