ELK你这么学就对了—Logstash篇
一、什么是Logstash
Logstash是ELK中的L的全称,Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据,转换数据,然后将数据发送到您最喜欢的“存储库”中。本文主要从Logstash的工作原理,使用场景,部署方式和性能调优等方面讲解,带大家一同走进Logstash。
1.1 Logstash 处理工程
如上图,Logstash的数据处理过程主要包括:Inputs, Filters, Outputs 三部分, 另外在Inputs和Outputs中可以使用Codecs对数据格式进行处理。这四个部分均以插件形式存在,用户通过定义pipeline配置文件,设置需要使用的input,filter,output, codec插件,以实现不同的数据采集,数据过滤,特定格式数据输出等功能 。
- Input:用于从数据源获取数据,常见的插件如file, syslog, redis, beats 等【具体参考】
- filter:用于处理数据如格式转换,数据派生等,常见的插件如grok, mutate, drop, clone, geoip等【具体参考】
- output:用于数据输出,常见的插件有Elasticsearch,file,ganglia等【具体参考】
- codec:Codecs 不是一个单独的流程,主要是输入和输出的过程中进行格式转换,常见的插件有collectd,cloudtrail等【具体参考】
1.2 工作原理
- 每个Input启动一个线程,从对应数据源获取数据
- Input会把数据写到一个队列中,默认是有界队列(意外停止会导致数据丢失)。为了防止队列的数据丢失,Logstash提供了两个特性,分别是: