介绍
Logstash是一个开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到最喜欢的存储库中(我们的存储库当然是ElasticSearch)
我们回到我们ElasticStack的架构图,可以看到Logstash是充当数据处理的需求的,当我们的数据需要处理的时候,会将它发送到Logstash进行处理,否则直接送到ElasticSearch中
用途
Logstash可以处理各种各样的输入,从文档,图表中=,数据库中,然后处理完后,发送到
输入
- 采集各种样式、大小和来源的数据,数据往往以各种各样的形式,或分散或集中地存在于很多系统中。
- Logstash 支持各种输入选择 ,可以在同一时间从众多常用来源捕捉事件。能够以连续的流式传输方式,轻松地从您的日志、指标、Web 应用、数据存储以及各种 AWS 服务采集数据。
过滤
- 实时解析和转换数据
- 数据从源传输到存储库的过程中,Logstash 过滤器能够解析各个事件,识别已命名的字段以构建结构,并将它们转换成通用格式,以便更轻松、更快速地分析和实现商业价值。
输出
Logstash 提供众多输出选择,您可以将数据发送到您要指定的地方,并且能够灵活地解锁众多下游用例。
工作过程
流程
input → queue → filter + output
介绍
input->filter:当input将数据成功写到queue时,会给数据源发送确认机制。
queue → filter + output:当处理来自队列的事件时,Logstash仅在过滤器和输出完成后,才在队列中确认事件已完成。队列保存由管道处理的事件的记录。当且仅当事件完全由Logstash管道处理时,事件被记录为已处理(在本文档中称为“已确认”或“已打包”)。确认的意义是什么呢?表明数据已经经过了所有的filter和output,数据已经完全保存到output。
异常情况:
1、如果在logstash执行的过程当中,强制的停止了程序的执行(CTRL C或者SIGTERM),那么logstash会停止从queue中读取数据并且继续完成filter和output中的数据。在下一次重启logstash的时候,那么会继续读取持久化queue中的数据就像处理新的input一样。
2、如果Logstash异常终止,那么任何运行中的事件都不会被劫持,并在重启Logstash时由过滤器和输出重新处理。Logstash分批处理事件,因此对于任何给定的批,当异常终止发生时,其中一些批可能已经成功完成,但没有记录为已打包。