監控 VM 和單一用戶群節點的使用情形,以便製作授權報告


如果您自備作業系統 (例如 Windows Server) 的授權,合約義務可能要求您監控並回報使用這些授權的 VM 執行個體、實體伺服器和實體 CPU 核心數量。

本文說明如何使用開放原始碼工具「授權追蹤器」,監控您使用的 VM 執行個體、實體伺服器和實體 CPU 核心數量,以及如何使用 Looker Studio 將結果視覺化。

授權追蹤工具會分析 Compute Engine 稽核記錄,判斷每個 VM 執行個體的放置位置。刊登位置說明 VM 執行個體在特定實體伺服器上執行的時間範圍。每次將 VM 從一部實體伺服器遷移至另一部伺服器,都代表一個放置作業結束,並開始另一個放置作業。

舉例來說,假設您啟動 VM 執行個體,幾個月後再次停止。在執行階段的某個時間點,VM 會自動從 Server 1 遷移至 Server 2,然後再返回 Server 1。這項記錄對應 3 個刊登位置:

多個刊登位置

首次執行授權追蹤工具時,系統會分析過去 90 天的 Compute Engine 使用情況,並將結果寫入 BigQuery。後續執行時,這項工具會分析上次執行和當天之間的差異,並據此更新 BigQuery 資料集。

授權追蹤器工具會取代 IAP Desktop 提供的用量報表功能。

費用

本指南使用 Google Cloud的計費元件,包括:

使用 Pricing Calculator,根據您的預測使用量來產生預估費用。

部署授權追蹤工具

本節說明如何設定 Cloud Run 和 Cloud Scheduler,每天自動執行授權追蹤工具。

下圖說明本文所述的解決方案:

  • 授權追蹤工具部署在 Cloud Run 上,並設定為分析一或多個專案的記錄。
  • Cloud Scheduler 每天會觸發 Cloud Run 工作,使 License Tracker 工具更新 BigQuery 資料集。
  • Looker Studio 資訊主頁會將 BigQuery 資料視覺化,並提供給使用者。

架構

建立專案

如要設定 Cloud Run 和 Cloud Scheduler,請建立新專案:

  1. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.

    Enable the APIs

  8. 部署應用程式

    現在將授權追蹤工具部署至 Cloud Run:

    1. 在 Google Cloud 控制台中,按一下「啟用 Cloud Shell」啟動 Cloud Shell。按鈕,開啟 Cloud Shell

      前往 Google Cloud 控制台

    2. 設定環境變數,以包含您的專案 ID

      gcloud config set project PROJECT_ID
      

      PROJECT_ID 替換為專案 ID。

    3. 設定要部署的 Cloud Run 區域:

      gcloud config set run/region REGION
      

      REGION 替換為支援 Cloud Run 和 Cloud Scheduler 的地區。

    4. 為工具建立服務帳戶:

      SERVICE_ACCOUNT=$(gcloud iam service-accounts create license-tracker \
        --display-name "License Tracker" \
        --format "value(email)")
      
    5. 允許服務在同一個專案中建立及存取 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"
      
    6. 允許 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"
      
    7. 複製 GitHub 存放區並切換至 latest 分支:

      git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
      cd gce-license-tracker
      git checkout latest
      
    8. 將建構提交至 Cloud Build:

      gcloud builds submit . --substitutions=_REGION=$(gcloud config get-value run/region)
      

      建構作業會將 License Tracker 應用程式部署至 Cloud Run,並設定 Cloud Scheduler 每天觸發一次工作。

      建構作業大約需要 3 分鐘。

    選取要分析的專案

    授權追蹤工具會分析所有符合下列條件的專案: Google Cloud

    • 已啟用 Compute Engine API。
    • 專案會將「Compute 檢視者」 (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 替換為您要讓授權追蹤工具分析的專案 ID。 Google Cloud

    資料夾

    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,License Tracker 工具會分析這些專案。

    機構

    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

    開始初步分析

    您現在可以開始進行初步分析:

    1. 在 Google Cloud 控制台中,依序前往「Cloud Run」>「Jobs」

      前往 Cloud Run jobs

    2. 選取 license-tracker 工作,開啟工作詳細資料。

    3. 按一下 [Execute] (執行)

      視您選取的專案數量和大小而定,初始分析可能需要數小時才能完成。

      工作完成後,專案會包含名為 license_usage 的 BigQuery 資料集。

    4. (選用) 在 Cloud Logging 中查看記錄:

      前往「Logging」(記錄)

    建立資訊主頁

    現在,請建立範例資訊主頁的副本,藉此建立 Looker Studio 資訊主頁:

    1. 複製資訊主頁的資料來源:

      1. 節點
      2. 已授權的節點
      3. 節點直方圖
      4. 執行個體直方圖

      針對每個資料來源執行下列操作:

      1. 按一下上方連結開啟資料來源。
      2. 按一下「複製這個資料來源」
      3. 按一下「複製資料來源」
      4. 如果系統提示您將資訊主頁連結至 BigQuery,請按一下「授權」
      5. 視需要按一下標題,重新命名資料來源。
      6. 在帳單專案清單中,選取您用來部署授權追蹤工具的專案。
      7. 按一下「重新連結」
      8. 在「套用連線變更」對話方塊中,選取「套用」
    2. 複製資訊主頁:

      1. 開啟範例資訊主頁

        資訊主頁未連結至資料來源,因此不會顯示任何資料。

      2. 依序點選「…」>「建立副本」

      3. 在「複製這份報表」對話方塊中,選取資料來源副本:

        複製對話方塊

      4. 按一下「複製報表」

        現在,資訊主頁會顯示 BigQuery 資料集中的資料。

    將存取權授予其他使用者

    資訊主頁的資料來源已設定為使用檢視者的憑證存取 BigQuery。如要授予其他使用者存取資訊主頁的權限,請按照下列步驟操作:

    1. 分享資訊主頁,並授予使用者查看報表的權限。
    2. 授予使用者「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
    租戶 STRING S if running on sole-tenant node, F otherwise
    node_type STRING 單一用戶群節點類型
    node_project_id STRING 節點的專案 ID;如果是共用的專屬節點,這個值可能與 instance_project_id 不同
    server_id STRING 實體伺服器的專屬 ID
    operating_system_family STRING 如果無法辨識,則為 WINLINUXnull
    授權 : 取得授權 (depending on the context) STRING 圖片使用的授權字串
    license_type STRING 如果無法辨識,則為 BYOLSPLAnull
    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 檢視畫面。

    升級授權追蹤工具

    本節說明如何升級現有的授權追蹤工具部署作業,以使用較新版本的應用程式,或使用不同的設定。

    1. 在 Google Cloud 控制台中,按一下「啟用 Cloud Shell」啟動 Cloud Shell。按鈕,開啟 Cloud Shell

      前往 Google Cloud 控制台

    2. 設定環境變數,以包含您的專案 ID

      gcloud config set project PROJECT_ID
      

      PROJECT_ID 替換為包含現有部署作業的專案 ID。

    3. 選取現有部署作業的 Cloud Run 區域:

      gcloud config set run/region REGION
      
    4. 複製 GitHub 存放區並切換至 latest 分支:

      git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
      cd gce-license-tracker
      git checkout latest
      
    5. 將建構提交至 Cloud Build:

      gcloud builds submit . --substitutions=_REGION=$(gcloud config get-value run/region)
      

      建構作業會更新現有部署作業,大約需要 3 分鐘才能完成。