为 Redis 工作负载设置代理

本文档介绍了如何在 Compute Engine 实例上安装适用于计算工作负载的代理,以及如何配置该代理以连接到在该计算实例上运行的 Redis 工作负载。

准备工作

在安装和配置适用于 Compute Workloads 的代理之前,您需要确保满足以下前提条件:

所需 IAM 角色

适用于计算工作负载的代理使用附加到计算实例的服务账号进行身份验证并访问 Google Cloud 资源。

为了提高安全性,我们建议您使用单用途服务账号,而不是使用 Compute Engine 默认服务账号

为确保服务账号具有让 Agent for Compute Workloads 向Google Cloud 进行身份验证并访问 Google Cloud 资源所需的权限,请让您的管理员为服务账号授予项目的以下 IAM 角色:

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您的管理员还可以通过自定义角色或其他预定义角色向服务账号授予所需的权限。

启用对 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 访问通道

安装并配置代理

如需在计算实例上安装 Agent for Compute Workloads,并将其配置为与 Redis 实例连接,请完成以下步骤:

RHEL

在 Red Hat Enterprise Linux (RHEL) 上,您可以使用 yum 软件包管理命令安装 Agent for Compute Workloads。此命令可完成以下任务:

  • 下载最新版本的代理。
  • 为代理创建名为 google-cloud-workload-agentsystemd 服务。
  • 启用并启动 google-cloud-workload-agent 服务。

如需在基于 RHEL 的 Compute 实例上安装和配置 Agent for Compute Workloads,请完成以下步骤:

  1. 与您的计算实例建立 SSH 连接。

  2. 在终端中,安装代理:

    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
    
  3. 打开代理的配置文件:

    /etc/google-cloud-workload-agent/configuration.json
    
  4. 按照配置参数中的说明,为所有必需参数指定值。

  5. 保存配置文件

  6. 重启代理以使更改生效。

SLES

在 SUSE Linux Enterprise Server (SLES) 上,您可以使用 zypper 软件包管理命令安装 Agent for Compute Workloads。此命令可完成以下任务:

  • 下载最新版本的代理。
  • 为代理创建名为 google-cloud-workload-agentsystemd 服务。
  • 启用并启动 google-cloud-workload-agent 服务。

如需在基于 SLES 的计算实例上安装和配置 Agent for Compute Workloads,请完成以下步骤:

  1. 与您的计算实例建立 SSH 连接。

  2. 在终端中,安装代理:

    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
    
  3. 打开代理的配置文件:

    /etc/google-cloud-workload-agent/configuration.json
    
  4. 按照配置参数中的说明,为所有必需参数指定值。

  5. 保存配置文件

  6. 重启代理以使更改生效。

Debian

在 Debian 上,您可以使用 apt 软件包管理命令安装 Agent for Compute Workloads。此命令可完成以下任务:

  • 下载最新版本的代理。
  • 为代理创建名为 google-cloud-workload-agentsystemd 服务。
  • 启用并启动 google-cloud-workload-agent 服务。

如需在基于 Debian 的计算实例上安装和配置 Agent for Compute Workloads,请完成以下步骤:

  1. 与您的计算实例建立 SSH 连接。

  2. 在终端中,安装代理:

    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
    
  3. 打开代理的配置文件:

    /etc/google-cloud-workload-agent/configuration.json
    
  4. 按照配置参数中的说明,为所有必需参数指定值。

  5. 保存配置文件

  6. 重启代理以使更改生效。

Windows

在 Windows 上,您可以使用 googet 软件包管理命令安装 Agent for Compute Workloads。此命令可完成以下任务:

  • 下载最新版本的代理。
  • 创建名为 google-cloud-workload-agent 的 Windows 服务。
  • 创建每分钟运行一次的计划任务,以检查服务是否正在运行,并在必要时重启服务。

如需在基于 Windows 的计算实例上安装和配置 Agent for Compute Workloads,请完成以下步骤:

  1. 使用 RDP 与计算实例建立连接。

    如需了解如何执行此操作,请参阅使用 RDP 连接到 Windows 虚拟机

  2. 以管理员身份从 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
    
  3. 打开代理的配置文件:

    %ProgramFiles%\Google\google-cloud-workload-agent\conf\configuration.json
    
  4. 按照配置参数中的说明,为所有必需参数指定值。

  5. 保存配置文件

  6. 重启代理以使更改生效。

验证代理安装

如需验证代理是否按预期运行,请完成以下步骤:

RHEL

  1. 与您的计算实例建立 SSH 连接。

  2. 检查代理软件包的状态:

    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

  1. 与您的计算实例建立 SSH 连接。

  2. 检查代理软件包的状态:

    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

  1. 与您的计算实例建立 SSH 连接。

  2. 检查代理软件包的状态:

    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

  1. 使用 RDP 与计算实例建立连接。

    如需了解如何执行此操作,请参阅使用 RDP 连接到 Windows 虚拟机

  2. 以管理员身份从 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

String

如需设置代理的日志记录级别,请设置所需的值。可用的日志级别如下:

  • DEBUG
  • INFO
  • WARNING
  • ERROR

默认日志级别为 INFO。除非有 Cloud Customer Care 的指导,否则请勿更改日志记录级别。

log_to_cloud

Boolean

如需将代理的日志重定向到 Cloud Logging,请指定 true。默认值为 true

agent_properties.log_usage_metrics

Boolean

如需启用代理健康状况指标的日志记录,请将该值设置为 true。默认值为 false

common_discovery.collection_frequency

Duration

指定代理的工作负载发现服务运行的频率(以秒为单位)。默认值为 10800s

确保此参数的值以小写字母 s 结尾。

redis_configuration.enabled

Boolean

如需让代理从 Redis 实例收集指标,请将该值设置为 true。默认值为 false

redis_configuration.connection_parameters.username

String

指定代理用于查询 Redis 实例的用户账号。

redis_configuration.connection_parameters.password

String

指定代理用于查询 Redis 实例的用户账号的纯文本密码。

我们建议您使用 secret.namesecret.project_id 参数,而不是指定纯文本密码。

对于身份验证,代理会按以下优先顺序使用参数:如果指定了 secret 参数集,则优先使用该参数集,而不是 password 参数。我们建议您在代理的配置文件中仅设置一个身份验证选项。

redis_configuration.connection_parameters.secret.secret_name

String

可选。为了安全地提供代理用于查询 Redis 实例的用户账号的密码,请指定包含该密码的 Secret Manager Secret 的名称。

对于身份验证,代理会按以下优先顺序使用参数:如果指定了 secret 参数集,则优先使用该参数集,而不是 password 参数。我们建议您在代理的配置文件中仅设置一个身份验证选项。

redis_configuration.connection_parameters.secret.project_id

String

可选。如需使用 secret.secret_name 参数对指定的用户账号进行身份验证,请指定存储 Secret Manager 密文的 Google Cloud 项目的项目 ID。

如果 Secret 和工作负载位于同一 Google Cloud 项目中,则将此形参的值设置为空字符串 ("")。

redis_configuration.connection_parameters.host

String

指定 Redis 主机名。

redis_configuration.connection_parameters.port

Int

指定 Redis 实例接受查询的端口。

后续步骤