使用flume抓取tomcat的日誌文件下沈到kafka消費
Tomcat生產日誌
Flume抓取日誌下沈到kafka中
- 將寫好的web項目打包成war包,eclise直接導出export,IDEA 在artifact中添加新的artifact-achieve項,選擇web項目所在目錄,再build即可
- 在Linux的Tomcat Webapp目錄下放入war包,在bin下啟動Tomcat時,war包會自動解壓,然後從瀏覽器訪問,註意是http://bigdata2:8080/WebAnalysis_war/ 的形式 host:8080/+項目文件名
- 配置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
- 啟動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
- 在JSP上點擊添加日誌文件內容,在Kafka中就可以消費的到
- 解決中文亂碼問題
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消費