環境
- Ubuntu 18.04 @GCP
- OpenJDK 1.8
- Metabase 0.32
下準備
apt が済んだら Java をインストールします。今は OpenJDK ですね。
$ sudo apt update
$ sudo apt install openjdk-8-jdk
$ java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)
次に、jar ファイル置くディレクトリ掘って Metabase をダウンロードします。今回は v0.32 です。
$ sudo mkdir /opt/metabase
$ sudo wget -O /opt/metabase/metabase.jar http://downloads.metabase.com/v0.32.8/metabase.jar
この時点でもう Metabase を起動できますがもう少し整備します。
systemd に Metabase を登録
Metabase の実行は java -jar metabase.jar
で出来ますが、停止、再起動などが面倒なので、systemd に Metabase を登録して使いやすくします。
まずはユニット定義ファイルを作成します。
sudo vim /etc/systemd/system/metabase.service
metabase.service の中身はこんな感じ。
[Unit]
Description=Metabase
Documentation=https://www.metabase.com/docs/latest
After=local-fs.target
[Service]
User=root
Environment="MB_DB_TYPE=h2"
Environment="MB_DB_FILE=/opt/metabase/h2.db"
WorkingDirectory=/opt/metabase
ExecStart=/usr/bin/java -Dlog4j.configuration=file:/opt/metabase/log4j.properties -Xms128m -Xmx256m -jar /opt/metabase/metabase.jar
ExecStop=/bin/kill -SIGTERM $MAINPID
SuccessExitStatus=143
TimeoutStopSec=10
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
ユニット定義ファイルのポイントは以下の2つです。
- 環境変数を与える
- log4jの設定を与える
以下ひとつずつ見ていきます。
環境変数を与える
Metabase を実行する際に環境変数を2つ与えます。いずれも Metabase の設定を格納するDBの設定です。
Environment="MB_DB_TYPE=h2"
Environment="MB_DB_FILE=/opt/metabase/h2.db"
書いてあるとおりですが、MB_DB_TYPE=h2
で設定格納する DB に H2 を利用することを宣言します。これはデフォルト値なので明示しなくても多分大丈夫。
続いて MB_DB_FILE=/opt/metabase/h2.db
で H2 のデータ置き場を定義します。こちらは結構重要で、デフォルトだと java
コマンドの実行場所に H2 のデータファイルが作成されてしまうので明示的に設定しておきます。
log4jのプロパティファイルを読み込ませる
Metabase はデフォルトではログを吐きません。そこで Metabase 内の log4j の設定を上書きします。
ExecStart=/usr/bin/java -Dlog4j.configuration=file:/opt/metabase/log4j.properties -Xms128m -Xmx256m -jar /opt/metabase/metabase.jar
このコマンドの-Dlog4j.configuration=file:/opt/metabase/log4j.properties
の部分ですね。
設定ファイルの内容は後述するので、先に systemd の再読込だけやってしまいます。
ユニット定義ファイルを読込み
作成したユニット定義を読み込ませます。
$ sudo systemctl daemon-reload
$ sudo systemctl enable metabase.service
あとは以下のコマンドで起動・停止・再起動・ステータス確認ができます。
$ sudo systemctl start metabase
$ sudo systemctl stop metabase
$ sudo systemctl restart metabase
$ sudo systemctl status metabase
log4j の設定ファイルを作成する
先ほどユニット定義ファイルで参照した log4j の設定ファイルを作成します。
sudo vim /opt/metabase/log4j.properties
内容はこちらをベースに若干書き換えます。
metabase/log4j.properties at master · metabase/metabase · GitHub
log4j.rootLogger=WARN, console, metabase, file # ← ファイル書き出しを定義
# log to the console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.Target=System.out
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{MM-dd HH:mm:ss} \u001b[1m%p %c{2}\u001b[0m :: %m%n
# log to a file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/opt/metabase/logs/metabase.log # ← ファイル出力先
log4j.appender.file.MaxFileSize=10MB # ← ファイル出力サイズ
log4j.appender.file.MaxBackupIndex=2
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d [%t] %-5p%c - %m%n
# customizations to logging by package
log4j.logger.metabase.driver=INFO
log4j.logger.metabase.plugins=DEBUG
log4j.logger.metabase.middleware=DEBUG
log4j.logger.metabase.models.permissions=INFO
log4j.logger.metabase.query-processor.permissions=INFO
log4j.logger.metabase.query-processor=INFO
log4j.logger.metabase.sync=DEBUG
log4j.logger.metabase.models.field-values=INFO
# TODO - we can dial these back a bit once we are satisfied the async stuff isn't so new (0.33.0+)
log4j.logger.metabase.async.util=DEBUG
log4j.logger.metabase.middleware.async=DEBUG
log4j.logger.metabase.query-processor.async=DEBUG
log4j.logger.metabase=INFO
# c3p0 connection pools tend to log useless warnings way too often; only log actual errors
log4j.logger.com.mchange=ERROR
最後にログの格納先のディレクトリを掘ります。
$ sudo mkdir /opt/metabase/logs
これで一通り設定は完了です。
サービス起動
最後にサービスを起動します。
$ sudo systemctl start metabase
/opt/metabase/
に
h2.db.mv.db
h2.db.trace.db
が出来ていればOKです。
port:3000 で起動しているので、ブラウザからアクセスするにはhttp://localhost:3000/
に相当するURLを叩いてください。
下記の画面が出ればOKです。
以上です。