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の画面になります。

f:id:suzuki-navi:20200713234747p:plain

「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

以上。