应用针对虚拟机实例的容量建议

Compute Engine 会提供机器类型建议,以帮助优化虚拟机 (VM) 实例的资源利用率。这些建议是根据 Cloud Monitoring 服务在过去 8 天中收集的系统指标自动生成的。请采用这些建议来调整实例机器类型的容量,以更加有效地利用实例的资源。此功能也称为“合理容量建议”。

如需详细了解虚拟机实例可用的不同容量选项,请参阅机器类型文档。

准备工作

价格

机器类型容量建议是免费提供的。如果您应用建议以调整实例的机器类型容量,则需要为您选择的机器类型付费。

限制和用例

容量建议目前不适用于:使用 App Engine 柔性环境、Dataflow 或 Google Kubernetes Engine 创建的虚拟机实例;或者具有临时磁盘、GPU 或 TPU 的虚拟机实例。

容量建议算法适用于遵循每周模式的工作负载、在数周时间内增长或缩减的工作负载、持续未充分利用其资源的工作负载,或由于资源不足持续受到限制的工作负载。在这些情况下,8 天的历史数据足以预测如何调整机器容量来提高资源利用率。

容量建议算法不太适合以下工作负载:

  • 很少出现峰值(例如,每月出现一次峰值)的工作负载,因为 8 天的数据不足以捕获或预测 CPU 波动。
  • 具有极短 CPU 峰值的工作负载,因为建议是基于 CPU 平均利用率(以 60 秒为时间间隔)生成的。系统生成建议的速度可能不够快,无法捕获较短的峰值。如需了解详情,请参阅容量建议的工作原理

对于相较于性能更注重成本的工作负载(例如批处理工作负载),您可以忽略增加容量的建议。

在极少数情况下,您在应用建议时可能会看到错误消息。 例如,建议的机器类型可能对于挂接的磁盘数量而言太小,可能无法满足映像或许可的资源要求,或者可能在特定可用区中暂时不可用。

容量建议的工作原理

Compute Engine 会监控正在运行的虚拟机的 CPU 和内存利用率,并基于最近 8 天的数据生成建议。 Compute Engine 会生成如下建议:

  • 如果在大部分时间实例的 CPU 利用率都处于较低状态,则 Compute Engine 会建议使用虚拟 CPU 数量较少的机器类型。

  • 如果在大部分时间实例的 CPU 利用率都处于较高状态,则 Compute Engine 会建议使用虚拟 CPU 数量较多的机器类型。

  • 如果实例未曾用到大部分内存,则 Compute Engine 会建议使用内存较小的机器类型。

  • 如果大部分时间内实例都在主动使用其大部分内存,则 Compute Engine 会建议使用内存较大的机器类型。

Compute Engine 可能会建议使用标准或自定义机器类型。请注意,可供机器使用的内存容量和 vCPU 数量存在限制。具体而言,要增加一个资源,可能需要同时增加另一个资源,这样才能符合有效机器类型的规范。此外,Compute Engine 仅建议使用在运行实例的地区提供的机器类型。

对于费用差异预估,是根据前一周的用量(享受持续使用折扣前)推算出的 30 天所需的实例费用,然后将其与建议的机器类型的每月费用(享受持续使用折扣前)进行比较,得出的差异数字。如需了解准确的价格和详细信息,请参阅虚拟机实例价格

查看容量建议

Compute Engine 通过 Google Cloud Console 提供建议。您还可以使用 gcloud 工具或 API 通过 Recommender 获得建议。

控制台

  1. 在 Google Cloud Console 中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 查看建议列,了解针对各个实例的建议。您还可以按预估节省金额对列排序。如果实例旁边没有任何建议,则表示 Compute Engine 未生成任何建议。

    “建议”列。

gcloud

使用 gcloud recommender recommendations list 命令并将 --recommender 标志设置为 google.compute.instance.MachineTypeRecommender

gcloud recommender recommendations list \
    --recommender=google.compute.instance.MachineTypeRecommender \
    --project=PROJECT_ID
    --location=ZONE \
    --format=FORMAT

请替换以下内容:

  • PROJECT_ID:您的项目的 ID
  • ZONE:包含要为其列出建议的实例的可用区
  • FORMAT:响应的输出格式,例如:yaml

gcloud recommender recommendations list 命令的输出包含以下字段:

  • name:建议的名称。
  • description:用户易于阅读的建议说明。
  • operationGroups:可按顺序执行以应用建议的若干组操作。
  • recommenderSubtype:建议的子类型。
    • CHANGE_MACHINE_TYPE 建议您根据当前使用量更改虚拟机实例的当前机器类型。

如需了解详情,请参阅 Recommender 文档。

API

使用 recommendations.list 方法并将 RECOMMENDER_ID 路径参数设置为 google.compute.instance.MachineTypeRecommender

如果您尚不熟悉调用 Google Cloud API 的身份验证前提条件,请参阅身份验证概览

