使用flume抓取tomcat的日志文件下沉到kafka消费

Posted 红尘里

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用flume抓取tomcat的日志文件下沉到kafka消费相关的知识,希望对你有一定的参考价值。

Tomcat生产日志

Flume抓取日志下沉到kafka中

  1. 将写好的web项目打包成war包,eclise直接导出export,IDEA 在artifact中添加新的artifact-achieve项,选择web项目所在目录,再build即可
  2. 在Linux的Tomcat  Webapp目录下放入war包,在bin下启动Tomcat时,war包会自动解压,然后从浏览器访问,注意是http://bigdata2:8080/WebAnalysis_war/ 的形式 host:8080/+项目文件名
  3. 配置flume的conf文件如下,直接抓取到kafka

agent.sinks = k1

agent.sources = s1

agent.sources = s1                         

agent.channels = c1

agent.sinks = k1      

agent.sources.s1.type=exec        

agent.sources.s1.command=tail -F /home/bigdata/weblogs/access.log

agent.sources.s1.channels=c1

agent.channels.c1.type=memory

agent.channels.c1.capacity=10000

agent.channels.c1.transactionCapacity=100

#设置Kafka接收器

agent.sinks.k1.type= org.apache.flume.sink.kafka.KafkaSink

#设置Kafka的broker地址和端口

agent.sinks.k1.brokerList=bigdata3:9092

#设置Kafka的Topic

agent.sinks.k1.topic=kafkatest

#设置序列化方式

agent.sinks.k1.serializer.class=kafka.serializer.StringEncoder

agent.sinks.k1.channel=c1

启动flume

flume-ng agent -c conf -f /home/bigdata/flumeconf/log_kafka.log -n agent  -Dflume.root.logger=INFO,console

  1. 启动kafka

./kafka-server-start.sh -daemon ../config/server.properties

如果没有创建该topic则新建topic

bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic kafkatest

启动消费者

./kafka-console-consumer.sh --zookeeper bigdata3:2181 --topic kafkatest --from beginning

  1. 在JSP上点击添加日志文件内容,在Kafka中就可以消费的到
  2. 解决中文乱码问题

1修改tomcat的server.xml文件:

<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>

2表单中文乱码,在<%@ page %>下加一句<% request.setCharacterEncoding("utf-8");%>

或在servlet中添加request.setCharacterEncoding("utf-8")

 

以上是关于使用flume抓取tomcat的日志文件下沉到kafka消费的主要内容,如果未能解决你的问题,请参考以下文章

Flume总结

Flume 日志聚合

flume收集tomcat日志保存到本地目录

0#1hadoop生态圈之日志采集框架Flume入门

使用Apache Flume抓取数据

flume win10怎么运行