flume+Kafka采集log4j数据

简介:测试flume+Kafka集成来采集log4j产生的日志
环境:

  • Flume 1.6.0
  • Kafka 0.11.0.2
  • jdk 1.8.0_121
  • Kafka集群、flume安装服务器上ubuntu16.04.5上

一、log4j生成数据

在window上,编写Java程序,模拟日志生成

import org.apache.log4j.Logger;
/*
    模拟日志生成
 */
public class LogProduce {

    private static Logger logger = Logger.getLogger(LogProduce.class.getName());

    public static void main(String[] args) throws InterruptedException {
        int index =0;
        while (true) {
            Thread.sleep(1000);
            logger.info("value : " + index++);
        }
    }
}

在项目的resources文件夹中加入 log4j.properties 配置文件,配置文件中加上log4j对接flume的配置

log4j.rootCategory=INFO, stdout,flume
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSSS} [%t] [%c] [%p] - %m%n

# output log to flume
log4j.appender.flume = org.apache.flume.clients.log4jappender.Log4jAppender
log4j.appender.flume.Hostname = 172.16.13.151
log4j.appender.flume.Port = 41414
log4j.appender.flume.UnsafeMode = true

加上依赖

  <dependency>
       <groupId>org.apache.flume.flume-ng-clients</groupId>
       <artifactId>flume-ng-log4jappender</artifactId>
       <version>1.6.0</version>
</dependency>

在打成jar包,注意把依赖的 log4jflume-ng-clients 加上,生成的jar包放到服务器上。以下所有命令均在服务器上执行。

二、flume配置文件

# logger-mem-kafka.conf

agent1.sources=avro-source
agent1.channels=logger-channel
agent1.sinks=kafka-sink

#define source
agent1.sources.avro-source.type=avro
agent1.sources.avro-source.bind=0.0.0.0
agent1.sources.avro-source.port=41414

#define channel
agent1.channels.logger-channel.type=memory
agent1.channels.logger-channel.capacity=1000
agent1.channels.logger-channel.transactionCapacity=100

#define sink
agent1.sinks.kafka-sink.type=org.apache.flume.sink.kafka.KafkaSink
agent1.sinks.kafka-sink.topic=fluStream
agent1.sinks.kafka-sink.brokerList=szgwnet01:9092,szgwnet02:9092,szgwnet03:9092
agent1.sinks.kafka-sink.requiredAcks=1
agent1.sinks.kafka-sink.batchSize=20

#bind source/channel/sink
agent1.sources.avro-source.channels=logger-channel
agent1.sinks.kafka-sink.channel=logger-channel

在服务器上启动flume

./bin/flume-ng agent --conf ./conf/ --conf-file ./conf/logger-mem-kafka.conf  --name agent1 -Dflume.root.logger=DEBUG,console

没有报错即可,窗口放着后续观察。

三、Kafka配置

相关的Kafka命令可以查看我的另一篇文章 Kafka简单使用

  1. 创建topic
kafka-topics.sh --create --zookeeper szgwnet01:2181,szgwnet02:2181,szgwnet03:2181 --replication-factor 3 --partitions 3 --topic fluStream
  1. 启动一个消费者观察结果
kafka-console-consumer.sh --bootstrap-server szgwnet01:9092,szgwnet02:9092,szgwnet03:9092 --topic fluStream --from-beginning

fluStream 这个topic为空,所以没有输出,窗口放着后续观察结果。

四、测试

服务器上执行jar包,模拟日志生成
注意:打包时,我指定了主类,加上了依赖的jar包,所以直接可以运行

java -jar Spark2.11-bigdata-flume-jar-with-dependencies.jar 

运行后可以看到日志在控制台输出:
在这里插入图片描述
然后到刚才运行flume的窗口,也可以查看到相应的信息:
在这里插入图片描述
最后在Kafka消费者窗口中,要等几秒钟才能看到消费的数据(因为在flume配置文件中,配置了batchSize为20,flume会等20条数据打包一起发送给Kafka):
在这里插入图片描述
看到这些结果后,测试就成功了!!在生产环境中,可以把三个命令放在后台运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值