この記事はOSS紹介 Advent Calendar 2017 の 1日目の記事です。
Rinとは
Rinは、簡単に言えばS3にアップロードしたログをRedshiftに自動で取り込むためのミドルウェアです。私は会社でfluentdと組み合わせて以下の構成図のような形で利用しています。
Rinが行っているのは実線で示している部分です。
- log aggregatorと呼ばれるfluentdが起動しているインスタンスから
fluent-plugin-s3
でS3にアップロードします - アップロードをトリガーにSQSにキューが入ります。それをlog aggregatorで起動しているRinが受信します
- RinはRedshiftで
COPY
クエリを発行します -
COPY
クエリを発行されたRedshiftはS3にアップロードされたログを取り込みます
解決される問題
- S3にアップロードされた後にイベントが発行されるため、バケットにファイルがなくて空振りすることが殆ど無い
- fluent-pluginですべてやらないため責務が分割され、さらにfluentdが刺さることもない
実際の活用例
ソーシャルゲームのカスタマーサポートを支える行動ログとredash
以上の記事ではユーザの行動ログをRedshiftにとり込み、Re:dashを用いて可視化と検索を行っていますが、ログの取り込みにRinが使われています。
明日12/2は @papix さんで、「最近発見してテンション上がったMackerel Pluginの紹介します」です。