はじめに
こんにちは。
これは、2022年 NI+C Advent Calendar 14日目の記事です。
いつもNode-RED絡めた記事ですが、今年はなんとNode-REDではない記事なのです!
そもそもMetabaseって何?
Metabaseは、オープンソースソフトウェアのBI(データ可視化)ツール。LookerStudioとかRe:Dashとかと同じ類の製品です。様々なデータを参照/可視化し、分析に役立てることができます。他のOSSのBIと比べてグラフのデザインがキレイなこと、コード(クエリ)を直接書くこと無くクリックベースでグラフ等可視化できることが特徴です。
なぜApp Engineで動かしたいの?
Googleマネージドで動くサーバーレス環境だから。この点でしょうか。利用の面でどうしても気にしないといけないのが、環境の運用面。障害対応とかもそうですし、負荷に対する対応なども気にする必要があります。こういったところをうまーくやってくれる(やりやすくしてくれる)のが、マネージドなサーバーレス環境の利点だと思うのです。
・・・と書きましたが、単にGAEが好きだから。それが大切なのですっ。
どうやってApp Engineで動かすの?
GAE用のカスタムコンテナを作って、それをデプロイするだけ。文字にするとこれだけです。
事前準備しておくもの
- (必須)App Engine Flexible 環境の有効化
- (必須)CloudSQL(MySQL)インスタンスの準備
- (任意)oAuthの有効化・・・MetabaseでGoogle認証を使いたい場合
- oAuth同意画面の設定
- 認証情報 ウェブアプリケーションのクライアントIDの作成
定義ファイルの作成
- (必須)app.yaml・・・GAEの環境定義です。以下のような定義になります。
service: default
runtime: custom
env: flex
manual_scaling:
instances: 1
resources:
cpu: 1
memory_gb: 2
disk_size_gb: 10
env_variables:
MB_DB_TYPE: mysql
MB_DB_DBNAME: metabase
MB_DB_USER: <<CloudSQL DB User ID>>
MB_DB_PASS: <<CloudSQL DB User Password>>
MB_DB_HOST: 127.0.0.1
beta_settings:
cloud_sql_instances: <<CloudSQL 接続名>>
- (必須)Dockerfile・・・GAE上で動かすカスタムコンテナ定義です。以下のような定義になります。
FROM gcr.io/google-appengine/openjdk
EXPOSE 8080
ENV PORT 8080
ENV MB_PORT 8080
ENV MB_JETTY_PORT 8080
ENV MB_DB_PORT 5432
ENV METABASE_SQL_INSTANCE <<CloudSQL 接続名>>
ENV JAVA_OPTS "-XX:+IgnoreUnrecognizedVMOptions -Dfile.encoding=UTF-8 --add-opens=java.base/java.net=ALL-UNNAMED --add-modules=java.xml.bind"
ADD https://dl.google.com/cloudsql/cloud_sql_proxy.linux.amd64 ./cloud_sql_proxy
ADD http://downloads.metabase.com/<<Metabaseのバージョン>>/metabase.jar ./metabase.jar
RUN chmod +x ./cloud_sql_proxy
CMD ./cloud_sql_proxy -instances=$METABASE_SQL_INSTANCE=tcp:$MB_DB_PORT & java -jar ./metabase.jar
GAEへのデプロイ
- (必須)gcloudコマンドでGCP Projectへログイン
- (必須)上記の定義ファイルがあるディレクトリで、デプロイコマンドを実行
gcloud app deploy
これだけで、App EngineでMetabaseが稼働できるようになります。
Metabaseが起動した後は、Metabaseにログインして初期設定を行ってください。
まとめ
いかがでしたか??
Metabaseは、クエリ知識がなくともある程度使えるところが一番のポイント。また、サーバーレス環境であるGAEで動かすことで、運用の省力化にも繋げられます。
Google Cloudでのデータ可視化/分析ツールの一つの選択肢として、ご参考になれば嬉しいです!