目次
この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
20分くらいで、BIツール・redashがAWSでシュッと使えるようになる記事です。 https://redash.io/
Redashとは
Redash はデータソースからのデータの取得・取得したデータの可視化ができるWebアプリです。
本当はredashで作ったかっこいいグラフの画像を記事に貼って紹介したかったのですが、かっこいいグラフにできるデータがまだありません。残念です。
この記事を読めば、20分くらいでとりあえずAWSでOSS版のredashが動くようにはなるはずです。
インストール
用意されているAMIを使いましょう。一瞬です。アジアパシフィック (東京) はap-northeast-1 なので、 ami-34cfe853 を使ってインスタンスを作ります。
https://redash.io/help-onpremise/setup/setting-up-redash-instance.html
最初は今使っているamazon linuxのインスタンスに同居させようかと思っていましたが、amazon linux向けの
プロビショニングスクリプト が古いこともあり、少し格闘して諦めました。やめましょう。
ubuntuならなんとかなると思います。
用意されているAMIを使う場合は、とりあえずインスタンスタイプとセキュリティグループだけ気をつければなんとかなります。
インスタンスタイプ
for small deployments t2.small should be enough
だそうです。 素直にこのアドバイスに従ってt2.smallかそれ以上にメモリのあるインスタンスタイプを選びましょう。
素直ではないので t2.micro を使っていたところ、しばらくするとメモリが足りなくなったようでどんどんもっさりしていきました。
起動してしばらくはなんとか動いていたので、少し試してみたい程度ならなんとかなりますが。
セキュリティグループ
http, https のために80,443番ポートをあけておきましょう。
AWSのデータソースを使うなら、このセキュリティグループからアクセスできるようにデータソースのセキュリティグループを編集する必要があるかもしれません。
インスタンスの作成・起動ができればこれでもうredashが使えます。
ブラウザでパブリックDNSなり http://ec2-xx-xxx-xxx-xxx.ap-northeast-1.compute.amazonaws.com/setup にアクセスしてみましょう。管理者アカウントが登録できるはずです。
管理者アカウントが登録できればデータソースやクエリの登録・ダッシュボードの作成ができるようになります。よかったですね。
アップデート
AMIのredashはそこそこ新しいバージョンなので、
cd /opt/redush/current
sudo bin/upgrade
だけでアップデートができます。
currentはシンボリックリンクなので、アップデート後はcurrentのリンク先は今いるのとは別のディレクトリになります。
設定
一人で使うぶんにはこれで使えるには使えるのですが、せっかくのWebアプリなので他の人にも共有・編集してもらいたいですよね。
新しくユーザーを登録するには2つ方法があります。
- Googleアカウントで認証する
- 名前・メールアドレスを入力して招待する
Googleアカウントで認証する
Googleアカウントを使う場合はドメインによる制限はできますが、それ以上に細かいユーザー登録の制限はできません。
例えば社内の誰でもアクセスしてもよいような場合ならば便利ですが、同じドメインの人全員に登録されてしまうと困る場合はこの方法を使わずにメールアドレスを入力して招待したほうがよいでしょう。
一応redashにはグループを作ってアクセス権限を管理する仕組みもありますが、デフォルトでは最初に入れられるグループの権限が強めです。
気をつけてやりましょう。
GoogleAPI側の設定
Google APIs コンソールから色々と登録します。
https://console.developers.google.com/projectselector/apis
プロジェクトを作成または選択して、認証情報を作成します。
作成する認証情報はOAuthクライアントID、アプリケーションの種類はWebアプリケーションです。
javascript生成元またはリダイレクトURIの入力を求められますが、
- javascript生成元: http://[hostname]
- リダイレクトURI: http://[hostname]/oauth/google_callback
です。
この認証情報のクライアントIDとクライアントシークレットをredash側に登録します。
redash側の設定
redashの本体は /opt/redash/current にあります。
sshでログインして、ドキュメントにある通りのことをしましょう(やっとそれっぽい作業が始まりましたね!)
- .env に二行ほど追加します。
export REDASH_GOOGLE_CLIENT_ID="さっきのクライアントID"
export REDASH_GOOGLE_CLIENT_SECRET="さっきのクライアントシークレット"
- ログインを許可するGoogleアカウントのドメインを指定します。
sudo -u redash bin/run ./manage.py org set_google_apps_domains "allowed-domain.com"
- redashを再起動します。
sudo supervisorctl start redash_server
晴れてGoogleアカウントでログインできるようになりました。よかったですね。
Googleアカウントを使わない場合
アプリ上で登録する
Webアプリ上の Settings > USERS から新しいユーザーの登録ができます。
メール送信の設定がちゃんとできていれば、招待用URLが記載されたメールが届きます。
ちゃんとできていなかった場合(または設定しない場合)でも招待用のページへのURLが表示されるので、別の方法で送りつけることができればなんとかなります。
招待用URLは環境変数 REDASH_HOST
を設定しないとうまく表示されません。
今のところ真面目にメールを送信できる環境を作る気がないので、とりあえずこれだけ設定します。(気持ちの問題です)
redashの本体は /opt/redash/current 以下にあります(二回目)。
.envに以下を追加して、
export REDASH_HOST="http://[hostname]/"
redashを再起動します。
sudo supervisorctl start redash_server
コマンドラインから登録する
コマンドラインからもユーザーの管理ができます。
ドキュメントが見つからないので、 redash/cli/users.py を見てやることになりそうです。
一番害のないコマンドはユーザー一覧を表示する list です。
sudo -u redash bin/run ./manage.py users list
ユーザーの作成(+パスワードの設定)
sudo -u redash bin/run ./manage.py users create example@example.com "Example User"
admin権限の付与
sudo -u redash bin/run ./manage.py users create example@example.com "Example User"
あたりがコマンドラインから設定できます。
コマンドラインから他の設定変更もできるようです。
まとめ
きっと動くようにはなっているはずです。よかったですね。
ec2インスタンスは再起動するたびにIPアドレスが変わるので、Elastic IPで固定IPの取得・インスタンスへの紐付けくらいはしておいたほうがよさそうです。
20分くらいでできます!と書きましたが、amazon linuxにredashを入れようと奮闘したり、t2.microでmysqlクライアントを入れようとしてメモリが足りなかったりしてもっと時間がかかりました。素直にやりましょう。
かっこいいグラフが作れるようになったあかつきには、AWSで作ってあるMySQLサーバーをデータソースに設定したり、クエリ登録してみたり、グラフを作ってみたりした記事を書きたいです。