查看和应用空闲资源建议


Compute Engine 会提供建议,以帮助您识别未使用的资源,例如永久性磁盘 (PD)、IP 地址和自定义磁盘映像。您可以使用空闲资源建议来最大程度地减少资源浪费并降低计算费用。对于使用频率很低的永久性磁盘,您可以创建备份快照,然后删除该资源。对于未使用的永久性磁盘、映像和 IP 地址,如果您不需要,可以删除它们。

如果您对空闲虚拟机建议感兴趣,请参阅查看和应用空闲虚拟机建议

准备工作

  • 设置身份验证(如果尚未设置)。身份验证是通过其进行身份验证以访问 Google Cloud 服务和 API 的过程。如需从本地开发环境运行代码或示例,您可以按如下方式向 Compute Engine 进行身份验证。

    选择标签页以了解您打算如何使用本页面上的示例:

    控制台

    当您使用 Google Cloud 控制台访问 Google Cloud 服务和 API 时,无需设置身份验证。

    gcloud

    1. 安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init
    2. 设置默认区域和可用区

    REST

    如需在本地开发环境中使用本页面上的 REST API 示例,请使用您提供给 gcloud CLI 的凭据。

      安装 Google Cloud CLI,然后通过运行以下命令初始化 Google Cloud CLI:

      gcloud init

价格

空闲资源建议是免费提供的。

生成建议

如果某个资源在 15 天内未挂接到虚拟机或其他资源,则 Recommender 会将该资源归类为空闲资源。

必须满足以下条件之一,Recommender 才能将资源归类为空闲资源并生成相应的推荐操作:

