建议

Recommender

Recommender 是 Google Cloud 中的一项服务,可为 Google Cloud 产品和资源提供优化建议。

每个 Recommender 都有一个唯一的 Recommender ID,用于标识服务。您可在使用 Recommender gcloud 命令、RESTRPC API 与建议进行交互时使用 Recommender ID。

如需了解详情,请参阅 Recommender

建议

机器生成的建议,可用于优化 Cloud 资源的使用情况。其中包括对建议采取措施所需的步骤。Recommender 使用机器学习或启发法,根据资源使用情况提供建议。Recommender 使用 Recommendation 实体存储建议。

建议需具有以下核心特性:

名称

建议名称存储在 Recommendation 实体的 name 字段中。该建议的名称采用以下格式:

projects/TARGET_PROJECT_ID/locations/LOCATION/recommenders/RECOMMENDER_ID/recommendations/RECOMMENDATION_ID

其中:

  • TARGET_PROJECT_ID 是提出建议的项目的 ID。
  • LOCATION 是与建议关联的资源所在的 Google Cloud 位置(例如 globalus-central1-a
  • RECOMMENDER_ID 是完全限定的 Recommender ID(例如 google.compute.instance.MachineTypeRecommender)。
  • RECOMMENDATION_ID 是数据分析的唯一 ID。

说明

建议说明存储在 Recommendation 实体的 description 字段中。目前仅有英文版。这是描述建议的可读性文本。在 Google Cloud Console 中,点击查看其他建议详细信息时会显示说明。

Recommender 子类型

Recommender 可以为特定种类的建议提供子类型。例如,Identity and Access Management 角色 Recommender 具有子类型 REPLACE_ROLEREMOVE_ROLE。随着时间的推移,新的子类型可能会引入现有 Recommender。此概览提供了所有可用 Recommender 的列表。如需详细了解可用的建议子类型,请参阅 Recommender 文档。

Recommender 影响

影响可以量化执行推荐操作的预计优势。每条建议都有以下类型的影响,表示因应用建议而可能产生的结果:

  • 主要影响是必需的,存储在 Recommendation 实体的 primaryImpact 字段中。

  • 次要影响是可选的,存储在 additionalImpact 字段中。

主要和次要影响如下:

  • COST:如果您应用给定建议,您预计可以节省(或产生)的金额。如需了解详情,请参阅 CostProjection 下的 cost 字段。

  • PERFORMANCE:预估性能增加或减少。请注意,某些性能建议可能会产生额外费用(例如,如果建议在过度使用的虚拟机上增加 CPU 或内存分配)。

  • SECURITY:预估安全状况提升。如下了解详情,请参阅 SecurityProjection 下的 details 字段。

  • MANAGEABILITY:预估费力的手动操作减少。

  • SUSTAINABILITY:预估碳排放量减少。如需了解详情,请参阅 SustainabilityProjection碳足迹报告方法下的 carbon_footprint_kg_co2 字段。

操作

Operation 是推荐的建议中必须作为原子步骤之一执行的单个操作。操作可以表示以下更改:

  • 在 Google Cloud 资源中添加、移除或替换 JSON 对象字段。
  • 在 Google Cloud 资源中添加、移除或替换 JSON 数组字段。通过在路径上定义过滤器来标识 JSON 数组元素。
  • 添加新的 Google Cloud 资源。
  • 删除 Google Cloud 资源。
  • 测试操作可指示资源的原始状态。测试操作还可在采纳建议之前验证资源的当前状态。
  • 复制和移动 Google Cloud 资源和字段。

每个 Operation 都基于补丁程序的 JSON 路径 (RFC 6902) 格式。我们之所以选择此 RFC,是因为它提供了一种更一致的方法来反映包括 Google Cloud 中常见复杂场景的资源更改。例如,IAM 建议的嵌套数组可以反映将主账号的角色绑定移动到其他角色的过程。

每种资源的更改列表(基于差异视图)均可通过以下方式生成:

  • 原始状态:测试操作表示字段的原始值。原始状态表示差异视图的左侧。
  • 推荐的状态:非测试操作表示每个字段推荐的更改。推荐的状态表示差异视图的右侧。

操作组

“操作组”是在采纳建议时,必须按特定顺序执行的一个或多个操作,。每个建议可以包含一个或多个操作组。操作组存储在 Recommendation 实体的 operationGroups 字段中。

例如,建议为 Compute Engine 实例组更改虚拟机实例机器类型的建议有两个操作组:一个用于更改实例模板中的机器类型,另一个用于将更改应用于特定实例组。

因为第一组操作必须在启动第二组操作之前完成,所以在建议中将它们定义为两个单独的实例组。

操作组可包含测试操作。测试操作会执行检查,以确保建议仍然有效。建议更改虚拟机实例的机器类型的建议有一项测试操作,用于检查当前机器类型是否与提出建议时相同。

这些建议在提出后会经历许多状态转换。建议可具有以下状态:

  • ACTIVE 表示已提出建议,但尚未对该建议执行任何响应操作。可通过声明建议来采纳该建议。在资源更改时可更新有效建议。
  • CLAIMED 表示您或其他进程已占用该建议,并且正在响应该建议。占用建议后,Recommender 不会在资源更改时对其进行更新。
  • SUCCEEDED 表示您或其他进程已对关联资源应用该建议。
  • FAILED 表示尝试应用该建议失败。
  • DISMISSED 表示您或其他进程忽略了未应用于关联资源的建议。此状态的建议无法在建议列表中显示,并且通常由因多种原因令其无效的管理员应用。该建议状态无法更改为 CLAIMED 状态。

建议的状态信息存储在 Recommendation 实体的 stateInfo 字段中。其中包括建议的状态本身以及其他建议的每个 Recommender 状态元数据。

如果将建议更改为 CLAIMEDSUCCEEDEDFAILED 状态,则建议的内容不会更新,并且建议的有效期是自状态更改之日起的 90 天。

etag

Etag 是用于标识建议当前状态的唯一指纹。每次建议更改时,系统都会分配一个新的 ETag 值。此值存储在 Recommender 实体的 etag 字段中。

使用 gcloud 命令或 API 调用从 Recommender 检索建议后,您可在后续操作中使用建议 ID 和 Etag 对其进行引用。该操作可确保仅在上次检索建议后没有任何更改的情况下执行所有操作。

优先级

建议的优先级有助于指示必须先执行的操作。此字段附带值 P1P2P3P4,并将 P4 设置为默认优先级。每个 Recommender 都可以定义自己的优先级策略。

状态元数据

当您声明建议或将其标记为成功或失败时,可以添加有关状态元数据操作的其他元数据。

元数据以 key:value 对形式指定。例如:

{
  "stateMetadata": {
    "priority" : "high",
    "tracking_number": "12345" }
}

stateMetadata 字段的更新将覆盖现有状态元数据。

上次刷新时间

上次刷新时间表示生成过程上次刷新建议的时间。建议的内容反映了上次刷新时资源的状态。

示例

以下示例显示了 Compute Engine 中虚拟机实例的容量建议。

{
  "content": {
    "operationGroups": [
      {
        "operations": [
          {
            "action": "test",
            "path": "/machineType",
            "resource": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-rightsizing-2",
            "resourceType": "compute.googleapis.com/Instance",
            "valueMatcher": {
              "matchesPattern": ".*zones/us-central1-a/machineTypes/n1-standard-4"
            }
          },
          {
            "action": "replace",
            "path": "/machineType",
            "resource": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-rightsizing-2",
            "resourceType": "compute.googleapis.com/Instance",
            "value": "zones/us-central1-a/machineTypes/custom-2-5120"
          }
        ]
      }
    ]
  },
  "description": "Save cost by changing machine type from n1-standard-4 to custom-2-5120.",
  "etag": "\"923daeebe926c12f\"",
  "recommenderSubtype": "CHANGE_MACHINE_TYPE",
  "lastRefreshTime": "2019-06-13T06:44:58Z",
  "name": "projects/32428390823/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/a523ff7e-ed03-4143-a3a5-5b396b99cba9",
  "primaryImpact": {
    "category": "COST",
    "costProjection": {
      "cost": {
        "currencyCode": "USD",
        "units": "-73"
      },
      "duration": "2592000s"
    }
  },
  "stateInfo": {
    "state": "ACTIVE"
  }
}

如需查看更多建议示例,请参阅 Recommender 中各个 Recommender 文档。

数据分析参考文档

对关联数据分析的引用。引用可将建议与其关联的数据分析(如果有)关联起来。

配置

通过 Recommender 配置,您可以执行以下操作:

  • 自定义数据分析和建议的生成方式。通过修改用于生成这些数据分析和建议的一些配置参数,可实现这一点。
  • 每个 Recommender 配置在开始时都为每个参数提供了一些默认值。每个参数都有一系列值,可用于自定义配置。
  • 活跃配置是您之前修改的配置。每次更改配置时,配置最长可能需要 48 小时才能生效。

Recommender 配置的一个示例是设置默认 CPU 阈值或观察期,以创建更满足您的工作负载、应用和基础架构需求的建议。

使用 Configuration API,您可以检索 Recommender 或数据分析类型的配置。您可以选择更新单个项目的配置参数。每种 Recommender 配置或数据分析类型都需要特定权限才能查看和修改配置参数。

以下是包含空闲虚拟机 Recommender 的配置参数的示例响应:

{
  "name": "projects/project-number/locations/global/recommenders/google.iam.policy.Recommender/config",
  "recommenderGenerationConfig": {
    "params": {
      "minimum_observation_period": "P90D",
    }
  },
  "etag": "\"2f3c9b65cda6a4ba\"",
  "updateTime": "2020-11-03T04:41:15.330351Z"
}