agent里面包含3个核心的组件:source—->channel—–>sink,类似生产者、仓库、消费者的架构。
source:source组件是专门用来收集数据的,可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定义。
channel:source组件把数据收集来以后,临时存放在channel中,即channel组件在agent中是专门用来存放临时数据的——对采集到的数据进行简单的缓存,可以存放在memory、jdbc、file等等。
sink:sink组件是用于把数据发送到目的地的组件,目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定义。
项目中日志放到kafka中,topic_sdk_offline kafka topic
Flume :管道 —-个人认为比较适合有多个生产者场景,或者有写入Hbase、HDFS和kafka需求的场景
Kafka :消息队列—–由于Kafka是Pull模式,因此适合有多个消费者的场景
agent.sources = s1
agent.channels = c1
agent.sinks = k1
调用命令 exec
agent.sources.s1.type = exec
内容
agent.sources.s1.command=tail -F /logs/app.log
agent.sources.s1.channels = c1
channel配置
agent.channels.c1.type = memory
agent.channels.c1.capacity = 10000
agent.channels.c1.transactionCapacity = 10000
agent.channels.c1.byteCapacityBufferPercentage = 20
agent.channels.c1.byteCapacity = 800000
sink配置 目的地为kafka、
agent.sinks.k1.type = org.apache.flume.sink.kafka.KafkaSink
kafka主题
agent.sinks.k1.topic = test
kafka的地址
agent.sinks.k1.brokerList = localhost:9092
agent.sinks.k1.requiredAcks = 1
agent.sinks.k1.batchSize = 20
agent.sinks.k1.channel = c1
flume 启动命令
./flume-ng agent –conf conf -f ../conf/flume-conf.properties -n agent -Dflume.root.logger=INFO,console