本文档介绍了如何在 Compute Engine 实例上安装适用于计算工作负载的代理,以及如何配置该代理以连接到在这些计算实例上运行的 Redis 工作负载。
安装并配置代理后,它会从 Redis 工作负载和底层计算实例收集指标,并将其发送到 Workload Manager。然后,您可以使用 Workload Manager 评估扫描 Redis 工作负载,以查找基础设施、操作系统和工作负载配置方面与最佳实践的偏差。
准备工作
在安装和配置适用于 Compute Workloads 的代理之前,您需要确保满足以下前提条件:
- 您已在一个或多个计算实例上部署了 Redis 工作负载。
- 您已授予代理所需的 IAM 角色。
- 您已启用对 Cloud API 的访问权限。
代理所需的 IAM 角色
适用于计算工作负载的代理使用附加到计算实例的服务账号进行身份验证并访问 Google Cloud 资源。
为了提高安全性,我们建议您使用单用途服务账号,而不是使用 Compute Engine 默认服务账号。
为确保服务账号具有让 Agent for Compute Workloads 向Google Cloud 进行身份验证并访问 Google Cloud 资源所需的权限,请让您的管理员为服务账号授予项目的以下 IAM 角色:
-
Compute Viewer (
roles/compute.viewer):用于从 Compute 实例中收集指标。 -
Workload Manager Insights Writer (
roles/workloadmanager.insightWriter):用于将数据写入 Workload Manager 数据仓库。 -
(推荐)Logs Writer (
roles/logging.logWriter): 用于将代理日志发送到 Cloud Logging。 -
(可选)Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor):如果您使用 Secret Manager 存储用于连接到 Redis 实例的密码。
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
您的管理员还可以通过自定义角色或其他预定义角色向服务账号授予所需的权限。
启用对 Cloud API 的访问权限
Compute Engine 建议将实例配置为允许针对所有 Cloud API 的所有访问权限范围,并且仅使用实例服务账号的 IAM 权限来控制对Google Cloud 资源的访问权限。如需了解详情,请参阅创建使用用户管理的服务账号的虚拟机。
如果您限制对 Cloud API 的访问权限,则 Agent for Compute Workloads 要求主机计算实例至少具有以下 Cloud API 访问权限范围:
https://www.googleapis.com/auth/cloud-platform
如需了解详情,请参阅范围最佳实践。
如果您是在没有外部 IP 地址的计算实例上运行 Redis 应用,则需要对该实例的子网启用专用 Google 访问通道,以便 Agent for Compute Workloads 可以访问 Google API 和服务。如需了解如何启用专用 Google 访问通道,请参阅配置专用 Google 访问通道。
使用软件包管理器安装和配置代理
本部分介绍如何使用软件包管理器在计算实例上安装 Compute Workloads 代理,并将其配置为与 Redis 实例连接。
如需安装适用于 Compute 工作负载的代理,请完成以下步骤:
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 与计算实例建立连接。
如需了解如何执行此操作,请参阅使用 RDP 连接到 Windows 虚拟机。
以管理员身份从 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 Extension Manager 文档中,查看准备工作部分。
设置创建和管理虚拟机扩展程序管理器政策所需的 IAM 角色。如需了解详情,请参阅以下内容:
在一组虚拟机上安装代理
如需使用虚拟机扩展管理器政策在特定可用区内的虚拟机群上安装最新版本的 Compute 工作负载代理,请完成以下步骤:
控制台
在 Google Cloud 控制台中,前往虚拟机扩展政策页面。
点击创建扩展程序政策。
在名称字段中,输入政策的名称。
可选:在说明字段中,输入政策的说明。
在优先级字段中,指定一个优先级编号,以解决政策之间的冲突。数字越小,优先级越高。默认值为
1000。使用区域和可用区列表,选择您要应用此政策的可用区。
在扩展程序部分中,点击添加扩展程序,然后执行以下操作:
- 从扩展程序列表中,选择 Google Cloud 的计算工作负载扩展程序。
将版本字段留空。
这会指示政策安装最新版本的 Agent for Compute Workloads。
在配置文件内容字段中,输入要应用于代理的配置。
如需了解代理为 Redis 工作负载支持的配置参数,请参阅配置参数。
点击完成。
可选:如需将政策发布限制为仅针对所需的虚拟机,请执行以下操作:
- 点击添加标签,然后添加用于标识所需虚拟机的标签。
- 点击完成。
点击创建。
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:虚拟机扩展政策的名称。如果相应政策已存在于该可用区中,则该命令会失败。
ZONE:您要应用此政策的地区。CONFIG_FILE_PATH:JSON 文件的本地路径,该文件包含用于将 Agent for Compute Workloads 连接到 Redis 工作负载的配置。- 或者,如需以内嵌字符串的形式提供配置,请使用
--config标志,而不是--config-from-file。例如--config=google-cloud-workload-extension="CONFIG"。 Google Cloud 建议您使用--config-from-file。 - 您可以使用
--config-from-file或--config,但不能在同一命令中同时使用这两者。 - 如需了解代理为 Redis 工作负载支持的配置参数,请参阅配置参数。
- 或者,如需以内嵌字符串的形式提供配置,请使用
DESCRIPTION:政策的可选说明。KEY_1=VALUE_1:以英文逗号分隔的键值对列表,用于定义政策定位虚拟机的标签。- 如需让虚拟机成为政策的目标对象,该虚拟机必须具有所有指定的标签。
- 如果您多次指定
--inclusion-labels,则政策会针对与所提供的任意选择器匹配的虚拟机(逻辑OR)。如果您省略此标志,则政策会针对指定可用区中的所有虚拟机。
PRIORITY:一个介于0到65535之间的整数,用于定义政策的优先级。数字越小,优先级越高。默认值为1000。
示例:
以下命令会在名为 test-project 的Google Cloud 项目中创建一个名为 test-agent-policy 的政策,该政策会在部署在可用区 us-centrail-f 中的所有虚拟机上安装最新版本的 Compute 工作负载代理。
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 与计算实例建立连接。
如需了解如何执行此操作,请参阅使用 RDP 连接到 Windows 虚拟机。
以管理员身份从 PowerShell 运行以下命令:
$(Get-Service -Name 'google-cloud-workload-agent' -ErrorAction Ignore).Status如果代理按预期运行,您会看到状态为
Running。
示例配置文件
以下是一个示例配置,可让 Compute Workloads 代理与 Redis 实例建立连接。对于身份验证,系统会使用存储在 Redis 实例运行的同一 Google Cloud 项目中的 Secret Manager Secret。
{
"log_level": "INFO",
"common_discovery": {
"collection_frequency": "10800s"
},
"redis_configuration": {
"enabled": true,
"connection_parameters": {
"username": "db_user_name",
"secret": {
"secret_name": "db_pwd_secret_name",
"project_id": ""
},
"host": "localhost",
"port": 1433
}
}
}
配置参数
下表介绍了支持 Redis 工作负载评估的 Agent for Compute Workloads 的配置参数:
| 参数 | |
|---|---|
log_level |
如需设置代理的日志记录级别,请设置所需的值。可用的日志级别如下:
默认日志级别为 |
log_to_cloud |
如需将代理的日志重定向到 Cloud Logging,请指定 |
agent_properties.log_usage_metrics |
如需启用代理健康状况指标的日志记录,请将该值设置为 |
common_discovery.collection_frequency |
指定代理的工作负载发现服务运行的频率(以秒为单位)。默认值为 确保此参数的值以小写字母 |
redis_configuration.enabled
|
如需让代理从 Redis 实例收集指标,请将该值设置为 |
redis_configuration.connection_parameters.username |
指定代理用于查询 Redis 实例的用户账号。 |
redis_configuration.connection_parameters.password |
指定代理用于查询 Redis 实例的用户账号的纯文本密码。 我们建议您使用 对于身份验证,代理会按以下优先顺序使用参数:如果指定了 |
redis_configuration.connection_parameters.secret.secret_name |
可选。为了安全地提供代理用于查询 Redis 实例的用户账号的密码,请指定包含该密码的 Secret Manager Secret 的名称。 对于身份验证,代理会按以下优先顺序使用参数:如果指定了 |
redis_configuration.connection_parameters.secret.project_id |
可选。如需使用 如果 Secret 和工作负载位于同一 Google Cloud 项目中,则将此形参的值设置为空字符串 ( |
redis_configuration.connection_parameters.host |
指定 Redis 主机名。 |
redis_configuration.connection_parameters.port |
指定 Redis 实例接受查询的端口。 |