Cloud Asset Inventory から BigQuery に VM Manager データをエクスポートすると、高度なクエリを実行して、VM Manager が有効になっているかどうかを確認したり、OS Config エージェントのバージョンを表示したり、組織内のすべてのプロジェクトでオペレーティング システムの詳細を調べたりできます。
このドキュメントでは、VM Manager、Cloud Asset Inventory、BigQuery を使用して、組織全体の Compute Engine インスタンスの VM Manager の有効化とオペレーティング システムのステータス レポートを表示する方法について説明します。
始める前に
- VM Manager を設定する。
- Cloud Asset Inventory API を有効にします。
- エクスポートされたデータを保存する BigQuery データセットを作成します。
- 組織全体で VM Manager のステータス レポートを表示するために必要な権限があることを確認します。
-
まだ設定していない場合は、認証を設定します。認証では、 Google Cloud サービスと API にアクセスするための ID が確認されます。ローカル開発環境からコードまたはサンプルを実行するには、次のいずれかのオプションを選択して Compute Engine に対する認証を行います。
このページのサンプルをどのように使うかに応じて、タブを選択してください。
コンソール
Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。
gcloud
-
Google Cloud CLI をインストールします。インストール後、次のコマンドを実行して Google Cloud CLI を初期化します。
gcloud init外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
-
- デフォルトのリージョンとゾーンを設定します。
必要なロール
BigQuery でリソースデータをエクスポートしてクエリを実行するために必要な権限を取得するには、プロジェクト、フォルダ、または組織に対する次の IAM ロールを付与するよう管理者に依頼してください。
- Cloud Asset 閲覧者(
roles/cloudasset.viewer) - BigQuery データ編集者 (
roles/bigquery.dataEditor) - BigQuery ジョブユーザー (
roles/bigquery.jobUser)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
これらの事前定義ロールには、リソースデータをエクスポートして BigQuery でクエリを実行するために必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。
必要な権限
リソースデータをエクスポートして BigQuery でクエリを実行するには、次の権限が必要です。
-
cloudasset.assets.exportOSInventories -
cloudasset.assets.exportResource -
bigquery.datasets.get -
bigquery.tables.create -
bigquery.tables.update -
bigquery.tables.get -
bigquery.jobs.create
カスタムロールや他の事前定義ロールを使用して、これらの権限を取得することもできます。
VM Manager データを BigQuery にエクスポートする
OS インベントリとリソースデータを BigQuery にエクスポートするには、次の操作を行います。
組織 ID を確認します。
gcloud projects get-ancestors PROJECT_IDPROJECT_IDは、プロジェクトのプロジェクト ID に置き換えます。VM Manager によって VM インスタンスから収集された OS インベントリ データをエクスポートします。
gcloud asset export \ --content-type=os-inventory \ --organization=ORGANIZATION_ID \ --per-asset-type \ --bigquery-table="projects/BQ_PROJECT_ID/datasets/DATASET_ID/tables/os"次のように置き換えます。
ORGANIZATION_ID: 実際の組織 ID。BQ_PROJECT_ID: BigQuery データセットが配置されているプロジェクト ID。DATASET_ID: BigQuery データセットの名前。
リソース メタデータを BigQuery テーブルにエクスポートします。
gcloud asset export \ --content-type=resource \ --organization=ORGANIZATION_ID \ --per-asset-type \ --bigquery-table="projects/BQ_PROJECT_ID/datasets/DATASET_ID/tables/res"次のように置き換えます。
ORGANIZATION_ID: 組織 ID。BQ_PROJECT_ID: BigQuery データセットが配置されているプロジェクト ID。DATASET_ID: BigQuery データセットの ID。
OS インベントリ スナップショットをエクスポートする方法については、アセット スナップショットをエクスポートするをご覧ください。
組織の VM Manager ステータス レポートを生成する
インベントリ データをエクスポートしたら、BigQuery で SQL クエリを実行して、VM Manager のステータス レポートを生成できます。このレポートには、次の情報が表示されます。
- 各 VM インスタンスで VM Manager OS インベントリ データが報告されているかどうか(
vmm_data)。 - 各インスタンスから報告されたオペレーティング システムの長い名前(
os_info_reported_by_vmm)とosconfigエージェントのバージョン(osconfig_agent_version)。 - 階層内のプロジェクト全体で
osconfig.googleapis.comAPI サービスが有効になっているかどうか(osconfig_enabled_in_project)。
レポートを生成する手順は次のとおりです。
Google Cloud コンソールで、[BigQuery] ページに移動します。
クエリエディタに次の SQL スクリプトを貼り付けます。
SELECT vms.project, vms.zone, vms.instance_name, vms.instance_status, vms.vmm_data, vms.instance_creation_time, vms.vmm_info_update_time, -- vms.gce_image, vms.os_info_reported_by_vmm, vms.service_account, service.resource.data.state AS osconfig_enabled_in_project, vms.osconfig_agent_version -- "INFO N/A" as enable_osconfig_metadata_set_in_project, -- "INFO N/A" as enable_osconfig_metadata_set_in_instance, FROM ( SELECT SPLIT(name, '/')[OFFSET(8)] AS instance_name, SPLIT(name, '/')[OFFSET(4)] AS project, SPLIT(name, '/')[OFFSET(6)] AS zone, instances.ancestors, instances.resource.data.creationTimestamp AS instance_creation_time, instances.resource.data.serviceAccounts[SAFE_OFFSET(0)].email AS service_account, CASE WHEN inventory.os_inventory IS NOT NULL THEN TRUE ELSE FALSE END AS vmm_data, /* SPLIT(resource.data.disks[OFFSET(0)].licenses[OFFSET(0)], '/')[OFFSET(9)] as gce_image, */ inventory.os_inventory.os_info.long_name AS os_info_reported_by_vmm, inventory.os_inventory.update_time AS vmm_info_update_time, instances.resource.data.status AS instance_status, inventory.os_inventory.os_info.osconfig_agent_version FROM DATASET_ID.res_compute_googleapis_com_Instance AS instances LEFT JOIN DATASET_ID.os_compute_googleapis_com_Instance AS inventory USING (name) -- WHERE instances.resource.data.status = "RUNNING" ) AS vms LEFT JOIN DATASET_ID.res_serviceusage_googleapis_com_Service AS service ON vms.ancestors[OFFSET(0)] = service.resource.data.parent WHERE service.resource.data.name = "osconfig.googleapis.com"DATASET_IDは、BigQuery データセットの名前に置き換えます。[実行] をクリックします。
データのクエリの詳細については、クエリの実行をご覧ください。
レポートを生成したら、データポータルを使用してカスタム ダッシュボードを作成できます。詳細については、データポータルでデータを分析するをご覧ください。
次のステップ
- Terraform を使用して VM Manager リソースをプロビジョニングする。
- VM Manager の OS インベントリの詳細を確認する。
- アセットのメタデータを BigQuery にエクスポートする方法を学習する。
- データポータルを使用して BigQuery データを可視化します。