Metabaseの設定情報をPostgreSQLに保存
Metabaseは簡単にインストールする方法がいくつか用意されています。ここではjarファイルから起動して、設定情報をPostgreSQLに保存するところまでを試します。
jarファイルでインストール
Java 8以降がインストール済みであれば、Metabaseのjarファイルをダウンロードし、java
コマンドでjarファイルを実行するだけです。
$ java -version openjdk version "13.0.1" 2019-10-15 OpenJDK Runtime Environment (build 13.0.1+9) OpenJDK 64-Bit Server VM (build 13.0.1+9, mixed mode, sharing) $ wget https://downloads.metabase.com/v0.35.4/metabase.jar $ java -jar metabase.jar
起動時のログが流れます。
3000番ポートにブラウザでアクセスします。
http://localhost:3000
Welcomeの画面になります。
「Let's get started」をクリックすると、管理者となるユーザの情報や、可視化対象となるデータの保存されているデータベースの接続情報などを登録する画面になります。それらを登録すると使えるようになります。
ローカルにはこんなファイルができています。
metabase.db.mv.db metabase.db.trace.db metabase.jar plugins
metabase.db.*
はH2というデータベースのファイルです。H2はPure Javaで動くデータベースです。
なにも設定せずにMetabaseを起動するとH2のファイルが生成されて、Metabaseのユーザ情報などはこのファイルに保存されます。
気軽にMetabaseを試すにはこれがいいのですが、本番運用ではPostgreSQLなどの運用しやすいデータベースに変更することが推奨されています。
設定情報の保存先をPostgreSQLに設定
ユーザ情報などの設定情報を保存するPostgreSQLを構築します。私は今回GCPのCompute Engine上で試していたので、同じくGCPのCloud SQL for PostgreSQLで試しました。
設定情報を保存するデータベースとMetabaseで可視化する対象となるデータのデータベースは別々に設定するのですが、同じPostgreSQLにすることもできます。
PostgreSQLを構築したら、起動しているMetabaseをいったん Ctrl-C を押して止めて、以下の環境変数を設定します。PostgreSQLのホスト、ポート番号、データベース名、接続ユーザ名、パスワードを適切な値に設定します。
$ export MB_DB_TYPE=postgres $ export MB_DB_DBNAME=metabase $ export MB_DB_PORT=5432 $ export MB_DB_USER=postgres $ export MB_DB_PASS="XXXXXXXX" $ export MB_DB_HOST=10.XXX.XXX.XXX
再度java
コマンドでjarファイルを実行します。
$ java -jar metabase.jar
設定情報がH2のファイルではなく、新しいPostgreSQLになりましたので、さきほど登録したユーザ情報が参照されなくなり、最初のWelcome画面に戻っていることが確認できます。
ちなみにPostgreSQLの中を見てみたら、次のテーブルが作成されていました。Metabase起動時に自動で作成されるものです。最初に登録するユーザ情報などもこの中に保存されます。
activity card_label collection collection_revision computation_job computation_job_result core_session core_user dashboard_favorite dashboardcard_series data_migrations databasechangelog databasechangeloglock dependency dimension label metabase_database metabase_field metabase_fieldvalues metabase_table metric metric_important_field permissions permissions_group permissions_group_membership permissions_revision pulse pulse_card pulse_channel pulse_channel_recipient qrtz_blob_triggers qrtz_calendars qrtz_cron_triggers qrtz_fired_triggers qrtz_job_details qrtz_locks qrtz_paused_trigger_grps qrtz_scheduler_state qrtz_simple_triggers qrtz_simprop_triggers qrtz_triggers query query_cache query_execution report_card report_cardfavorite report_dashboard report_dashboardcard revision segment setting task_history view_log
以上。