2014-09-24 16 views
5

Ich versuche Gerinne für etwas sehr einfaches, wo ich Inhalt von meinen Protokolldateien auf S3 schieben möchte. Ich konnte einen Kanalagenten erstellen, der den Inhalt aus einer Apache-Zugriffsprotokolldatei liest und eine Logger-Senke verwendet. Jetzt versuche ich eine Lösung zu finden, bei der ich die Logger-Senke durch eine "S3-Senke" ersetzen kann. (Ich weiß, das ist nicht standardmäßig vorhanden)Verwenden Sie Gerinne, um Daten zu S3 zu streamen

Ich suchte nach einigen Zeigern, um mich in den richtigen Pfad zu leiten. Unten ist meine Testeigenschaftendatei, die ich momentan verwende.

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 

Antwort

14

S3 über HDFS gebaut wird, so können Sie HDFS sink verwenden, müssen Sie hdfs Pfad zu Ihrem Eimer auf diese Weise ersetzen. Vergessen Sie nicht, AWS_ACCESS_KEY und AWS_SECRET_KEY zu ersetzen.

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 
+0

begleitet werden, was, wenn Sie den Zugriff auf die hdfs nicht haben? – user99999991

0

Dies macht Sinn, kann aber rollSize dieses Wertes von

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