使用flume将数据流式传输到S3

时间:2014-09-24 23:23:53

标签: apache logging amazon-s3 streaming flume

我正在尝试一些非常简单的方法,我希望将内容从我的日志文件推送到S3。我能够创建一个水槽代理,它将从apache访问日志文件中读取内容并使用记录器接收器。现在我试图找到一个解决方案,我可以用“S3 sink”替换记录器接收器。 (我知道这在默认情况下不存在)

我正在寻找指引我走正确道路的一些指示。下面是我目前正在使用的测试属性文件。

a1.sources=src1
a1.sinks=sink1
a1.channels=ch1

#source configuration
a1.sources.src1.type=exec
a1.sources.src1.command=tail -f /var/log/apache2/access.log

#sink configuration
a1.sinks.sink1.type=logger

#channel configuration
a1.channels.ch1.type=memory
a1.channels.ch1.capacity=1000
a1.channels.ch1.transactionCapacity=100

#links
a1.sources.src1.channels=ch1
a1.sinks.sink1.channel=ch1

2 个答案:

答案 0 :(得分:15)

S3是基于HDFS构建的,因此您可以使用HDFS sink,您必须以这种方式将hdfs路径替换为您的存储桶。不要忘记替换AWS_ACCESS_KEY和AWS_SECRET_KEY。

agent.sinks.s3hdfs.type = hdfs
agent.sinks.s3hdfs.hdfs.path = s3n://<AWS.ACCESS.KEY>:<AWS.SECRET.KEY>@<bucket.name>/prefix/
agent.sinks.s3hdfs.hdfs.fileType = DataStream
agent.sinks.s3hdfs.hdfs.filePrefix = FilePrefix
agent.sinks.s3hdfs.hdfs.writeFormat = Text
agent.sinks.s3hdfs.hdfs.rollCount = 0
agent.sinks.s3hdfs.hdfs.rollSize = 67108864  #64Mb filesize
agent.sinks.s3hdfs.hdfs.batchSize = 10000
agent.sinks.s3hdfs.hdfs.rollInterval = 0

答案 1 :(得分:0)

这是有道理的,但是这个值的rollSize可以伴随着

agent_messaging.sinks.AWSS3.hdfs.round = true
agent_messaging.sinks.AWSS3.hdfs.roundValue = 30
agent_messaging.sinks.AWSS3.hdfs.roundUnit = minute