はじめに
今回はTwitter Streaming APIとFluentd、FluentdとMongoDBを連携させて、MongoDB内にツイートデータを溜めていきたいと思います。(Fluentdを使ってみたかっただけ)
環境
Vagrant1.9.3
Ubuntu14.04
Python3.5
Anaconda3-4.3.0
Fluentdのインストール
下記コマンドを実行してインストールします。
$ curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh
・fluentdの起動
sudo service td-agent start
・fluentdの停止
sudo service td-agent stop
・fluentdの状態確認
sudo service td-agent status
Twitter Streaming APIとFluentdを連携させる
Twitterからツイートを取得し、fluentdに流します。
Twitter Streaming APIを使えるようにする
まずこのサイトを参考にTwitterアプリケーションの登録や Twitter Streaming API に必要な以下の4つの情報を取得してください。
・Consumer Key
・Consumer Secret
・Access Token
・Access Token Secret
twitterプラグインのインストール
下記コマンドを実行すればインストールできます。
$ sudo yum -y install openssl-devel libcurl libcurl-devel gcc-c++
$ sudo td-agent-gem install install eventmachine
$ sudo td-agent-gem install fluent-plugin-twitter
td-agent.conf の設定
/etc/td-agent/ 内のtd-agent.confを編集します。
sourceディレクティブで入力方法を指定します。
CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRETの部分には、各自が取得したものを入力してください。
<source>
@type twitter
consumer_key CONSUMER_KEY
consumer_secret CONSUMER_SECRET
access_token ACCESS_TOKEN
access_token_secret ACCESS_TOKEN_SECRET
tag input.twitter
timeline sampling
lang ja
output_format nest
</source>
FluentdとMongoDBを連携させる
同様に/etc/td-agent/ 内のtd-agent.confを編集します。
matchディレクティブで出力方法を指定します。
今回はfluentdデータベースのtwitterコレクションにツイートを格納します。
<match input.twitter>
@type mongo
host localhost
port 27017
database fluentd
collection twitter
flush_interval 10s
</match>
ツイートを取得
これで準備は整いました。
sudo service td-agent start
でfluentdを起動させ、ツイートの取得を開始します。
しばらくしてからmongoに入って、ツイートが格納されているか確認してみます。
> use fluentd
> db.twitter.count()
で確認すると、
9294
となって、9294件のツイートがしっかりMongoDBに保存されているのがわかります!
知らないユーザーの方たちをツイートをランダムに取得していたので、中身をピックアップして載せるのはやめます...
まとめ
今回はTwitterAPI → Fluentd → MongoDBの一連の流れをやってみました。データ分析系の記事を読んでいるとFluentdの名前をよく目にするので、一度使ってみたかったというのが主な動機でした。
今回はツイートを取得するだけで終わりましたが、今度はこれを利用して大量のツイートからテキストマイニングなどもしてみたいです。