建议

Recommender

Recommender 是 Google Cloud 上的服务,用于为 Cloud 资源提供使用建议。单个 Google Cloud 产品和资源类型都有特定的 Recommender。单个产品可以有多个 Recommender,可为不同的资源提供不同类型的建议。

每个 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。当需要以向后兼容的方式引入对 recommendation.contentrecommendation.primary_impact.category 的重大更改时,可能会引入新的子类型。请参阅 Recommenders 部分,查看指定 Recommenders 的子类型列表。

影响

建议可产生两类影响:主要影响(始终提供)和其他应您想(可选)。

主要影响存储在 Recommendation 实体的 primaryImpact 字段中。它表示您在采纳建议时可能获得的好处。

其他影响存储在 additionalImpact 字段中。它们表示采纳建议后可能产生的其他结果,包括积极结果和消极结果。影响示例包括成本增加或安全注意事项。

例如,如果采纳具有主要影响 PERFORMANCE 的建议,而该建议是以提高 CPU 或内存分配来提高性能,则可能会产生额外的费用影响。

建议的影响都会划归类别。类别是预期的影响类型(例如费用、性能或安全性)。如果类别是费用,则影响还将包括费用预测。费用预测是指在接受建议后预计会支出的金额。

操作

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 对其进行引用。该操作可确保仅在上次检索建议后没有任何更改的情况下执行所有操作。

状态元数据

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

元数据以 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 文档。

数据分析参考文档

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