5分で誰でもできる!FlydataではじめるRedshift
Tokyo Otaku Modeでは、メール配信や広告配信ログ、ユーザーアクションログなどをRedshiftに保存しています。そこから集計を行い、A/Bテストの判定に利用したり、社内管理ツールで結果を出力してマーケティングに活用したりしています。
Redshiftについては、「Amazon Redshiftではじめるビッグデータ処理入門」に詳しいので、そちらをご参照ください。
TOMがビッグデータを処理するソリューションとしてRedshiftを採用した大きな理由のひとつに、PostgreSQL互換のインターフェースが用意されている点があります。クライアントとしてpsql
, JDBC
, ODBC
など汎用的で枯れたものが利用できるので、システムの連携をとるのがとても簡単です(Node.jsの場合はnode-postgresなどが利用できます)。また、SQLがそのまま使え、学習コストが低い点もメリットと言えます。
さらに、Flydataを利用すれば、FluendやKinesisの面倒な設定すら不要になり、ほぼいきなりRedshiftを使うことも可能です。
今回は、いままでRedshiftに触れたことのない方でも、Flydataを使って5分でログの継続アップロードから集計まで行える方法を解説したいと思います。
Flydataとは
FlyDataは、一度設定するだけで継続的にRedshiftにデータをアップロードしてくれるサービスです。
- 面倒な連携設定をワンライナーで完結
- 設定はWebのコンソールから可能
- 取り急ぎRedshiftがどういうものかを試したい場合は1GBまで無料で使える
というような特徴があります。
実際にSign upからRedshiftへログをアップロードして集計するまでの手順を見ていきましょう。
ハンズオン
事前準備をする
Flydataを利用する前に、
- ログの形式
- サーバー上のログのフルパス
- Redshift上のテーブル名とスキーマ
を決めておく必要があります。
ログ
Flydataがサポートしているログはcsv
, tsv
, json
, apache_access_log
になります。
今回はデータの並び順を気にしなくていいjson
を選択します。
アクセスログっぽいものとして、アプリからは以下のようなログを出力することにします。
key | type |
---|---|
date | 日時 |
method | HTTPメソッド |
path | アクセスされたパス |
ip | アクセス元IPアドレス |
パスは環境によって変わると思いますが、今回は /var/log/test.log
とします。
テーブル名とスキーマ
Redshiftは事前にテーブル設計が必要です。ログ形式にあったスキーマを決めます。
1 | CREATE TABLE test_log ( |
Flydataを使ってみる
まずはSign up
Flydata - startよりSign upします。
準備した情報を登録する
Dashboardへ移動し、New Data Entry
を押して、準備したパス、テーブル名を設定します。
設定完了。
テーブルを作る
Access Redshiftへ移動し、スキーマをコピペしてテーブルを作ります。
Run
で作成完了。
以上でFlydataの設定は完了です。
サーバーにクライアントをインストールする
Dashboardへ移動し、ページ最下部にあるInstall Command
をコピーして、サーバーで実行します。(sudo 可能なアカウントで実行して下さい)
1 | $ bash <(curl -L https://console.flydata.com/i/xxxxxxxx) |
クライアントのインストール&セットアップはこれで終了です。
ログを出力してみる
アクセスされたら、決められたパスに決められた形式のjsonを吐き出す簡単なhttpサーバーをnode.jsで立ち上げてみます。
1 | var http = require('http'); |
起動1
node ./server.js
curl
でアクセスしてみる
1 | curl localhost:3000 |
ログが出力されているか確認してみる
1 | cat /var/log/test.log |
データ確認
Flydataコンソール
Redshiftへ取り込まれるまで少しタイムラグ(5分くらい)があるので、しばらく経ってからAccess RedshiftでSQLを叩いてログが保存されているか確認してみます。
ログの内容が表示されればOKです。
psqlで
順番が前後しましたがTry Redshiftでチュートリアルを行うと、画面最下部にpsqlを利用した接続例が示されます。この通り、psqlコマンドを叩くとpsqlをクライアントにして直接SQLを叩くことができます。
1 | PGPASSWORD=xxxxxxxxxxxx psql -U xxxxxxxxxx -h flydata-sandbox-cluster.x.us-east-1.xxxxxxxxxx.amazonaws.com -p xxxx -d xxxxxxxxxxxx |
まとめ
以上の手順に従えば、5分でRedshiftをはじめられるでしょう。
実際はテラバイト・ペタバイト級のデータを高速に処理するといった目的で利用するツールですが、こんなに簡単に利用できることを知っていれば、新しい発見があると思います。
Tokyo Otaku Modeではビッグデータの解析、それを使ってデータドリブンでサービスの開発をしたいエンジニアも募集中です。興味のある方はこちらからご応募下さい。