虚拟机实例容量 Recommender

虚拟机实例容量 Recommender 可帮助优化 Compute Engine 虚拟机实例的资源利用率。这些建议是根据 Cloud Monitoring 服务在过去 8 天中收集的指标或系统指标自动生成的。请采用这些建议调整实例机器类型的容量,以便更加有效地利用虚拟机资源。

“容量建议”也称为“合理容量建议”。

如需了解详情,请参阅为虚拟机实例应用容量建议

Recommender ID

虚拟机实例容量 Recommender ID 为:

google.compute.instance.MachineTypeRecommender

使用 gcloud 命令RESTRPC API 来查看和修改建议时,可使用此 ID。

位置

使用 Recommender gcloud 命令和 API 时,你需要为要查看或修改的建议指定位置。对于虚拟机实例容量建议,请使用 Compute Engine 区域作为 gcloud 和 API 互动的位置。

权限

所需权限

如需查看虚拟机实例容量建议,请执行以下操作:

  • recommender.computeInstanceMachineTypeRecommendations.get
  • recommender.computeInstanceMachineTypeRecommendations.list

如要修改虚拟机实例容量建议的状态,请执行以下操作:

  • recommender.computeInstanceMachineTypeRecommendations.update

授予权限

如要授予这些权限,请按以下方式分配角色:

  • 如仅查看建议,请授予 Compute Recommender Viewer (roles/recommender.computeViewer) 角色。
  • 如需查看和修改建议,请授予 Compute Recommender Admin (roles/recommender.computeAdmin) 角色。
  • 如需授予 serviceusage.services.use 权限,请授予 Service Usage Consumer 角色 (roles/serviceusage.serviceUsageConsumer)。

或者,您也可以授予以下原初角色:

  • 如仅查看建议,请授予Viewer (roles/viewer) 角色。
  • 如要查看和修改建议,请授予 Owner (roles/owner) 或 Editor (roles/editor) 角色。
    • 这些角色还拥有 serviceusage.services.use 权限。

建议子类型

此 Recommender 支持以下子类型:

  • CHANGE_MACHINE_TYPE - 建议根据当前使用情况更改虚拟机实例的当前机器类型。

操作组

虚拟机实例容量 Recommender 生成的每个建议都有一个操作组,该操作组描述了一组应用该建议必须采取的操作。

针对独立虚拟机实例的容量建议

针对独立虚拟机实例的容量建议包括一个对 compute.googleapis.com/Instance 资源执行两项操作的 OperationGroup

  1. test 操作,用于确保当前机器类型与提出建议时的机器类型相同。例如:

    {
     "action": "test",
     "resourceType": "compute.googleapis.com/Instance",
     "resource" : "//compute.googleapis.com/projects/example-project/zones/z1/instances/vm-name",
     "path": "/machineType",
     "valueMatcher": {
       "matchesPattern": ".*zones/us-central1-f/machineTypes/n1-standard-32"
     }
    }
    
  2. 用于将机器类型替换为建议类型的 replace 操作。例如:

     {
       "action": "replace",
       "resourceType": "compute.googleapis.com/Instance",
       "resource" : "//compute.googleapis.com/projects/example-project/zones/z1/instances/vm-name",
       "path": "/machineType",
       "value": "zones/us-central1-f/machineTypes/n1-standard-4"
     }
    

示例

以下示例展示了如何列出虚拟机实例容量建议:

  1. 设置所需的环境变量:

    PROJECT=TARGET_PROJECT_ID
    LOCATION=LOCATION_ID
    RECOMMENDER=google.compute.instance.MachineTypeRecommender
    

    其中:

    • TARGET_PROJECT_ID 是要列出其建议的项目。该项目可以是当前项目以外的项目。

      • 对于 gcloud 命令,您必须使用项目 ID
      • 对于 API 请求,您可以使用项目编号或项目 ID。建议使用项目编号。

      项目编号在 API 和 gcloud 命令返回的响应中返回。

    • LOCATION_ID 是与建议关联的资源所在的 Google Cloud 位置(例如 us-central1-a)。

  2. 列出虚拟机实例容量建议:

    gcloud

    输入以下内容:

    gcloud recommender recommendations list \
        --project=${PROJECT} \
        --location=${LOCATION} \
        --recommender=${RECOMMENDER} \
        --format=json
    

    REST

    输入以下内容:

    curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
        -H "x-goog-user-project: ${PROJECT}" \
        "https://recommender.googleapis.com/v1/projects/${PROJECT}/locations/${LOCATION}/recommenders/${RECOMMENDER}/recommendations"
    

输出内容类似如下:

[
  {
    "content": {
     "operationGroups": [
        {
          "operations": [
            {
              "action": "test",
              "path": "/machineType",
              "resource": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-1",
              "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-1",
              "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": "280b34810bba8a1a",
    "lastRefreshTime": "2019-06-28T06:49:21Z",
    "name": "projects/548293842938/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/a523ff7e-ed03-4143-a3a5-5b396b99cba9",
    "primaryImpact": { ... }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "recommenderSubtype": "CHANGE_MACHINE_TYPE"
  }
]

如需了解如何使用 Recommender gcloud 命令和 API 对建议执行其他任务,请参阅使用 API