FluentdでURL付きツイートを漏れなく収集する方法
Twitterで言及されている様々な記事のURLを収集したいと考えた時、次の方法が選択肢となります。
前者の方法では単位時間毎のAPIコール制限を容易に超えてしまうので避けたいところですね。
そこでストリーミングAPIを使いたい所ですが、URLのトラッキングを行う方法がわかりにくかったので調べてみました。
ストリーミングAPIでのURLトラッキング方法
その方法は意外なほどシンプルでした。
ドットやスラッシュなどの記号を半角スペースにして、コンマに並べるというものです。
例えば、"example com"と指定すると、次のパターンにマッチします。
example.com
www.example.com
foo.example.com
foo.example.com/bar
I hope my startup isn’t merely another example of a dot com boom!
参考: https://dev.twitter.com/streaming/overview/request-parameters#track
設定サンプル
先ほどの手法を元に、fluent-plugin-twitterを用いてツイートを収集する方法はこちらです。
なお、事前にFluentdを実行する環境およびTwitterのAPIキーの準備が整っていることとします。
<source> type twitter # APIキーを指定 consumer_key ******************* consumer_secret ************************************** oauth_token ************************************** oauth_token_secret ************************************** # タグを指定 tag twitter.keyword # 取得タイムライン種別を指定 timeline tracking # 収集したいキーワードを指定 (qiita.comとmatome.naver.jpのURL付きツイートを収集) keyword qiita com,matome naver jp # もしツイートの言語を絞る際は指定する #lang ja,en # データ構造 output_format nest </source> # JSON形式でローカルディスクに保存する <match twitter.keyword> type file path /var/log/td-agent/twitter_keyword_*.json symlink_path /var/log/td-agent/twitter_keyword.json format json append true compress gzip </match>
なお、もしハッシュタグを検索したい場合にはトリッキーですが、次のようにプレースホルダを指定してみてください。
"#matome" であれば、keyword ${hashtag}matome
と設定しましょう。プラグイン内で自動的に展開されてハッシュタグとして扱われます。
まとめ
Fluentd Advent Calendar 22日目の内容は、Fluentd+twitterプラグインのTips紹介でした。
Twitterのデータ収集など、オンラインバッチ処理にもってこいのデータソースですね。
是非何かに役立ててみてください。