资源 资源被归类为空闲资源的条件 推荐执行的操作 节省的费用
永久性磁盘 磁盘是空白的,
至少创建于 15 天以前并且
从未挂接到虚拟机
删除 节省该磁盘的全部费用(请参阅磁盘价格
永久性磁盘 至少分离了 15 天 创建快照并删除磁盘 将该磁盘的维护费用降低 35% 到 92%(请参阅磁盘价格
自定义映像 至少有 15 天未用于创建磁盘,并且未用于任何实例模板 删除 节省该映像的全部费用(请参阅映像价格
IP 地址 至少有 15 天未挂接到任何资源 删除 节省该 IP 地址的全部费用(请参阅 IP 地址价格

建议频率

空闲资源建议会在资源创建后 15 天开始提供,并且每 24 小时会更新一次。

查看建议

如需查看有关空闲资源的建议,请使用 gcloud CLI 或 REST。

控制台

在 Google Cloud 控制台中,转到建议页面。

转到“建议”

所有空闲资源都列在未用的 Compute Engine 资源下。

gcloud

使用带有 --recommender=RECOMMENDER_ID 标志的 gcloud recommender recommendations list 命令

gcloud recommender recommendations list \
    --project=PROJECT_ID \
    --location=LOCATION \
    --recommender=RECOMMENDER_ID \
    --format=yaml

替换以下内容:

  • PROJECT_ID:您的项目的 ID。
  • LOCATION:您想要查看其建议的资源所在的位置。
    • 对于永久性磁盘,请指定可用区或区域,例如 us-central1-c
    • 对于 IP 地址:
      • 如需列出区域 IP 地址,您必须指定区域。
      • 如需列出全局 IP,请指定 global。如需详细了解区域和全局 IP 地址资源,请参阅 IP 地址
    • 对于自定义映像,请指定 global
  • RECOMMENDER_IDRecommender 的 ID
    • 对于磁盘,请指定 google.compute.disk.IdleResourceRecommender
    • 对于映像,请指定 google.compute.image.IdleResourceRecommender
    • 对于 IP 地址,请指定 google.compute.address.IdleResourceRecommender

例如,以下命令会为 test-project 列出 us-central1-c 中的空闲永久性磁盘建议:

gcloud recommender recommendations list \
    --project=test-project \
    --location=us-central1-c \
    --recommender=google.compute.disk.IdleResourceRecommender \
    --format=yaml


---
content:
    operationGroups:
    - operations:
      - action: add
        resource: //compute.googleapis.com/projects/test-project/global/snapshots/$snapshot-name
        resourceType: compute.googleapis.com/Disk
        path: /
        value:
        - name: $snapshot-name
          sourceDisk: projects/test-project/locations/us-central1-c/disks/pd-name
          storageLocations: us-central1
      - action: remove
        resource: //compute.googleapis.com/projects/test-project/zones/us-central1-c/disks/pd-name
        resourceType: compute.googleapis.com/Disk
        path: /
description: Save cost by snapshotting and then deleting idle persistent disk 'pd-name'
name: projects/test-project/locations/us-central1-c/recommenders/google.compute.disk.IdleResourceRecommender/recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1
recommenderSubtype: SNAPSHOT_AND_DELETE_DISK
lastRefreshTime:
  seconds: 1543912652
primaryImpact:
  category: COST
  costProjection:
    cost:
      currencyCode: USD
      units: '-50'
    duration:
      seconds: 2592000
stateInfo: ACTIVE
etag: "cb0e6ac2cfc0b591"

详细了解如何使用 gcloud CLI 处理建议

REST

调用 recommendations.list 方法并指定 Recommender ID,例如 google.compute.disk.IdleResourceRecommender

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/RECOMMENDER_ID/recommendations

替换以下内容:

  • PROJECT_ID:您的项目的 ID。
  • LOCATION:您想要查看其建议的资源所在的位置。
    • 对于永久性磁盘,请指定可用区或区域,例如 us-central1-c
    • 对于 IP 地址:
      • 如需列出区域 IP 地址,您必须指定区域。
      • 如需列出全局 IP,请指定 global。如需详细了解区域和全局 IP 地址资源,请参阅 IP 地址
    • 对于自定义映像,请指定 global
  • RECOMMENDER_IDRecommender 的 ID
    • 对于磁盘,请指定 google.compute.disk.IdleResourceRecommender
    • 对于映像,请指定 google.compute.image.IdleResourceRecommender
    • 对于 IP 地址,请指定 google.compute.address.IdleResourceRecommender

以下示例演示了如何发送包含 curl 的请求以及关联的示例响应。

PROJECT_ID=test-project
LOCATION=us-central1-c
RECOMMENDER_ID=google.compute.disk.IdleResourceRecommender

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
  https://recommender.googleapis.com/v1/projects/$PROJECT_ID/locations/$LOCATION/recommenders/$RECOMMENDER_ID/recommendations

空闲永久性磁盘建议的 JSON 响应示例:

{
 "description" : "Save cost by deleting idle persistent disk 'pd-name'",
 "name": "projects/test-project/locations/us-central1-c/recommenders/"
         "google.compute.disk.IdleResourceRecommender/"
         "recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1",
 "recommenderSubtype" : "SNAPSHOT_AND_DELETE_DISK",
 "lastRefreshTime": {
   "seconds": 1543912652
 },
 "primaryImpact": {
   "category": COST,
   "costProjection": {
    "cost": {"currencyCode": "USD", "units": -50},
    "duration": { "seconds": 2592000 }
   }
 },
 "stateInfo": ACTIVE,
 "content": {
   "operationGroups" : [
    {
      "operations" : [
       {
         "action": "add",
         "resourceType": "compute.googleapis.com/Disk",
         "resource" : "//compute.googleapis.com/projects/test-project/global/snapshots/$snapshot-name",
         "value": {
           "name": "$snapshot-name",
           "sourceDisk": "projects/test-project/zones/us-central1-c/disks/pd-name",
           "storageLocations": ["us-central1"],
         }
       },
       {
         "action": "remove",
         "resourceType": "compute.googleapis/Disk",
         "resource": "//compute.googleapis.com/projects/test-project/"
                     "zones/us-central1-c/disks/pd-name"
       }
      ]
    }
   ]
 },
 "associatedInsights": [
    {
      "insight": "projects/test-project/locations/us-central1-c/insightTypes/google.compute.disk.IdleResourceInsight/insights/31326443-bcc3-4776-9b86-48879fddb656"
    }
  ],
 "etag": "cb0e6ac2cfc0b591"
}

解读建议响应

您通过 gcloud CLI 或 REST 收到的每条建议都包含操作组,其中有一些可按顺序执行以应用该建议的操作。例如,空闲永久性磁盘建议操作组包含一个或两个操作:

  • 如果您的空闲永久性磁盘上有数据,则建议会包含一个 add 操作以创建快照来备份永久性磁盘。例如:

       {
         "action": "add",
         "resourceType": "compute.googleapis.com/Disk",
         "resource" : "//compute.googleapis.com/projects/test-project/global/snapshots/$snapshot-name",
         "path": "/",
         "value": {
           "name": "$snapshot-name",
           "sourceDisk": "projects/test-project/zones/us-central1-c/disks/pd-name",
           "storageLocations": ["us-central1"]
         }
       }
    
  • 用于永久删除空闲永久性磁盘的 remove 操作。例如:

       {
         "action": "remove",
         "resourceType": "compute.googleapis.com/Disk",
         "resource" : "//compute.googleapis.com/projects/test-project/zones/us-central1-c/disks/pd-name",
         "path": "/"
       }
    

如需创建永久性磁盘的快照以及删除永久性磁盘,请参阅应用空闲永久性磁盘建议。如需移除未使用的 IP 地址,请参阅删除空闲 IP 地址。如需移除未使用的自定义磁盘映像,请参阅删除空闲自定义映像

查看空闲资源建议的数据洞见

Recommender 会根据资源数据洞见生成建议。通过查看资源的数据洞见,您可以详细了解这些资源,例如资源与虚拟机分离的时长或者永久性磁盘是否为空。

如果要查看生成建议的数据洞见,您可以使用 gcloud CLI 或 REST。

gcloud

使用 insights list 命令

gcloud beta recommender insights list --project=PROJECT_NAME \
  --location=LOCATION --insight-type=INSIGHT_TYPE

替换以下内容:

  • LOCATION:您想要查看其数据洞见的资源所在的位置。
    • 对于永久性磁盘,请指定可用区或区域,例如 us-central1-c
    • 对于 IP 地址:
      • 如需列出区域 IP 地址,您必须指定区域。
      • 如需列出全局 IP,请指定 global。如需详细了解区域和全局 IP 地址资源,请参阅 IP 地址
    • 对于自定义映像,请指定 global
  • INSIGHT_TYPE数据洞见类型的 ID
    • 对于磁盘,请指定 google.compute.disk.IdleResourceInsight
    • 对于映像,请指定 google.compute.image.IdleResourceInsight
    • 对于 IP 地址,请指定 google.compute.address.IdleResourceInsight

REST

使用 insights.list 方法

GET https://recommender.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/insightTypes/INSIGHT_TYPE/insights

替换以下内容:

  • PROJECT_ID:您的项目的 ID。
  • LOCATION:您想要查看其数据洞见的资源所在的位置。
    • 对于永久性磁盘,请指定可用区或区域,例如 us-central1-c
    • 对于 IP 地址:
      • 如需列出区域 IP 地址,您必须指定区域。
      • 如需列出全局 IP,请指定 global。如需详细了解区域和全局 IP 地址资源,请参阅 IP 地址
    • 对于自定义映像,请指定 global
  • INSIGHT_TYPE数据洞见类型的 ID
    • 对于磁盘,请指定 google.compute.disk.IdleResourceInsight
    • 对于映像,请指定 google.compute.image.IdleResourceInsight
    • 对于 IP 地址,请指定 google.compute.address.IdleResourceInsight

以下是空闲永久性磁盘资源的数据洞见示例响应:

{
  "name": "projects/test-project/locations/us-central1-c/insightTypes/google.compute.disk.IdleResourceInsight/insights/0ec21a13-bb04-3121-7321-dc43a11cc3e2",
  "description": "Disk 'pd-name' in zone 'us-central1-c' was last used 17 days ago. Consider taking snapshot and delete it.",
  "targetResources": [
    "//compute.googleapis.com/projects/test-project/zones/us-central1-c/disks/pd-name"
  ],
  "insightSubtype": "IDLE_DISK",
  "content": {
    "diskLastUseTime": "2019-10-01 13:00:00",
    "isBlank": false,
  },
  "lastRefreshTime": "2019-10-10 13:00:00",
  "observationPeriod": "15 days",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "COST",
  "etag": "fds421j2349",
  "associatedRecommendations": [
    {
      "projects/test-project/locations/us-central1-c/recommenders/"
      "google.compute.disk.IdleResourceRecommender/"
      "recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1"
    }
  ]
}

示例响应包括以下字段:

  • diskLastUseTime:磁盘上次挂接到虚拟机的时间。如果磁盘从未挂接到虚拟机,则此字段会设置为磁盘的创建时间。
  • isBlank:如果磁盘为空且从未挂接到虚拟机,则此字段会设置为 true,否则设置为 false

如需详细了解数据洞见,请参阅参考文档

应用空闲资源建议

如果您收到关于空闲资源的建议,并且决定采纳建议,请按照以下说明执行操作。

删除空闲 IP 地址

请参阅 addresses.delete 方法gcloud compute addresses delete 命令释放静态外部 IP 地址文档。

删除空闲自定义映像

请参阅 images.delete 方法gcloud compute images delete 命令删除映像文档。

应用空闲永久性磁盘建议

如果您需要在删除永久性磁盘之前创建其快照,请参阅创建永久性磁盘快照

如需删除空闲永久性磁盘,请参阅 gcloud compute disks delete 命令

如需了解如何从快照恢复数据以及如何重新创建永久性磁盘,请参阅恢复快照