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の課金対象となるコンポーネントを使用します。
料金計算ツールを使うと、予想使用量に基づいて費用の見積もりを出すことができます。
ライセンス トラッカー ツールのデプロイ
このセクションでは、License Tracker ツールが 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.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator
(
roles/resourcemanager.projectCreator
), which contains theresourcemanager.projects.create
permission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. 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 分ほどかかります。
- Compute Engine API が有効になっています。
- このプロジェクトは、コンピューティング閲覧者(
roles/compute.viewer
)とログ閲覧者(roles/logging.viewer
)に、ツールのサービス アカウントへのアクセス権を付与します。 Google Cloud コンソールで、[Cloud Run] > [ジョブ] に移動します。
license-tracker ジョブを選択して、ジョブの詳細を開きます。
[実行] をクリックします。
選択したプロジェクトの数とサイズによっては、最初の分析が完了するまでに数時間かかることがあります。
ジョブが完了すると、プロジェクトに
license_usage
という名前の BigQuery データセットが作成されます。必要に応じて、Cloud Logging でログを表示します。
ダッシュボードのデータソースをコピーします。
データソースごとに次の操作を行います。
- 上のリンクをクリックしてデータソースを開きます。
- [このデータソースのコピーを作成] をクリックします。
- [データソースをコピー] をクリックします。
- ダッシュボードを BigQuery に接続するように求められた場合は、[承認] をクリックします。
- 必要に応じて、ヘッダーをクリックしてデータソースの名前を変更します。
- 課金プロジェクトのリストで、ライセンス トラッカー ツールのデプロイに使用したプロジェクトを選択します。
- [再接続] をクリックします。
- [接続の変更を適用] ダイアログ ボックスで、[適用] を選択します。
ダッシュボードをコピーします。
サンプル ダッシュボードを開きます。
ダッシュボードはデータソースに接続されていないため、データは表示されません。
[...] > [コピーを作成] をクリックします。
[このレポートをコピー] ダイアログで、データソースのコピーを選択します。
[Copy report] をクリックします。
ダッシュボードにBigQuery データセットのデータが表示されます。
- ダッシュボードを共有し、レポートを表示するユーザー権限を付与します。
- ユーザーに BigQuery データ閲覧者(
roles/bigquery.dataViewer
)と BigQuery ジョブユーザー(roles/bigquery.jobUser
)のロールを付与します。これらのロールは、データセット レベルまたはプロジェクト レベルで付与できます。 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 分ほどかかります。
アプリケーションをデプロイする
次は、ライセンス トラッカー ツールを Cloud Run にデプロイします。
分析するプロジェクトの選択
ライセンス トラッカー ツールは、次のすべての条件に該当するすべての Google Cloud プロジェクトを分析します。
プロジェクト、フォルダ、または組織全体を分析に含めるには、次の操作を行います。
プロジェクト
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 に置き換えます。
初期分析を開始する
これで初期分析を開始できます。
ダッシュボードを作成する
サンプル ダッシュボードのコピーを作成して、Looker Studio ダッシュボードを作成します。
他のユーザーにダッシュボードへのアクセス権を付与する
ダッシュボードのデータソースは、閲覧者の認証情報を使用して BigQuery にアクセスするように構成されています。他のユーザーにダッシュボードへのアクセス権を付与するには、次の操作を行う必要があります。
ダッシュボードをカスタマイズする
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 (認識できない場合) |
ライセンス | 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
ビューを使用できます。
ライセンス トラッカー ツールのアップグレード
このセクションでは、ライセンス トラッカー ツールの既存のデプロイメントをアップグレードして、新しいバージョンのアプリケーションまたは別の構成を使用する方法について説明します。