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

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. 选择您的项目并点击继续
  3. 在实例列表上,点击右上角的下拉列表以切换一列或多列。
  4. 启用或停用所需的列,包括建议列。
  5. 查看建议列,了解针对各个实例的建议。您还可以按预估节省金额对列排序。如果实例旁边没有任何建议,则表示 Compute Engine 未生成任何建议。

    “建议”列

gcloud

使用 gcloud recommender recommendations list 命令并指定虚拟机实例合理容量 Recommender

例如:

gcloud recommender recommendations list \
    --project my-project \
    --location us-central1-a \
    --recommender=google.compute.instance.MachineTypeRecommender \
    --format=yaml


---
content:
  ...
    operationGroups:
    - operations:
      - action: test
        path: /machineType
        resource: //compute.googleapis.com/projects/my-project/zones/us-central1-a/instances/so-inst-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/my-project/zones/us-central1-a/instances/so-inst-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.
...
name: projects/548293842938/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/5c3b62bd-87c3-4d13-9c31-f80c7cbe412f
...

响应包括以下字段:

  • name:建议的名称
  • description:用户易于阅读的建议说明。
  • operationGroups:可按顺序执行以应用建议的若干组操作。

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

API

Recommender API 与虚拟机实例合理容量 Recommender ID 搭配使用。

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

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

PROJECT_ID=my-project
LOCATION=us-central1-c
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 -H "$OAUTH_HEADER" https://recommender.googleapis.com/v1/projects/$PROJECT_ID/locations/$LOCATION/recommenders/$RECOMMENDER_ID/recommendations

响应包括以下字段:

  • name:建议的名称
  • description:用户易于阅读的建议说明。
  • operationGroups:可按顺序执行以应用建议的若干组操作。

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

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

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

根据建议调整实例的容量

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

控制台

  1. 在 Google Cloud Console 的虚拟机实例页面上,点击要调整容量的实例的建议文本。

    “建议”链接

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

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

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

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

gcloud

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

API

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

忽略建议和恢复建议

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

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

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

  1. 虚拟机实例页面上,点击要忽略的建议文本。

  2. 屏幕上会出现一个弹出窗口,其中包含更多详细信息和一个忽略建议按钮。

    忽略建议。

  3. 点击忽略建议

如需忽略所有建议,请点击虚拟机实例页面上的全部忽略按钮。

忽略建议。

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

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

    已忽略的建议

  2. 屏幕上会出现一个弹出窗口,其中包含更多详细信息和一个恢复建议按钮。

    忽略建议

  3. 点击恢复建议

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

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

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

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

后续步骤