アイドル リソースに関する推奨事項の表示と適用

Compute Engine には、永続ディスク(PD)、IP アドレス、未使用のカスタム ディスク イメージなどのリソースを識別するための推奨事項があります。アイドル リソースの推奨事項を使用することで、リソースの無駄を最小限にし、コンピューティング料金を削減できます。アクティブに使用されていない PD の場合は、バックアップ スナップショットを作成してリソースを削除できます。未使用の PD、イメージ、IP アドレスは必要に応じて削除できます。

アイドル状態の VM の推奨事項については、アイドル状態の VM の推奨事項の表示と適用をご覧ください。

始める前に

料金

アイドル状態のリソースに対する推奨事項は無料で利用できます。

推奨の生成

リソースが 15 日間 VM などのリソースに接続されていない場合、Recommender はそのリソースをアイドル状態として分類します。

リソースをアイドル状態に分類して対応する推奨アクションを生成するには、次のいずれかの条件を満たす必要があります。

リソース リソースがアイドル状態に分類される条件 推奨される対応 コスト削減
PD 15 日以上前に作成されている
かつ、VM に接続されていない
かつ、データが保存されていない
削除 そのディスクの費用を 100% 削減できます(ディスクの料金をご覧ください)。
PD 15 日以上接続していない スナップショットの作成と削除 このディスクのメンテナンス コストを 35% から 92% 削減できます(ディスクの料金をご覧ください)。
カスタム イメージ ディスクの作成に 15 日以上使用されず、インスタンス テンプレートで使用されていない 削除 そのイメージの費用を 100% 削減できます(イメージの料金をご覧ください)。
IP アドレス 少なくとも 15 日間リソースに接続していない 削除 IP アドレスの費用を 100% 削減できます(IP の料金をご覧ください)。

推奨の頻度

アイドル状態のリソースに対する推奨は、リソースの作成から 15 日後に始まり、24 時間ごとに更新されます。

推奨の表示

アイドル状態のリソースに対する推奨事項を表示するには、gcloud ツールまたは API を使用します。

Console

Console で、[推奨事項] ページに移動します。

[推奨事項] に移動

アイドル状態のリソースは、[未使用の 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: 推奨事項を取得するリソースが含まれているロケーション。
    • PD の場合、ゾーンまたはリージョンを指定します(例: us-central1-c)。
    • IP の場合は、リージョンまたは global を指定します。
    • カスタム イメージの場合は、global を指定します。
  • RECOMMENDER_ID: Recommender の ID
    • ディスクの場合は、google.compute.disk.IdleResourceRecommender を指定します。
    • イメージの場合は、google.compute.image.IdleResourceRecommender を指定します。
    • IP の場合は、google.compute.address.IdleResourceRecommender を指定します。

たとえば、次のコマンドは、my-projectus-central1-c にあるアイドル状態の PD に対する推奨事項を一覧表示します。

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 ツールで推奨事項を表示する方法をご確認ください。

API

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: 推奨事項を取得するリソースが含まれているロケーション。
    • PD の場合、ゾーンまたはリージョンを指定します(例: us-central1-c)。
    • IP の場合は、リージョンまたは global を指定します。
    • カスタム イメージの場合は、global を指定します。
  • RECOMMENDER_ID: Recommender の ID
    • ディスクの場合は、google.compute.disk.IdleResourceRecommender を指定します。
    • イメージの場合は、google.compute.image.IdleResourceRecommender を指定します。
    • IP の場合は、google.compute.address.IdleResourceRecommender を指定します。

Google Cloud API を呼び出す際の認証の前提条件については、認証の概要をご覧ください。

次の bash スクリプトの例では、エンドユーザー認証フローで OAuth クライアント認証情報を使用しています。このスクリプトでは、Google oauth2l コマンドライン ツールを使用して、OAuth 2.0 アクセス トークンを取得し、そのトークンを使用する curl リクエストを作成します。

PROJECT_ID=test-project
LOCATION=us-central1-c
RECOMMENDER=google.compute.disk.IdleResourceRecommender
OAUTH_JSON=~/service-account.json
OAUTH_HEADER="$(oauth2l header --json $OAUTH_JSON cloud-platform)"

curl -H "$OAUTH_HEADER" https://recommender.googleapis.com/v1/projects/$PROJECT_ID/locations/$LOCATION/recommenders/google.compute.disk.IdleResourceRecommender/recommendations

アイドル状態の PD に対する推奨の 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 ツールまたは API を介して受信する各推奨には、推奨を適用するために連続して実行できるオペレーション グループが含まれています。たとえば、アイドル状態の PD の推奨のオペレーション グループには、次の 1 つまたは 2 つのオペレーションが含まれます。

  • アイドル状態の PD にデータが保存されている場合は、PD のバックアップとなるスナップショットを作成する 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"]
         }
       }
    
  • アイドル状態の PD を完全に削除する remove 操作。例:

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

