Kafka:2)Kafka整合logstash实战

来源:互联网 发布:暗黑战神 源码泄露 编辑:程序博客网 时间:2024/05/22 03:52

实验环境:logstash-2.3.2、kafka_2.10-0.9.0.1、JDK1.8


简单介绍下logstash,logstash专门用来收集数据,其功能和flume类似,但功能却比flume强大很多,而且不会丢失数据。其功能结构图如下


logstash主要由3个组件组成

  • Input plugin:数据的输入源,比如有文件,数据库等
  • Filter plugin:对输入的数据进行业务逻辑处理过滤
  • Output plugin:数据的输出地,比如有hdfs、kafka等

1.logstash的搭建


logstash的搭建比较简单,下载官方的压缩包后,解压即可使用

实验过程:使用logstash监听一个日志文件,每当有数据写入的时候,自动把新增数据推送到kafka中

此次使用一个log文件作为输入源,在/tmp下新建一个文件log.txt,键入内容如下;
[root@slave04 tmp]# cat log.txt logstash_kafka test
这里我们只简单使用Input plugin(file)和Output plugin(kafka),中间没有额外的处理逻辑,使用logstash的插件需进行声明,内容放到一个.conf的文件中即可,下面给出一个例子:
input{file{path => "/tmp/log.txt"start_position => "beginning"}}output{kafka{topic_id => "logstashtest"codec => plain{format => "%{message}"charset => "UTF-8"}bootstrap_servers => "192.168.1.60:9092,192.168.1.61:9092,192.168.1.62:9092"}}
代码解释:input和output就是对应的插件。如input使用file作为数据源,path定义了该数据源文件的位置,start_position表示第一次读取时从头开始读(beginning),还是只读取新增数据(默认end)。output使用kafka作为输出地,topic_id就是kafka的主题id,codec是我们定义的格式,bootstrap_servers就是对应broker的集群地址

配置好文件后,我们使用如下的命令启动logstash (-f 指定待监听的文件)
[root@slave04 bin]# ./logstash agent -f conf/lk.conf Settings: Default pipeline workers: 6Pipeline main started

2.Kakfa的部署

Kafka的安装部署,请参看http://blog.csdn.net/jiangpeng59/article/details/53241693

新建一个名为“logstashtest”的topic主题

#创建一个名为logstashtest的topic./kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 2 --partitions 1 --topic logstashtest
启动一个消费终端查看logstashtest里面的内容,如下所示打印了log.txt的内容

[root@slave01 bin]# ./kafka-console-consumer.sh --zookeeper 192.168.1.61:2181 --topic logstashtest --from-beginning logstash_kafka test
动态往log.txt添加一些内容

[root@slave04 tmp]# echo "123-javis" >> log.txt 
在kafka的消费终端可以实时看到有对应的内容输出
[root@slave01 bin]# ./kafka-console-consumer.sh --zookeeper 192.168.1.61:2181 --topic logstashtest --from-beginning logstash_kafka test123-javis

附上logstsh的文档:https://www.elastic.co/guide/en/logstash/2.3/index.html


0 0