查看和应用空闲资源建议


本文档介绍了如何查看和应用针对 Persistent Disk 卷、IP 地址和自定义磁盘映像的空闲资源建议。

Compute Engine 可帮助您识别空闲的 Persistent Disk 卷、IP 地址和自定义磁盘映像,并提供建议,帮助您最大限度地减少浪费并避免不必要的费用。

如果您对空闲虚拟机 (VM) 实例的建议感兴趣,请参阅查看和应用空闲虚拟机建议

准备工作

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

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      如需了解详情,请参阅 Google Cloud 身份验证文档中的使用 REST 时进行身份验证

价格

使用空闲资源建议不会产生任何费用。

生成建议

如果某个资源在 15 天内未挂接到虚拟机或其他资源,则 Recommender 会将该资源归类为空闲资源。如需详细了解将资源归类为空闲资源的条件和建议的操作,请参阅下表:

资源 资源被归类为空闲资源的条件 推荐执行的操作 节省
Persistent Disk 以下所有条件都必须成立:
  • 永久性磁盘至少已创建 15 天。
  • 永久性磁盘从未挂接到虚拟机。
  • 永久性磁盘为空。
  • 永久性磁盘未绑定到 GKE Pod。
删除 节省该磁盘的全部费用。如需了解详情,请参阅磁盘和映像价格
Persistent Disk 以下所有条件都必须成立:
  • 永久性磁盘已分离至少 15 天。
  • 永久性磁盘未绑定到 GKE Pod。
为 Persistent Disk 创建快照,然后删除该快照 将该磁盘的维护费用降低 35% 到 92%。如需了解详情,请参阅磁盘和映像价格
自定义映像 以下所有条件都必须成立:
  • 映像至少有 15 天未用于创建磁盘。
  • 该映像未在任何实例模板中使用。
删除 节省该映像的全部费用。如需了解详情,请参阅磁盘和映像价格
外部 IP 地址 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 中的空闲 Persistent Disk 建议:

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

空闲 Persistent Disk 建议的 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 收到的每条建议都包含操作组,其中有一些可按顺序执行以应用该建议的操作。例如,空闲 Persistent Disk 建议操作组包含一个或两个操作:

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

       {
         "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"]
         }
       }
    
  • 用于永久删除空闲 Persistent Disk 的 remove 操作。例如:

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

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

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

如果要查看生成建议的数据洞见,您可以使用 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

以下是空闲 Persistent Disk 资源的数据洞见示例响应:

{
  "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 命令删除映像文档。

应用空闲 Persistent Disk 建议

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

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

如需了解如何从快照恢复数据以及重新创建 Persistent Disk,请参阅恢复快照