OpenMetadataというデータベースなどのメタデータを管理するデータカタログツールを使ってみました。
OpenMetadataの起動から、データソース(PostgreSQL®あるいはPGSpider™)のメタデータを取り込むまでの手順を紹介します。
今回、OpenMetadataとデータソースは同一ホストマシン上にあり、ホストマシンを経由したネットワークでOpenMetadataとデータソースを接続する(host-gatewayを使いホストマシンのlocalhostに接続する)ための設定も説明します。
PostgreSQL/PGSpiderの準備手順は省略します(こちらが参考になります。PGSpiderの手順はPostgreSQLと同様です)。
なお、PGSpiderとはPostgreSQL互換のインターフェースを持つデータ仮想化エンジンです。
バージョン情報
今回使用したツールのバージョンは以下のとおりです。
- OpenMetadata v1.3.1
- Docker 25.0.4
- PostgreSQL 16.2
- PGSpider 4.0.0
OpenMetadataの起動
今回、DockerコンテナでOpenMetadataを立ち上げます。
立ち上げ方は簡単です。ymlファイルをダウンロードして、起動コマンドを実行するだけです。
ymlファイルの入手
OpenMetadataが管理するメタデータを保存するシステムとして、MySQLかPostgreSQLを選べます。
MySQLの場合はdocker-compose.yml
を、PostgreSQLの場合はdocker-compose-postgres.yml
を公式サイトからダウンロードします。
MySQLの場合:
wget https://github.com/open-metadata/OpenMetadata/releases/download/1.2.5-release/docker-compose.yml
PostgreSQLの場合:
wget https://github.com/open-metadata/OpenMetadata/releases/download/1.2.5-release/docker-compose-postgres.yml
OpenMetadataから同一ホストマシンのネットワークに接続するための設定
以下の内容を docker-compose-openmetadata-override.yml としてymlファイルを新たに作成しておきます。
OpenMetadataからホストマシンのネットワークを介してデータソースに接続するための設定です。
OpenMetadataのサービスを提供するために複数のコンテナが立ち上がりますが、データソースにアクセスするのはingestionコンテナです。この設定を行うことで、OpenMetadataのingestionコンテナはhost.docker.internalという名前でホストマシンのlocalhostを使用できるようになります。
なお、"host.docker.internal"の部分は任意の名前を指定できます。
データソースのIPアドレスを指定して接続する場合は本ファイルは不要です。
version: "3.9"
services:
ingestion:
extra_hosts:
- "host.docker.internal:host-gateway"
もし、メタデータを管理するデータベース(MySQLあるいはPostgreSQL)のポートを変更したい場合、以下を本ファイルに記載します。
MySQLの場合:
services:
mysql:
ports:
- "ポート番号:3306"
PostgreSQLの場合:
services:
postgresql:
ports:
- "ポート番号:5432"
起動
次のコマンドを実行するだけで、OpenMetadataが立ち上がります。
-fオプションで、オリジナルのymlファイルと追加設定用のymlファイルを指定します。
MySQLの場合:
docker compose -f docker-compose.yml -f docker-compose-openmetadata-override.yml up --detach
PostgreSQLの場合
docker compose -f docker-compose-postgres.yml -f docker-compose-openmetadata-override.yml up --detach
起動の確認
以下のように、4つのコンテナ(openmetadata_ingestion、openmetadata_server、openmetadata_postgresqlおよびopenmetadata_elasticsearch)が動いていればOKです。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b4d9afa0d0c1 docker.getcollate.io/openmetadata/ingestion:1.3.1 "/bin/bash /opt/airf…" 45 seconds ago Up 9 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp openmetadata_ingestion
3b545ded6987 docker.getcollate.io/openmetadata/server:1.3.1 "/bin/bash /openmeta…" 45 seconds ago Up 10 seconds (health: starting) 0.0.0.0:8585-8586->8585-8586/tcp, :::8585-8586->8585-8586/tcp openmetadata_server
0ef6ed3d8c30 docker.getcollate.io/openmetadata/postgresql:1.3.1 "docker-entrypoint.s…" About a minute ago Up 45 seconds (healthy) 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp openmetadata_postgresql
184eb2fba67d docker.elastic.co/elasticsearch/elasticsearch:8.10.2 "/bin/tini -- /usr/l…" About a minute ago Up 45 seconds (healthy) 0.0.0.0:9200->9200/tcp, :::9200->9200/tcp, 0.0.0.0:9300->9300/tcp, :::9300->9300/tcp openmetadata_elasticsearch
...
OpenMetadataとデータソースの連携
ブラウザで http://<ホストマシンのIP>:8585/ にアクセスします。
すると、以下の画面が出るので、adminユーザ(初期パスワードはadmin)でログインします。
サービスとしてデータソースを登録
-
サービス名に任意の名前を入力して「次へ」
-
データソースの情報を入力し、「Save」
- Host And Portには、
host.docker.internal:データソースポート番号
を入力すればよいです。以下の図はPostgreSQLの場合の例です(PGSpiderの場合デフォルトのポートは4813です)。 - OpenMetadataのメタダータ管理用にPostgreSQLが5432ポートで立ち上がっているため、今回はデータソースとしてのPostgreSQLは5433ポートを使用しました。
- Host And Portには、
メタデータの取り込み設定(インジェスチョン)
- データソース登録後に出てきた画面の「インジェスチョンを追加」をクリック
- あるいは「設定」→「サービス」→「データベース」→「先ほど登録したデータソース」→「インジェスチョン」タブ→「メタデータインジェスチョンを追加」をクリック
- 「Name」に任意の名前を入力して「次へ」
- ここで、取り込むメタデータの対象を設定することが可能。今回はデフォルト設定のまま進む。
- 取り込みの周期を設定し、「追加&デプロイ」
- 今回はデフォルトの毎時00分を設定しました。
メタデータの閲覧
インジェスチョン処理がバックグラウンドで動作し、完了するとメタデータが閲覧できるようになります。
サイドバーの「探索」をクリックすると、以下の図のようにメタデータが取り込まれていることが分かると思います。
PGSpiderのメタデータを見てみると、仮想テーブルや外部テーブルのメタデータが取り込まれていることがわかります。
おわりに
OpenMetadataの起動方法とメタデータを取り込むための設定手順を説明しました。
PGSpiderからメタデータを取り込むには、デフォルトの設定から1箇所変更する必要があるため注意です(「PostgresConnection Advanced Config」という項目)。
参考文献
- OpenMetadata: https://docs.open-metadata.org/v1.3.x/quick-start/local-docker-deployment
- PGSpider: https://github.com/pgspider/pgspider
PGSpiderは(株)東芝の登録商標です。
社名・商品名・サービス名などは、それぞれ各社が商標として使用している場合があります。