Metabase BIツールをAWS Elastic Beanstalkで構築してみた

2018.01.11

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

DI部のおおたきです。Metabaseをご存知でしょうか。このツールはOSSのBIツールで比較的簡単にデータの可視化ができるようです。
Metabaseを動作させる方法として幾つかあるのですが公式サイトに記載されている1つのElastic Beanstalkを使っての構築をしてみました。

構築してみる

では早速公式サイトの手順どおりに構築してみます。執筆時点でのMetabaseのバージョンはv0.27.2になります。
公式サイトには以下のElastic Beanstalkの設定のリンクが張ってあり、簡単に設定ができるようになっています。
Launch Metabase on Elastic Beanstalk リンクをクリックするとElastic Beanstalkの設定が既にされている状態になっています。 画面下の「Application code」項目のみが「Sample application」になっているので「Upload your code」を選択します。

「Upload」ボタンをクリックすると、「Public S3 URL」項目に以下のようなS3のパスが設定されているのが確認できます。

https://downloads.metabase.com.s3.amazonaws.com/v0.27.2/metabase-aws-eb.zip

これで設定が完了なので「Review and launch」ボタンをクリックします。簡単に設定ができたと思ったのですが、以下のようにエラーがでてしまいます。

何度か試したのですが、やはりうまくいきませんでした。
そこで公式サイトのリンクからのやり方はあきらめて新規にElastic Beanstalkの設定をします。
Elastic Beanstalkの画面の右上の「Create New Application」ボタンをクリックします。
「Application Name」を入力してアプリケーションを作成します。

※公式サイトのリンクからElastic Beanstalkの画面に遷移するとリージョンが「Virginia」になっているので、新規で作成する際は「Tokyo」に変更しました。

アプリケーションが作成できたら、画面右上の「Actions」メニューから「Create Environment」を選択して環境を作成します。
「Web server environment」を選択します。

「Select」ボタンをクリックして「Create a new environment」画面に遷移します。
「Platform」項目で「Docker」を選択します。「Application code」項目で「Upload your code」を選択します。
これは先ほど公式サイトからリンクで設定と同じです。
「Upload」ボタンをクリックします。今回「Tokyo」リージョンで構築しているため先ほどの「Public S3 URL」を設定すると、S3のリージョンと異なるためエラーとなってしまいます。(VirginiaリージョンでElastic Beanstalkを構築している場合は問題ありません)
そのため、事前にhttps://downloads.metabase.com.s3.amazonaws.com/v0.27.2/metabase-aws-eb.zipからファイルをダウンロードしておき、ファイルをアップロードします。

DBの設定をする

Metabaseは設定内容をH2 DBに保存することができますが、公式サイトのインストールガイドに合わせてRDSのPostgreSQLに保存するようにします。
画面下の「Configure more options」ボタンをクリックします。「DataBase」項目の「Modify」ボタンをクリックし、DBの設定をします。
「Engine」項目で「postgres」を設定し、他の項目の値を設定します。

「Save」ボタンをクリックして保存します。

EC2の設定をする

次に「Instances」項目の「Modify」ボタンをクリックし、EC2の設定をします。
「Instance type」項目で「t2.small」を選択します。

※デフォルトの「t2.micro」で構築した際に、CPUが100%で張り付く現象が発生したためインスタンスサイズを上げています。
「Save」ボタンをクリックして保存します。
今回は「Load balancer」等は設定せず最小限の構成で構築したいと思いますのでElastic Beanstalkの設定は以上です。
「Create environment」ボタンをクリックします。完了するまで10分程度かかります。
完了すると画面上にURLが表示されるので、クリックするとMetabaseの画面が表示されるようになります。
ただし、Elastic Beanstalkで起動したEC2のセキュリティグループはデフォルトで80番ポートが公開されている設定になっているため誰にでもMetabaseがアクセスされてしまいます。その為、最初にEC2のセキュリティグループの設定を変更しておくことをオススメします。

Metabaseの設定をする

では、Metabaseにアクセスしてみます。アクセスすると以下のような画面が表示されます。

「Let's get started」リンクをクリックします。
管理者アカウントの設定画面が表示されるので入力します。

入力したら、「Next」ボタンをクリックします。次に接続するデータソースの設定をします。
この項目は後でも設定は可能なので、今回は「I'll add my data later」リンクをクリックしてスキップします。
最後に、製品の使用方法に関する匿名の情報を収集を許可するかどうかの設定をします。
データや質問の結果について何も収集しないとのことですが、気になるようでしたらオフにしておきましょう。

Metabaseに触ってみる

Metabaseでグラフを表示してみます。
画面上部の「New Question」ボタンをクリックし、Customメニューを選択します。デフォルトで登録されている「Sample Dataset」を選択します。
選択するとテーブル一覧が表示されるので「Orders」を選択し、「Get Answer」ボタンをクリックします。
登録されているデータ一覧が表示されます。

このデータを使って過去30日の日ごとの売上金額を表示させてみます。
まず、「FILTERED BY」項目から「Created At」を選択し、「Previous」に30を設定します。

次に「VIEW」項目から「Sum of」を選択し、「Total」を選択します。

次に「GROUPED BY」から「Created At」を選択します。

「Get Answer」ボタンをクリックします。これで日ごとの売上金額が表示されます。

最後に「VISUALIZATION」項目が「Table」になっているので「Bar」に変更します。


棒グラフが表示されます。


今回表示したグラフが実際にどのようなSQLが実行されているかも、画面右上の「View the SQL」アイコンクリックすると以下のように表示され確認することができます。またこのSQLをカスタマイズすることも可能です。

まとめ

いかがだったでしょうか。今回はElastic Beanstalkを使ってのMetabaseの構築から簡単なグラフを表示するまでのご紹介でした。
Metabaseでどのようなことができるかについては今後ご紹介できたらと思います。
今回は以上です。