LoginSignup
0

posted at

MetabaseをGAEで動かしたいっ!

はじめに

こんにちは。
これは、2022年 NI+C Advent Calendar 14日目の記事です。
いつもNode-RED絡めた記事ですが、今年はなんとNode-REDではない記事なのです!

そもそもMetabaseって何?

Metabaseは、オープンソースソフトウェアのBI(データ可視化)ツール。LookerStudioとかRe:Dashとかと同じ類の製品です。様々なデータを参照/可視化し、分析に役立てることができます。他のOSSのBIと比べてグラフのデザインがキレイなこと、コード(クエリ)を直接書くこと無くクリックベースでグラフ等可視化できることが特徴です。

画面イメージ
スクリーンショット 2022-12-14 17.03.59.png

なぜ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でのデータ可視化/分析ツールの一つの選択肢として、ご参考になれば嬉しいです!

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0