以下示例 bash 脚本将最终用户身份验证流程与 OAuth 客户端凭据搭配使用。该脚本使用 Google oauth2l 命令行工具获取 OAuth 2.0 访问令牌,然后使用该令牌发出 curl 请求。

PROJECT_ID=PROJECT_ID
LOCATION=ZONE
RECOMMENDER_ID=google.compute.instanceGroupManager.MachineTypeRecommender
OAUTH_JSON=~/client_secrets.json  # credentials for service account
OAUTH_HEADER="$(oauth2l header --json $OAUTH_JSON cloud-platform)"
curl -X GET -H "$OAUTH_HEADER" https://recommender.googleapis.com/v1/projects/$PROJECT_ID/locations/$LOCATION/recommenders/$RECOMMENDER_ID/recommendations

请替换以下内容:

  • PROJECT_ID:您的项目的 ID
  • ZONE:包含要为其列出建议的实例的可用区

响应包括以下字段:

  • name:建议的名称。
  • description:用户易于阅读的建议说明。
  • operationGroups:可按顺序执行以应用建议的若干组操作。
  • recommenderSubtype:建议的子类型。
    • CHANGE_MACHINE_TYPE 建议您根据当前使用量更改虚拟机实例的当前机器类型。

如需了解详情,请参阅 Recommender 文档。

创建实例后 24 小时内,系统会显示针对该实例的建议。如果实例的机器类型发生更改,则 Compute Engine 会在更改后 24 小时内提供进一步的建议。

之后,系统会在一天中定期更新虚拟机实例建议。

解读建议响应

您收到的每个虚拟机实例大小调整建议都包含一个操作组,其中包含两个必须按顺序执行才能应用建议的操作。

  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"
    }
    

根据建议调整实例的容量

如果确定想要应用 Compute Engine 生成的建议,您可以直接在建议界面调整实例的容量,也可以手动逐步执行查看容量建议时返回的操作。

控制台

  1. 在 Google Cloud Console 中,转到虚拟机实例页面。

    转到虚拟机实例

    如果存在针对实例的建议,则相应建议会出现在建议列中。

  2. 点击您要调整大小的实例的建议文本。

    “建议”列。

  3. 此时会打开一个弹出窗口,其中包含更多详细信息和应用按钮,您可以使用该按钮将建议应用于实例。点击此按钮后,Compute Engine 会停止实例,更改其机器类型,然后重启实例。

  4. 您还可以选择点击自定义链接,以按照自己的喜好自定义实例。

    “建议详细信息”弹出窗口

  5. 点击应用按钮以应用更改。

gcloud

如需了解相关信息,请参阅更改机器类型

API

如需了解相关信息,请参阅更改机器类型

忽略建议和恢复建议

如果您已使用完建议,则可以通过控制台忽略建议。在控制台中,如果忽略建议,则系统会从预估节省总额中移除该建议,同时将建议最小化显示,使其呈灰显状态。

通过控制台操作建议不会影响 Recommender API 返回的建议列表或建议状态。如需管理 Recommender API 返回的建议状态,请参阅使用 API

如需通过控制台忽略某项建议,请执行以下操作:

  1. 在 Google Cloud Console 中,转到虚拟机实例页面。

    转到虚拟机实例

    如果存在针对实例的建议,则相应建议会出现在建议列中。

  2. 点击您要忽略的建议的建议文本。

    “建议”列。

  3. 此时将打开一个弹出窗口,其中包含更多详细信息和一个忽略建议按钮。

    “建议详细信息”弹出窗口。

  4. 点击忽略建议

要忽略控制台中的所有建议,请执行以下操作:

  1. 在 Google Cloud Console 中,转到虚拟机实例页面。

    转到虚拟机实例

  2. 点击全部忽略按钮。

    忽略所有建议。

要恢复建议,请执行以下操作:

  1. 在 Google Cloud Console 的虚拟机实例页面上,点击要恢复的灰显建议文本。

    “建议详细信息”弹出窗口

  2. 此时将打开一个弹出窗口,其中包含更多详细信息和一个恢复建议按钮。

    忽略建议。

  3. 点击恢复建议

使用 Monitoring 代理获取更精确的建议

Cloud Monitoring 提供了 Monitoring 代理,可用于从虚拟机实例收集额外的磁盘、CPU、网络和进程指标。如需收集此类数据,请在虚拟机实例上安装 Monitoring 代理,这样此代理就可以访问系统资源和应用服务。

如果虚拟机实例上已安装且正在运行 Monitoring 代理,则此代理收集的 CPU 和内存指标会自动用于计算容量建议。与默认的 Compute Engine 指标相比,Monitoring 代理提供的代理指标可让您更深入地了解实例的资源利用率。这样,建议引擎就能更好地预估资源需求,从而生成更精确的建议。

要安装代理,请参阅安装 Monitoring 代理

后续步骤