Windows Server などのオペレーティング システムのお客様所有ライセンスを使用する場合、契約上の義務により、これらのライセンスを使用している VM インスタンス、物理サーバー、物理 CPU コアの数のモニタリングと報告が必要になる可能性があります。
この記事では、オープンソース ツールのライセンス トラッカーを使用して、使用している VM インスタンス、物理サーバー、物理 CPU コアの数をモニタリングする方法と、Looker Studio を使用して結果を可視化する方法について説明します。
ライセンス トラッカー ツールは、Compute Engine の監査ログを分析して、各 VM インスタンスのプレースメントを決定することで機能します。プレースメントは、VM インスタンスが特定の物理サーバーで実行されている期間を表します。VM が 1 つの物理サーバーから別の物理サーバーに移行されるたびに、あるプレースメントの終了がマークされ、別のプレースメントが開始されます。
たとえば、開始された VM インスタンスが数か月後に再び停止したとします。ランタイムの任意の時点で、VM は自動的に Server 1
から Server 2
に自動的に移行し、その後再び Server 1
に戻ります。この履歴は次の 3 つのプレースメントに対応します。
ライセンス トラッカー ツールを初めて実行すると、過去 90 日間の Compute Engine の使用状況が分析され、結果が BigQuery に書き込まれます。後続の実行では、このツールは前回実行と当日実行の間の差分を分析し、それに応じて BigQuery データセットを更新します。
ライセンス トラッカー ツールは、IAP Desktop が提供する使用状況レポート機能に代わるものです。
費用
このガイドでは、Google Cloud の課金対象となる以下のコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。
ライセンス トラッカー ツールのデプロイ
このセクションでは、ライセンス トラッカー ツールが 1 日に 1 回自動的に実行されるように Cloud Run と Cloud Scheduler を設定する方法について説明します。
次の図は、この記事で説明するソリューションを示しています。
- ライセンス トラッカー ツールは、Cloud Run にデプロイされ、1 つ以上のプロジェクトのログを分析するように構成されています。
- 1 日に 1 回、Cloud Scheduler が Cloud Run ジョブをトリガーし、ライセンス トラッカー ツールが BigQuery データセットを更新します。
- Looker Studio のダッシュボードでは、BigQuery のデータが可視化され、ユーザーが利用できるようになります。
プロジェクトを作成
Cloud Run と Cloud Scheduler を設定するには、新しいプロジェクトを作成します。
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.
アプリケーションをデプロイする
次は、ライセンス トラッカー ツールを Cloud Run にデプロイします。
Google Cloud コンソールで、[Cloud Shell をアクティブにする] ボタンをクリックして Cloud Shell を開きます。
プロジェクト ID を格納する環境変数を設定します。
gcloud config set project PROJECT_ID
PROJECT_ID は、プロジェクトの ID に置き換えます。
デプロイ先の Cloud Run リージョンを設定します。
gcloud config set run/region REGION
REGION は、Cloud Run と Cloud Scheduler をサポートするリージョンに置き換えます。
ツールのサービス アカウントを作成します。
SERVICE_ACCOUNT=$(gcloud iam service-accounts create license-tracker \ --display-name "License Tracker" \ --format "value(email)")
サービスに、BigQuery データセットの作成とアクセス、同じプロジェクトでの Cloud Run ジョブの開始を許可します。
gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/bigquery.admin" gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/run.invoker"
Cloud Build に Cloud Run のデプロイの実行と Cloud Scheduler ジョブの管理を許可します。
PROJECT_NUMBER=$(gcloud projects describe $(gcloud config get-value core/project) --format='value(projectNumber)') \ gcloud iam service-accounts add-iam-policy-binding $SERVICE_ACCOUNT \ --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \ --role "roles/iam.serviceAccountUser" gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \ --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \ --role "roles/run.developer" gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \ --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \ --role "roles/cloudscheduler.admin"
GitHub リポジトリのクローンを作成し、
latest
ブランチに切り替えます。git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git cd gce-license-tracker git checkout latest
Cloud Build にビルドを送信します。
gcloud builds submit . --substitutions=_REGION=$(gcloud config get-value run/region)
ビルドによってライセンス トラッカー アプリケーションが Cloud Run にデプロイされ、1 日 1 回ジョブをトリガーするように Cloud Scheduler が構成されます。
ビルドが完了するまでに 3 分ほどかかります。
分析するプロジェクトの選択
ライセンス トラッカー ツールは、次のすべての条件に該当するすべての Google Cloud プロジェクトを分析します。
- Compute Engine API が有効になっています。
- このプロジェクトは、コンピューティング閲覧者(
roles/compute.viewer
)とログ閲覧者(roles/logging.viewer
)に、ツールのサービス アカウントへのアクセス権を付与します。
プロジェクト、フォルダ、または組織全体を分析に含めるには、次の操作を行います。
プロジェクト
SCOPE_ID=RESOURCE_PROJECT_ID SCOPE_TYPE=projects gcloud projects add-iam-policy-binding $SCOPE_ID \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/compute.viewer" \ --condition None gcloud projects add-iam-policy-binding $SCOPE_ID \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/logging.viewer" \ --condition None
RESOURCE_PROJECT_ID は、ライセンス トラッカー ツールで分析する Google Cloud プロジェクトの ID に置き換えます。
フォルダ
SCOPE_ID=RESOURCE_FOLDER_ID SCOPE_TYPE=folders gcloud resource-manager folders add-iam-policy-binding $SCOPE_ID \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/compute.viewer" \ --condition None gcloud resource-manager folders add-iam-policy-binding $SCOPE_ID \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/logging.viewer" \ --condition None
RESOURCE_FOLDER_ID は、ライセンス トラッカー ツールが分析するプロジェクトを含むフォルダの ID に置き換えます。
組織
SCOPE_ID=ORGANIZATION_ID SCOPE_TYPE=organizations gcloud organizations add-iam-policy-binding $SCOPE_ID \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/compute.viewer" \ --condition None gcloud organizations add-iam-policy-binding $SCOPE_ID \ --member "serviceAccount:$SERVICE_ACCOUNT" \ --role "roles/logging.viewer" \ --condition None
ORGANIZATION_ID は組織の ID に置き換えます。
初期分析を開始する
これで初期分析を開始できます。
Google Cloud コンソールで、[Cloud Run] > [ジョブ] に移動します。
license-tracker ジョブを選択して、ジョブの詳細を開きます。
[実行] をクリックします。
選択したプロジェクトの数とサイズによっては、最初の分析が完了するまでに数時間かかることがあります。
ジョブが完了すると、プロジェクトに
license_usage
という名前の BigQuery データセットが作成されます。必要に応じて、Cloud Logging でログを表示します。
ダッシュボードを作成する
サンプル ダッシュボードのコピーを作成して、Looker Studio ダッシュボードを作成します。
ダッシュボードのデータソースをコピーします。
データソースごとに次の操作を行います。
- 上のリンクをクリックしてデータソースを開きます。
- [このデータソースのコピーを作成] をクリックします。
- [データソースをコピー] をクリックします。
- ダッシュボードを BigQuery に接続するように求められた場合は、[承認] をクリックします。
- 必要に応じて、ヘッダーをクリックしてデータソースの名前を変更します。
- 課金プロジェクトのリストで、ライセンス トラッカー ツールのデプロイに使用したプロジェクトを選択します。
- [再接続] をクリックします。
- [接続の変更を適用] ダイアログ ボックスで、[適用] を選択します。
ダッシュボードをコピーします。
サンプル ダッシュボードを開きます。
ダッシュボードはデータソースに接続されていないため、データは表示されません。
[...] > [コピーを作成] をクリックします。
[このレポートをコピー] ダイアログで、データソースのコピーを選択します。
[レポートをコピー] をクリックします。
ダッシュボードに BigQuery データセットのデータが表示されます。
他のユーザーにダッシュボードへのアクセス権を付与する
ダッシュボードのデータソースは、閲覧者の認証情報を使用して BigQuery にアクセスするように構成されています。他のユーザーにダッシュボードへのアクセス権を付与するには、次の操作を行う必要があります。
- ダッシュボードを共有し、レポートを表示するユーザー権限を付与します。
- ユーザーに BigQuery データ閲覧者(
roles/bigquery.dataViewer
)と BigQuery ジョブユーザー(roles/bigquery.jobUser
)のロールを付与します。これらのロールは、データセット レベルまたはプロジェクト レベルで付与できます。
ダッシュボードをカスタマイズする
Looker Studio のレポート エディタを使用して、既存のチャートの変更またはチャートの追加を行い、ダッシュボードをカスタマイズできます。
サンプル ダッシュボードのグラフはすべて、BigQuery データセットの placements
ビューに基づいています。このビューにはすべてのプロジェクトのすべてのプレースメントが含まれ、次のスキーマが使用されます。
列 | データ型 | 説明 |
---|---|---|
instance_id | INTEGER | インスタンス ID |
instance_name | STRING | インスタンスの名前 |
instance_zone | STRING | インスタンスのゾーン ID |
instance_project_id | STRING | インスタンスのプロジェクト ID |
tenancy | STRING | 単一テナントノードで実行する場合は S 、それ以外の場合は F |
node_type | STRING | 単一テナント ノードタイプ |
node_project_id | STRING | ノードのプロジェクト ID。共有の単一テナントノードの場合、この値は instance_project_id と異なる可能性があります |
server_id | STRING | 物理サーバーの一意の ID |
operating_system_family | STRING | WIN 、LINUX 、または null (認識できない場合) |
license | STRING | イメージで使用されているライセンス文字列 |
license_type | STRING | BYOL 、SPLA 、または null (認識できない場合) |
machine_type | STRING | インスタンスのマシンタイプ |
memory_mb | INTEGER | インスタンスに割り当てられた RAM の量(MB 単位) |
vcpu_count | INTEGER | インスタンスに割り当てる vCPU の数 |
vcpu_min_allocated | INTEGER | インスタンスに割り当てる vCPU の最小数。単一テナント VM の CPU をオーバーコミットすると、この値が vcpu_count とは異なる値になる場合があります。 |
maintenance_policy | STRING | インスタンスのメンテナンス ポリシー |
start_date | TIMESTAMP | プレースメントの開始 |
end_date | TIMESTAMP | プレースメントの終了 |
既存のチャートをカスタマイズする場合、または独自のチャートをダッシュボードに追加する場合は、placement
ビューを使用できます。
ライセンス トラッカー ツールのアップグレード
このセクションでは、ライセンス トラッカー ツールの既存のデプロイメントをアップグレードして、新しいバージョンのアプリケーションまたは別の構成を使用する方法について説明します。
Google Cloud コンソールで、[Cloud Shell をアクティブにする] ボタンをクリックして Cloud Shell を開きます。
プロジェクト ID を格納する環境変数を設定します。
gcloud config set project PROJECT_ID
PROJECT_ID は、既存のデプロイメントを含むプロジェクトの ID に置き換えます。
既存のデプロイメントの Cloud Run リージョンを選択します。
gcloud config set run/region REGION
GitHub リポジトリのクローンを作成し、
latest
ブランチに切り替えます。git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git cd gce-license-tracker git checkout latest
Cloud Build にビルドを送信します。
gcloud builds submit . --substitutions=_REGION=$(gcloud config get-value run/region)
このビルドによって既存のデプロイが更新され、完了までに 3 分ほどかかります。