本文說明如何在 Compute Engine 執行個體上安裝 Compute Workloads 專用代理程式,並設定代理程式,以便連線至這些運算執行個體上執行的 MySQL 工作負載。
安裝及設定代理程式後,代理程式會從 MySQL 工作負載和基礎運算執行個體收集指標,並傳送至 Workload Manager。接著,您可以使用 Workload Manager 評估作業掃描 MySQL 工作負載,找出基礎架構、作業系統和工作負載設定是否偏離最佳做法。
事前準備
安裝及設定 Compute Workloads 專用代理程式前,請先確認符合下列必要條件:
- 您已在一或多個運算執行個體上部署 MySQL 工作負載。
- 您已授予代理程式所需的 IAM 角色。
- 您已啟用 Cloud API 存取權。
代理程式所需的 IAM 角色
Compute Workloads 的代理程式會使用附加至運算執行個體的服務帳戶進行驗證,並存取 Google Cloud 資源。
為提高安全性,建議您使用單一用途的服務帳戶,而非 Compute Engine 預設服務帳戶。
為確保服務帳戶具備必要權限,可讓 Compute Workloads 代理程式向Google Cloud 驗證身分並存取 Google Cloud 資源,請要求管理員在專案中授予服務帳戶下列 IAM 角色:
-
Compute 檢視者 (
roles/compute.viewer): 從 Compute 執行個體收集指標。 -
Workload Manager Insights Writer (
roles/workloadmanager.insightWriter): 將資料寫入 Workload Manager 資料倉儲。 -
(建議) 記錄寫入者 (
roles/logging.logWriter): 將代理程式記錄傳送至 Cloud Logging。 -
(選用) Secret Manager 密鑰存取者 (
roles/secretmanager.secretAccessor): 如果您使用 Secret Manager 儲存密碼,以便連線至 MySQL 執行個體。
如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。
管理員或許也能透過自訂角色或其他預先定義的角色,授予服務帳戶必要權限。
啟用 Cloud API 存取權
Compute Engine 建議您將執行個體設為允許所有 Cloud API 的所有存取權範圍,並只使用執行個體服務帳戶的身分與存取權管理權限,控管對Google Cloud 資源的存取權。詳情請參閱「建立使用使用者管理服務帳戶的 VM」。
如果限制 Cloud API 的存取權,則 Compute Workloads 代理程式至少需要在主機運算執行個體上具備下列 Cloud API 存取範圍:
https://www.googleapis.com/auth/cloud-platform
詳情請參閱「範圍最佳做法」。
如果您在沒有外部 IP 位址的運算執行個體上執行 MySQL 應用程式,則需要在執行個體的子網路上啟用私人 Google 存取權,這樣 Agent for Compute Workloads 才能存取 Google API 和服務。如要瞭解如何啟用私人 Google 存取權,請參閱「設定私人 Google 存取權」。
使用套件管理員安裝及設定代理程式
本節說明如何使用套件管理員,在運算執行個體上安裝 Agent for Compute Workloads,並設定該代理程式與 MySQL 執行個體連線。
如要安裝 Compute Workloads 專用的代理程式,請完成下列步驟:
RHEL
在 Red Hat Enterprise Linux (RHEL) 上,您可以使用 yum 套件管理指令安裝 Agent for Compute Workloads。這個指令會完成下列工作:
- 下載最新版代理程式。
- 為代理建立名為
google-cloud-workload-agent的systemd服務。 - 啟用並啟動
google-cloud-workload-agent服務。
如要在以 RHEL 為基礎的運算執行個體上安裝及設定 Agent for Compute Workloads,請完成下列步驟:
建立與運算執行個體的 SSH 連線。
在終端機中安裝代理程式:
sudo tee /etc/yum.repos.d/google-cloud-workload-agent.repo << EOM [google-cloud-workload-agent] name=Google Cloud Agent for Compute Workloads baseurl=https://packages.cloud.google.com/yum/repos/google-cloud-workload-agent-$basearch enabled=1 gpgcheck=0 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOM sudo yum install google-cloud-workload-agent開啟代理程式的設定檔:
/etc/google-cloud-workload-agent/configuration.json如設定參數一節所述,為所有必要參數指定值。
儲存設定檔
重新啟動代理程式,讓變更生效。
SLES
在 SUSE Linux Enterprise Server (SLES) 上,您可以使用 zypper 套件管理指令安裝 Agent for Compute Workloads。這個指令會完成下列工作:
- 下載最新版代理程式。
- 為代理建立名為
google-cloud-workload-agent的systemd服務。 - 啟用並啟動
google-cloud-workload-agent服務。
如要在以 SLES 為基礎的運算執行個體上安裝及設定 Agent for Compute Workloads,請完成下列步驟:
建立與運算執行個體的 SSH 連線。
在終端機中安裝代理程式:
sudo zypper addrepo --refresh https://packages.cloud.google.com/yum/repos/google-cloud-workload-agent-$basearch google-cloud-workload-agent sudo zypper install google-cloud-workload-agent開啟代理程式的設定檔:
/etc/google-cloud-workload-agent/configuration.json如設定參數一節所述,為所有必要參數指定值。
儲存設定檔
重新啟動代理程式,讓變更生效。
Debian
在 Debian 上,您可以使用 apt 套件管理指令安裝 Agent for Compute Workloads。這項指令會完成下列工作:
- 下載最新版代理程式。
- 為代理建立名為
google-cloud-workload-agent的systemd服務。 - 啟用並啟動
google-cloud-workload-agent服務。
如要在以 Debian 為基礎的運算執行個體上安裝及設定 Agent for Compute Workloads,請完成下列步驟:
建立與運算執行個體的 SSH 連線。
在終端機中安裝代理程式:
echo 'deb https://packages.cloud.google.com/apt google-cloud-workload-agent-x86-64-apt main' | sudo tee -a /etc/apt/sources.list.d/google-cloud-workload-agent.list sudo apt-get update sudo apt-get install google-cloud-workload-agent開啟代理程式的設定檔:
/etc/google-cloud-workload-agent/configuration.json如設定參數所述,為所有必要參數指定值。
儲存設定檔
重新啟動代理程式,讓變更生效。
Windows
在 Windows 上,您可以使用 googet 套件管理指令安裝 Agent for Compute Workloads。這項指令會完成下列工作:
- 下載最新版代理程式。
- 建立名為
google-cloud-workload-agent的 Windows 服務。 - 建立每分鐘執行的排程工作,檢查服務是否正在執行,並視需要重新啟動服務。
如要在 Windows 型運算執行個體上安裝及設定 Agent for Compute Workloads,請完成下列步驟:
使用遠端桌面通訊協定建立與運算執行個體的連線。
如要瞭解如何執行這項操作,請參閱「使用 RDP 連線至 Windows VM」一文。
以管理員身分從 PowerShell 執行下列指令:
googet addrepo google-cloud-workload-agent https://packages.cloud.google.com/yuck/repos/google-cloud-workload-agent-windows-x86_64 googet install google-cloud-workload-agent開啟代理程式的設定檔:
%ProgramFiles%\Google\google-cloud-workload-agent\conf\configuration.json如設定參數一節所述,為所有必要參數指定值。
儲存設定檔
重新啟動代理程式,讓變更生效。
使用 VM 擴充功能管理工具,在一組 VM 上安裝及管理代理程式
設定 VM 擴充功能管理工具
如要設定 VM 擴充功能管理工具,請完成下列步驟:
為一組 VM 安裝代理程式
如要使用 VM 擴充功能管理工具政策,在特定可用區的 VM 叢集上安裝最新版 Agent for Compute Workloads,請完成下列步驟:
控制台
前往 Google Cloud 控制台的「VM extension policies」(VM 擴充功能政策) 頁面。
按一下「建立擴充功能政策」。
在「Name」(名稱) 欄位中,輸入政策名稱。
選用:在「Description」(說明) 欄位中輸入政策的說明。
在「優先順序」欄位中,指定優先順序編號,以解決政策之間的衝突。數字越小越優先。預設值為
1000。使用「Region」(區域) 和「Zone」(可用區) 清單,選取要套用這項政策的可用區。
在「擴充功能」部分,按一下「新增擴充功能」,然後執行下列操作:
- 在「擴充功能」清單中,選取「Google Cloud's Extension for Compute Workloads」。
將「版本」欄位留空。
這會指示政策安裝最新版的 Agent for Compute Workloads。
在「設定檔內容」欄位中,輸入要套用至代理程式的設定。
如要瞭解代理程式支援的 MySQL 工作負載設定參數,請參閱「設定參數」。
按一下 [完成]。
選用:如要將政策推出範圍限制在必要 VM,請按照下列步驟操作:
- 按一下「新增標籤」,然後加入可識別必要 VM 的標籤。
- 按一下 [完成]。
點選「建立」。
gcloud
gcloud beta compute zone-vm-extension-policies create POLICY_NAME \ --zone=ZONE \ --extensions=google-cloud-workload-extension \ --config-from-file=google-cloud-workload-extension=CONFIG_FILE_PATH \ [--description="DESCRIPTION" \] [--inclusion-labels=KEY_1=VALUE_1 \] [--inclusion-labels=KEY_2=VALUE_2,KEY_3=VALUE_3 \] [--priority=PRIORITY]
更改下列內容:
POLICY_NAME:VM 擴充功能政策的名稱。如果區域中已有指定名稱的政策,這項指令就會失敗。
ZONE:要套用這項政策的可用區。CONFIG_FILE_PATH:JSON 檔案的本機路徑,其中包含 Agent for Compute Workloads 的設定,可與 MySQL 工作負載連線。- 如要以內嵌字串形式提供設定,請使用
--config旗標,而非--config-from-file。例如:--config=google-cloud-workload-extension="CONFIG"。Google Cloud 建議使用--config-from-file。 - 您可以選擇使用
--config-from-file或--config,但不能在同一個指令中同時使用兩者。 - 如要瞭解 MySQL 工作負載代理程式支援的設定參數,請參閱「設定參數」。
- 如要以內嵌字串形式提供設定,請使用
DESCRIPTION:政策的選用說明。KEY_1=VALUE_1:以半形逗號分隔的鍵/值組合清單,定義政策用來指定 VM 的標籤。- 如要讓 VM 成為政策的目標,VM 必須具備所有指定的標籤。
- 如果多次指定
--inclusion-labels,政策會以符合任何所提供選取器的 VM 為目標 (邏輯OR)。如果省略這個標記,政策會以指定可用區中的所有 VM 為目標。
PRIORITY:介於0到65535的整數,用於定義政策的優先順序。數字越小越優先。預設值為1000。
範例:
下列指令會在名為 test-project 的專案中建立名為 test-agent-policy 的政策,並在可用區 us-centrail-f 中部署的所有 VM 上安裝最新版 Agent for Compute Workloads。Google Cloud 系統會將 agent-config.json 中指定的設定套用至代理程式。
gcloud beta compute zone-vm-extension-policies create test-agent-policy \ --project=test-project \ --zone=us-central1-f \ --extensions=google-cloud-workload-extension \ --config-file-path=google-cloud-workload-extension="/usr/agent-config.json"
驗證代理程式安裝
如要確認代理程式是否正常運作,請完成下列步驟:
RHEL
建立與運算執行個體的 SSH 連線。
檢查代理程式套件的狀態:
systemctl status google-cloud-workload-agent如果代理程式套件正常運作,輸出內容會包含
active (running)。例如:google-cloud-workload-agent.service - Google Cloud Agent for Compute Workloads Loaded: loaded (/usr/lib/systemd/system/google-cloud-workload-agent.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2025-07-30 18:59:12 UTC; 10s ago Main PID: 14412 (google_cloud_sq) Tasks: 7 Memory: 12.9M (max: 1.0G limit: 1.0G available: 1011.0M) CGroup: /system.slice/google-cloud-workload-agent.service └─ 14412 /usr/bin/google_cloud_sql_server_agent --action=run
SLES
建立與運算執行個體的 SSH 連線。
檢查代理程式套件的狀態:
systemctl status google-cloud-workload-agent如果代理程式套件正常運作,輸出內容會包含
active (running)。例如:google-cloud-workload-agent.service - Google Cloud Agent for Compute Workloads Loaded: loaded (/usr/lib/systemd/system/google-cloud-workload-agent.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2025-07-30 18:59:12 UTC; 10s ago Main PID: 14412 (google_cloud_sq) Tasks: 7 Memory: 12.9M (max: 1.0G limit: 1.0G available: 1011.0M) CGroup: /system.slice/google-cloud-workload-agent.service └─ 14412 /usr/bin/google_cloud_sql_server_agent --action=run
Debian
建立與運算執行個體的 SSH 連線。
檢查代理程式套件的狀態:
systemctl status google-cloud-workload-agent如果代理程式套件正常運作,輸出內容會包含
active (running)。例如:google-cloud-workload-agent.service - Google Cloud Agent for Compute Workloads Loaded: loaded (/usr/lib/systemd/system/google-cloud-workload-agent.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2025-07-30 18:59:12 UTC; 10s ago Main PID: 14412 (google_cloud_sq) Tasks: 7 Memory: 12.9M (max: 1.0G limit: 1.0G available: 1011.0M) CGroup: /system.slice/google-cloud-workload-agent.service └─ 14412 /usr/bin/google_cloud_sql_server_agent --action=run
Windows
使用遠端桌面通訊協定建立與運算執行個體的連線。
如要瞭解如何執行這項操作,請參閱「使用 RDP 連線至 Windows VM」一文。
以管理員身分從 PowerShell 執行下列指令:
$(Get-Service -Name 'google-cloud-workload-agent' -ErrorAction Ignore).Status如果代理程式正常運作,狀態會顯示為
Running。
設定檔範例
以下是範例設定,可讓 Agent for Compute Workloads 連線至 MySQL 執行個體。驗證時會使用 Secret Manager 密碼,該密碼儲存在執行 MySQL 執行個體的相同 Google Cloud 專案中。
{
"log_level": "INFO",
"common_discovery": {
"collection_frequency": "10800s"
},
"mysql_configuration": {
"enabled": true,
"connection_parameters": {
"username": "db_user_name",
"secret": {
"secret_name": "db_pwd_secret_name",
"project_id": ""
},
"host": "localhost",
"port": 1433
}
}
}
設定參數
下表說明 Agent for Compute Workloads 的設定參數,這些參數支援 MySQL 工作負載的評估:
| 參數 | |
|---|---|
log_level |
如要設定代理程式的記錄層級,請設定必要值。可用的記錄層級如下:
預設記錄層級為 |
log_to_cloud |
如要將代理程式的記錄重新導向至 Cloud Logging,請指定 |
agent_properties.log_usage_metrics |
如要啟用代理程式健康狀態指標的記錄功能,請將值設為 |
common_discovery.collection_frequency |
以秒為單位指定代理程式工作負載探索服務的執行頻率。預設值為 請確認這個參數的值是以小寫 |
mysql_configuration.enabled
|
如要讓代理程式從 MySQL 執行個體收集指標,請將值設為 |
mysql_configuration.connection_parameters.username |
指定代理程式用來查詢 MySQL 執行個體的使用者帳戶。 |
mysql_configuration.connection_parameters.password |
指定代理程式用來查詢 MySQL 執行個體的使用者帳戶純文字密碼。 建議您使用 如要進行驗證,代理程式會依下列偏好順序:如果已指定,則偏好使用 |
mysql_configuration.connection_parameters.secret.secret_name |
(選用步驟) 如要安全地提供使用者帳戶的密碼,供代理程式查詢 MySQL 執行個體,請指定包含密碼的 Secret Manager 密鑰名稱。 如要進行驗證,代理程式會依下列偏好順序:如果已指定,則偏好使用 |
mysql_configuration.connection_parameters.secret.project_id |
(選用步驟) 如要使用 如果密鑰和工作負載位於同一個 Google Cloud 專案,請將這個參數的值設為空字串 ( |
mysql_configuration.connection_parameters.host |
指定 MySQL 主機名稱。 |
mysql_configuration.connection_parameters.port |
指定 MySQL 執行個體接受查詢的通訊埠。 |