Logstash 使用
这篇文章主要讲述下Logstash的详细使用方法。
一、Logstash是什么
Logstash is an open source data collection engine with real-time pipelining capabilities.
简单的说,Logstash是一个实时数据搜集的工具。
Logstash包括三个部分:input、filter、output,其中filter部分不是必须。input作为数据的输入,官方插件里,提供包括file、jdbc、http等多种方式;filter部分主要是对input的数据进行清洗,官方插件里提供包括正则、split、kv、ruby等多种方式,将输入的数据清洗成自己需要的格式;output是数据经过清洗之后保存的地方,可以是hdfs、es等多种方式。原始通过这三个步骤,从而处理为自己想要的数据格式。
二、有哪些用途
以ELK Stack中的使用方式为例。我们通过input的kafka插件,获取到数据之后,通过filter中的grok、kv等插件清洗了原始数据,再通过output的es插件输出到Elasticsearch指定的index中。
除此之外,Logstash本身丰富的插件也可以用来做实时数据搜集的工具。从MySQL到HDFS、从Kafka到MySQL等等,可以将Logstash作为异构数据的实时同步通道。
三、logstash.conf如何写
Logstash的具体数据处理,是配置在logstash.conf文件中,多个pipline需要配置logstash.yml。
编写数据采集规则,只需要关注input、filter、output三个部分。官方文档中,每个插件的详细使用配置和demo都可以查询到,是编写配置过程中必须参考的。由于logstash版本变更过程中一些方法的弃用,目前最合适的方法是根据对应版本的docs说明进行编写。
比如,我们ELK中经常搜集的类似Apache、Nginx这类标准化的日志格式,可以参考:
https://www.elastic.co/guide/en/logstash/current/plugins-filters-grok.html
对于csv、json类型的数据,也可以找到对应的解析插件:
https://www.elastic.co/guide/en/logstash/current/plugins-filters-csv.html
https://www.elastic.co/guide/en/logstash/current/plugins-filters-json.html
标准的插件,几乎涵盖了我们日常需要处理的各种数据格式。选择合适的轮子,可以高效地解决问题。当然,如果这些轮子都不适用并且改造原始数据格式难度较大,我们有没有其他的方式呢?请参考:
https://www.elastic.co/guide/en/logstash/current/plugins-filters-ruby.html
版权声明: 本文为 InfoQ 作者【Rayzh】的原创文章。
原文链接:【http://xie.infoq.cn/article/cd5a8e02152d0f6c6baa435b1】。文章转载请联系作者。
评论