Fluentdを使ってTwitter Public streamsをAmazon S3に保存する
Twitter Public streamsに対して分析を行いたいと思っても、ウェブ上にDumpを公開するのはNGとされており必要なら自分で収集する必要があります。
以前は自作のPythonスクリプトを常時実行していたのですが、雑過ぎてプロセスが死ぬことが多発することとローカルのディスクに溜め込み続けていたためディスクが逼迫してしまう問題が発生。
この辺ちゃんと作り込めばいいんでしょうが、FluentdにはPublic streamsにもAmazon S3にもアクセスできるプラグインが用意されていたのでそれを使って全自動で収集し続けられるように設定してみました。
※手順はかなり昔に設定した内容を思い出しながら書いているので抜け漏れあるかもしれません。。その時はご指摘お願いします
インストール
今回はCentOS 7にインストールして動かしてみました。
#curl -L https://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
#sudo /etc/init.d/td-agent start
#sudo /etc/init.d/td-agent status
プラグインのインストール
TwitterとAmazon S3へのアクセスのためのプラグインをインストールします。
#sudo td-agent-gem install fluent-plugin-twitter
#sudo /usr/sbin/td-agent-gem install fluent-plugin-s3
td-agent.confの設定
設定をtd-agent.confの行末に追加
<source>
type twitter
consumer_key xxxxxxxxxxxxxxxxxxxxxxxxxxx
consumer_secret xxxxxxxxxxxxxxxxxxxxxxxxxxx
oauth_token xxxxxxxxxxxxxxxxxxxxxxxxxxx
oauth_token_secret xxxxxxxxxxxxxxxxxxxxxxxxxxx
tag input.twitter.sampling
timeline sampling
lang ja
output_format nest
</source>
<match input.twitter.sampling>
type copy
<store>
type s3
aws_key_id xxxxxxxxxxxxxxxxxxxxxxxxxxx
aws_sec_key xxxxxxxxxxxxxxxxxxxxxxxxxxx
s3_bucket hogehoge
s3_region ap-northeast-1
s3_enpoint s3-ap-northeast-1.amazonaws.com
path streaming_api_logs/
buffer_path /var/log/td-agent/s3
time_slice_format %Y%m%d%H
s3_object_key_format %{path}%{time_slice}_%{index}_%{hostname}.%{file_extension}
time_slice_wait 5m
buffer_chunk_limit 256M
utc
</store>
</match>
事前にTwitterとAWSのAPIは取得しておきます。
日本リージョンにバケットを作成し、バケットにAPIからアクセスの許可をしておくことが事前に必要です。
動作結果
うまく動作すると1時間おきにAmazon S3にgz圧縮されたファイルが転送されます。
時々ファイル名が_1のものが作成されますが、圧縮前のファイルサイスが256MBを超えた場合自動で連番にしてくれるようです。
データは溜め込めたんですが、これからどうやって活用していくかはこれから考えます
参考
こちらを参考にいたしました。
ありがとうございます。
Author And Source
この問題について(Fluentdを使ってTwitter Public streamsをAmazon S3に保存する), 我々は、より多くの情報をここで見つけました https://qiita.com/Dalice/items/28a55c5f82481aebe04f著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .