將 VM 管理員資料從 Cloud Asset Inventory 匯出至 BigQuery 後,您就能執行進階查詢,檢查 VM 管理員是否已啟用、查看 OS Config 代理程式版本,以及檢查機構中所有專案的作業系統詳細資料。
本文說明如何使用 VM 管理員、Cloud Asset Inventory 和 BigQuery,查看整個機構中 Compute Engine 執行個體的 VM 管理員啟用狀態和作業系統狀態報表。
事前準備
- 設定 VM 管理員。
- 啟用 Cloud Asset Inventory API。
- 建立 BigQuery 資料集來儲存匯出的資料。
- 確認您具備必要權限,可查看整個機構的 VM 管理員狀態報告。
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:
選取這個頁面上您打算如何使用範例的分頁:
控制台
使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。
gcloud
-
安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:
gcloud init若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI。
-
- 設定預設地區和區域。
必要的角色
如要取得在 BigQuery 中匯出資源資料及執行查詢所需的權限,請要求管理員在專案、資料夾或機構中,授予您下列 IAM 角色:
- Cloud Asset Viewer (
roles/cloudasset.viewer) - BigQuery 資料編輯者 (
roles/bigquery.dataEditor) - BigQuery 工作使用者 (
roles/bigquery.jobUser)
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
這些預先定義的角色具備匯出資源資料,以及在 BigQuery 中執行查詢所需的權限。如要查看確切的必要權限,請展開「Required permissions」(必要權限) 部分:
所需權限
如要匯出資源資料並在 BigQuery 中執行查詢,您必須具備下列權限:
-
cloudasset.assets.exportOSInventories -
cloudasset.assets.exportResource -
bigquery.datasets.get -
bigquery.tables.create -
bigquery.tables.update -
bigquery.tables.get -
bigquery.jobs.create
將 VM 管理員資料匯出至 BigQuery
如要將 OS 項目清單和資源資料匯出至 BigQuery,請按照下列步驟操作:
找出機構 ID:
gcloud projects get-ancestors PROJECT_ID將
PROJECT_ID替換為專案的專案 ID。從 VM 執行個體匯出 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 管理員狀態報告
匯出項目清單資料後,您可以在 BigQuery 中執行 SQL 查詢,產生 VM 管理員狀態報告。這份報表提供下列資訊:
- 每個 VM 執行個體是否正在回報 VM 管理員 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 管理員資源。
- 進一步瞭解 VM 管理員中的 OS 庫存。
- 瞭解如何將資產中繼資料匯出至 BigQuery。
- 使用 數據分析 視覺化呈現 BigQuery 資料。