Logstash事件处理管道有三个阶段:输入→过滤器→输出,输入生成事件,过滤器修改它们,而后输出将它们发送到其余地方。输入和输出支持编解码器,使你可以在数据进入或离开管道时对其进行编码或解码,而无需使用单独的过滤器。html
你使用输入将数据获取到Logstash中,一些比较经常使用的输入是:java
tail -0F
。有关可用输入的更多信息,请参见输入插件。redis
过滤器是Logstash管道中的中间处理设备,若是事件符合必定的条件,你能够将过滤器与条件语句组合在一块儿,对其执行操做,一些有用的过滤器包括:json
有关可用过滤器的更多信息,请参见过滤器插件。后端
输出是Logstash管道的最后阶段,事件能够经过多个输出,可是一旦全部的输出处理完成,事件就完成了它的执行,一些经常使用的输出包括:安全
有关可用输出的更多信息,请参见输出插件。服务器
Codecs是基本的流过滤器,能够做为输入或输出的一部分进行操做,Codecs使你可以轻松地将消息的传输与序列化过程分开,流行的codecs包括json
、msgpack
和plain
(text)。elasticsearch
有关可用编解码器的更多信息,请参见编解码器插件。ide
Logstash事件处理管道协调输入、过滤器和输出的执行。工具
Logstash管道中的每一个输入阶段都在本身的线程中运行,输入将事件写入位于内存(默认)或磁盘上的中央队列,每一个管道工做线程从这个队列中取出一批事件,经过配置的过滤器运行事件批处理,而后经过任何输出运行过滤的事件,能够配置批处理的大小和管道工做线程的数量(参见调优和分析Logstash性能)。
默认状况下,Logstash使用内存有限队列在管道阶段之间(输入→过滤器和过滤器→输出)来缓冲事件,若是Logstash不安全的终止,则存储在内存中的任何事件都将丢失。为了防止数据丢失,你能够启用Logstash将运行中的事件持久化到磁盘上,有关更多信息,请参见持久队列。