本當使用最新版本1.8.0
[TOC]
1 下載安裝
官網地址:http://flume.apache.org/download.html
下載下來解壓到指定目錄
2 配置
2.1 設置java目錄
進入flume目錄/config,修改flume-env.sh.template
為flume-env.sh
cp flume-env.sh.template flume-env.sh
然后編輯該文件
vim flume-env.sh
export JAVA_HOME=/data/install/jdk
export JAVA_OPTS="-Xms1000m -Xmx2000m -Dcom.sun.management.jmxremote"
2.2 添加監控的配置
創建一個文件,可以在任意目錄,建議在conf目錄,好找,這個配置是啟動的參數帶參數啟動
touch monitor_nginx.conf
填寫如下內容
# logser可以看做是flume服務的名稱,每個flume都由sources、channels和sinks三部分組成
#我們看到每個key都是logger開頭,其實這個只是一個服務名稱,也可以自由更換
# sources可以看做是數據源頭、channels是中間轉存的渠道、sinks是數據后面的去向
# 因為只是取一個名字,我們可以任意定義名字,后面所有的key,都會加上這個名字
logser.sources = src_monitor_nginx
logser.sinks = kafka_monitor_nginx
logser.channels = ch_monitor_nginx
# source
# 源頭類型是TAILDIR,就可以實時監控以追加形式寫入文件的日志
logser.sources.src_monitor_nginx.type = TAILDIR
# positionFile記錄所有監控的文件信息,是為了防止意外情況,需要停機,重啟的時候不會重復發送配置文件,所以需要這樣一個文件保存上次監控到的位置
logser.sources.src_monitor_nginx.positionFile = /data/program/flume-1.8.0/data/monitor/taildir_position.json
# 監控的文件組,這里可以監控多個文件組,每個文件組以空格相隔開
logser.sources.src_monitor_nginx.filegroups = f1
# 文件組包含的具體文件,也就是我們監控的文件,可以有多個目錄,以空格分開,文件名可以用正則表達式,目錄不允許用
logser.sources.src_monitor_nginx.filegroups.f1 = /data/nginx/logs/.*
#將絕對路徑文件名附加到事件標題時使用的標題鍵
logser.sources.src_monitor_nginx.headers.f1.headerKey1 = headerKey1
logser.sources.src_monitor_nginx.headers.f1.headerKey2 = headerKey2
#是否添加存儲絕對路徑文件名的頭文件
logser.sources.src_monitor_nginx.fileHeader = true
# channel
#事件存儲在內存中的隊列中,具有可配置的最大大小。對于需要更高吞吐量并準備在代理故障的情況下丟失暫存數據的流量來說,這是理想之選
#channel是事件在代理上進行的存儲庫。Source添加事件,Sink刪除它。
logser.channels.ch_monitor_nginx.type = memory
#存儲在內存中的最大日志數量
logser.channels.ch_monitor_nginx.capacity = 1000
#渠道將從一個渠道獲得的最大事件數量或每個交易給予一個接收器的事件數量
logser.channels.ch_monitor_nginx.transactionCapacity = 100
# kfk sink
# 指定sink類型是Kafka,說明日志最后要發送到Kafka
logser.sinks.kafka_monitor_nginx.type = org.apache.flume.sink.kafka.KafkaSink
# Kafka 集群地址,以逗號分隔
logser.sinks.kafka_monitor_nginx.kafka.bootstrap.servers = 172.16.1.56:19092,172.16.1.57:19092,172.16.1.59:19092
#設置topic
logser.sinks.kafka_monitor_nginx.kafka.topic = nginx49
#這個是kafka的優化參數,批量發送的數據個數
logser.sinks.kafka_monitor_nginx.kafka.flumeBatchSize = 20
#消息確認模式
logser.sinks.kafka_monitor_nginx.kafka.producer.acks = 1
#延遲發送的時間,為了這個批次多發一點消息
logser.sinks.kafka_monitor_nginx.kafka.producer.linger.ms = 1
logser.sinks.kafka_monitor_nginx.kafka.producer.compression.type = snappy
# 綁定數據源并且發送至通道
logser.sources.src_monitor_nginx.channels = ch_monitor_nginx
logser.sinks.kafka_monitor_nginx.channel = ch_monitor_nginx
2.3 創建主題
進入到kafka/bin目錄,執行腳本創建一個指定分區的主題,也可以不手工創建,程序創建會使用kafka配置文件中的配置分區數量
./kafka-topics.sh --create --zookeeper 172.16.1.56:2181,172.16.1.57:2181,172.16.1.59:2181 --partitions 3 --replication-factor 1 --topic nginx49
3 啟動flume進程
進入flume目錄
注意: 此處的參數 --name是指我們配置文件中指定的服務名稱,也就是key的第一個單詞
bin/flume-ng agent --conf /data/program/flume-1.8.0/conf/ --conf-file /data/program/flume-1.8.0/conf/monitor_nginx.conf --name logser -Dflume.root.logger=INFO,console &