如果您自行提供 Windows Server 等作業系統的授權,合約義務可能會要求您監控並回報您使用這些授權的 VM 例項、實體伺服器和實體 CPU 核心數量。
本文將說明如何使用 License Tracker 開放原始碼工具,監控您使用的 VM 執行個體、實體伺服器和實體 CPU 核心數量,以及如何使用 Looker Studio 以圖表呈現結果。
License Tracker 工具會分析 Compute Engine 稽核記錄,判斷每個 VM 執行個體的放置位置。放置位置會說明 VM 執行個體在特定實體伺服器上執行的時間長度。每當 VM 從一個實體伺服器遷移至另一個實體伺服器,就代表結束一個位置並開始另一個位置。
舉例來說,假設您啟動 VM 執行個體,幾個月後又再次停止。在執行期間的某個時間點,VM 會自動從 Server 1
遷移至 Server 2
,然後再回到 Server 1
。這份記錄對應到 3 個刊登位置:
首次執行 License Tracker 工具時,系統會分析過去 90 天的 Compute Engine 用量,並將結果寫入 BigQuery。在後續執行作業中,這項工具會分析上次執行作業與當天之間的差異,並據此更新 BigQuery 資料集。
License Tracker 工具會取代 IAP Desktop 提供的使用報表功能。
費用
本指南使用 Google Cloud的計費元件,包括:
使用Pricing Calculator 可根據您的預測使用量來產生預估費用。
部署 License Tracker 工具
本節說明如何設定 Cloud Run 和 Cloud Scheduler,讓系統每天自動執行一次 License Tracker 工具。
下圖說明本文所述的解決方案:
- License Tracker 工具已部署至 Cloud Run,並設定為分析一或多個專案的記錄。
- Cloud Scheduler 每天會觸發一次 Cloud Run 工作,導致 License Tracker 工具更新 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.
部署應用程式
您現在可以將 License Tracker 工具部署至 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)
這個建構作業會將 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 替換為您要讓 License Tracker 工具分析的 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 替換為包含您要讓 License Tracker 工具分析的專案的資料夾 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」>「Jobs」(工作)。
選取「license-tracker」工作,即可開啟工作詳細資料。
按一下 [Execute] (執行)。
視所選專案的數量和大小而定,初步分析可能需要數小時才能完成。
工作完成後,專案就會包含名為
license_usage
的 BigQuery 資料集。您也可以在 Cloud Logging 中查看記錄:
建立資訊主頁
您現在可以建立 Looker Studio 資訊主頁,方法是建立範例資訊主頁的複本:
複製資訊主頁的資料來源:
針對每個資料來源執行下列操作:
- 按一下上方連結,開啟資料來源。
- 按一下「複製這項資料來源」。
- 按一下「複製資料來源」。
- 如果系統提示您將資訊主頁連結至 BigQuery,請按一下「授權」。
- 您可以視需要按一下標頭,然後重新命名資料來源。
- 在計費專案清單中,選取用於部署 License Tracker 工具的專案。
- 按一下「重新連結」。
- 在「Apply connection changes」對話方塊中,選取「Apply」。
複製資訊主頁:
開啟範例資訊主頁。
資訊主頁未連結至資料來源,因此不會顯示任何資料。
依序點選「…」>「建立副本」
在「Copy this report」對話方塊中,選取資料來源的副本:
按一下「複製報表」。
資訊主頁現在會顯示 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 |
租用 | 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 (如果無法辨識) |
授權 : 取得授權 (depending on the context) | 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
檢視畫面。
升級 License Tracker 工具
本節說明如何升級現有的 License Tracker 工具部署作業,以便使用較新版本的應用程式,或使用其他設定。
在 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 分鐘才能完成。