スナップショットを作成して PD を削除するには、アイドル状態の PD に対する推奨の適用をご覧ください。未使用の IP アドレスを削除するには、アイドル状態の IP の削除をご覧ください。また、未使用のカスタム ディスク イメージを削除するには、アイドル状態のカスタム イメージの削除をご覧ください。

アイドル状態のリソースに対する推奨事項の分析情報を表示する

Recommender がリソースの分析情報に基づいて推奨事項を生成します。リソースに関する分析情報を表示することで、リソースに関する詳細(リソースが VM から切断されていた期間、PD が空かどうかなど)を確認できます。

推奨事項の分析情報を表示するには、gcloud ツールまたは API を使用します。

gcloud

insights list コマンドを使用します。

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

次のように置き換えます。

  • LOCATION: 分析情報を取得するリソースが含まれるロケーション。
    • PD の場合、ゾーンまたはリージョンを指定します(例: us-central1-c)。
    • IP の場合は、リージョンまたは global を指定します。
    • カスタム イメージの場合は、global を指定します。
  • INSIGHT_TYPE: 分析タイプの ID
    • ディスクの場合は、google.compute.disk.IdleResourceInsight を指定します。
    • イメージの場合は、google.compute.image.IdleResourceInsight を指定します。
    • IP の場合は、google.compute.address.IdleResourceInsight を指定します。

API

insights.list メソッドを使用します。

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

次のように置き換えます。

  • PROJECT_ID: オブジェクトの ID。
  • LOCATION: 分析情報を取得するリソースが含まれるロケーション。
    • PD の場合、ゾーンまたはリージョンを指定します(例: us-central1-c)。
    • IP の場合は、リージョンまたは global を指定します。
    • カスタム イメージの場合は、global を指定します。
  • INSIGHT_TYPE: 分析タイプの ID
    • ディスクの場合は、google.compute.disk.IdleResourceInsight を指定します。
    • イメージの場合は、google.compute.image.IdleResourceInsight を指定します。
    • IP の場合は、google.compute.address.IdleResourceInsight を指定します。

アイドル状態の PD リソースに関する分析情報のレスポンスの例を次に示します。

{
  "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: ディスクが VM に最後に接続した時刻。ディスクが VM に接続されていない場合は、ディスクの作成時刻が設定されます。
  • isBlank: ディスクが空で、VM に接続していない場合、このフィールドに true が設定されます。それ以外の場合は false です。

分析情報の詳細については、リファレンス ドキュメントをご覧ください。

アイドル状態のリソースの推奨の適用

アイドル状態のリソースに対する推奨を受け取り、その推奨に従う場合は、以下の手順で行います。

アイドル状態の IP アドレスの削除

addresses.delete メソッドgcloud compute addresses delete コマンド、または静的外部 IP アドレスを解放するのドキュメントをご覧ください。

アイドル状態のカスタム イメージの削除

images.delete メソッドgcloud compute images delete コマンドイメージの削除に関するドキュメントをご覧ください。

アイドル状態の PD に対する推奨の適用

削除する前に PD のスナップショットを作成する必要がある場合は、永続ディスク スナップショットの作成をご覧ください。

アイドル状態の PD を削除するには、gcloud compute disks delete コマンドをご覧ください。

スナップショットからデータを復元し、PD を再作成する方法については、永続ディスク スナップショットの復元をご覧ください。