文/田雪松
Logstash管道可以配置多个输入插件,这可以将不同源头的数据整合起来做统一处理。在分布式系统中,数据都分散在不同的容器或不同的物理机上,每一份数据往往又不完整,需要类似Logstash这样的工具将数据收集起来。比如在微服务环境下,日志文件就分散在不同机器上,即使是单个请求的日志也有可能分散在多台机器上。如果不将日志收集起来,就无法查看一个业务处理的完整日志。
Logstash管道也可以配置多个输出插件,每个输出插件代表一种对数据处理的业务需求。比如对日志数据存档就可以使用s3输出插件,将日志数据归档到S3存储服务上;还可以使用elasticsearch输出插件,将数据索引到Elasticsearch中以便快速检索等等。在业务系统创建之初,人们对于数据究竟会产生什么样的价值并不清楚。但随着人们对于业务系统理解的深入,对数据处理的新需求就会迸发出来。面对新需求,只要为Logstash管道添加新的输出插件就能立即与新的数据处理需求对接起来,而对已有数据处理业务又不会产生任何影响。到目前为止,Logstash对于常见的数据处理需求都可以很好的对接,这包括数据归档存储、数据分析处理、数据监控报警等等。
Logstash官方提供的输入插件与输出插件都有50多种,而在这共计100多种的插件中每一种插件又有不同的配置参数,想在一章之内将它们彻底介绍清楚有一定的困难。但总结这些插件时会发现,大多数输入插件也会在输出插件中出现。基于这种考量也限于篇幅,本章根据插件所属大类分别按小节介绍,对于比较特殊的插件将在最后一节统一介绍。
在开始介绍这些插件前,先来介绍两个最简单的插件,即stdin输入插件和stdout插件。这两个插件分别代表标准输入和标准输出,也就是命令行控制台。由于它们比较简单,所以一般不需要做任何配置就可以直接使用。stdin只有一组通用参数,这些参数不仅对stdin有效,对其它输入插件也有效。具体如表1所示:
表1 输入插件通用参数
同样的,stdout也是只有通用参数,这些参数也是对所有输出插件都有效。具体如表2所示:
表2 输出插件通用参数