アイドル状態の VM の推奨事項を表示して適用する


このページでは、アイドル状態の VM に関する推奨事項を使用して、アイドル状態の VM インスタンスを特定して停止することでリソースの無駄を減らし、プロジェクトのコンピューティング料金を削減する方法について説明します。

始める前に

  • 制限事項を参照して、VM がアイドル状態の VM の推奨事項をサポートしているかどうかを確認します。
  • まだ設定していない場合は、認証を設定します。認証とは、Google Cloud サービスと API にアクセスするために ID を確認するプロセスです。ローカル開発環境からコードまたはサンプルを実行するには、次のように Compute Engine に対する認証を行います。

    このページのサンプルをどのように使うかに応じて、タブを選択してください。

    コンソール

    Google Cloud コンソールを使用して Google Cloud サービスと API にアクセスする場合、認証を設定する必要はありません。

    gcloud

    1. Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init
    2. デフォルトのリージョンとゾーンを設定します

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Google Cloud CLI をインストールし、次のコマンドを実行して初期化します。

      gcloud init

料金

アイドル状態の VM の推奨事項は無料で利用できます。推奨事項を使用してリソース使用量を減らすと、費用を節約できます。

アイドル状態の VM インスタンスに関する推奨の表示

アイドル状態の VM に関する推奨事項を表示するには、gcloud CLI または REST を使用します。

gcloud

--recommender=google.compute.instance.IdleResourceRecommendergcloud recommender recommendations list コマンドを使用します。

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

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

  • PROJECT_ID: オブジェクトの ID
  • ZONE: 推奨を一覧表示するインスタンスを含むゾーン

例:

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

そのロケーションにアイドル状態の VM がない場合、レスポンスは空になります。それ以外の場合、レスポンスには推奨ごとに次のフィールドが含まれます。


---
content:
...
operationGroups:
- operations:
  - action: test
    path: /status
    resource: //compute.googleapis.com/projects/my-project/zones/us-central1-c/instances/vm-name
    resourceType: compute.googleapis.com/Instance
    value: RUNNING
  - action: replace
    path: /status
    resource: //compute.googleapis.com/projects/my-project/zones/us-central1-c/instances/vm-name
    resourceType: compute.googleapis.com/Instance
    value: TERMINATED
description: Save cost by stopping Idle VM 'vm-name'.
etag: '"83da314c23f634e1"'
lastRefreshTime: '2020-02-24T07:56:40Z'
name: projects/141732092341/locations/us-central1-c/recommenders/google.compute.instance.IdleResourceRecommender/recommendations/0e061a3a-f921-4216-b1b4-62e16942cd1a
primaryImpact:
category: COST
costProjection:
  cost:
    currencyCode: USD
    nanos: -91533961
    units: '-262'
  duration: 2592000s
recommenderSubtype: STOP_VM
stateInfo:
state: ACTIVE

gcloud を使用した推奨の詳細については、gcloud の例をご覧ください。

REST

recommendations.list メソッドを呼び出し、次の推奨タイプを使用します。

  • google.compute.instance.IdleResourceRecommender

API 呼び出しは次のようになります。

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/recommenders/google.compute.instance.IdleResourceRecommender/recommendations

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

  • PROJECT_ID: オブジェクトの ID。
  • ZONE: 推奨を一覧表示するインスタンスを含むゾーン。

次の例は、curl を使用してリクエストを送信する方法と、関連するサンプル レスポンスを示しています。

PROJECT_ID=my-project
ZONE=us-central1-c
RECOMMENDER_ID=google.compute.instance.IdleResourceRecommender

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

アイドル状態の VM の推奨に対する JSON レスポンスの例:

{
"description" : "Save cost by stopping Idle VM `vm-name`",
"name": "projects/1574864402/locations/us-central1-c/recommenders/"
        "google.compute.instance.IdleResourceRecommender/"
        "recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1",
"lastRefreshTime": {
  "seconds": 1543912652
},
"primaryImpact": {
  "category": COST,
  "costProjection": {
    "cost": {"currencyCode": "USD", "units": -50},
    "duration": { "seconds": 2592000 }
  }
},
"stateInfo": ACTIVE,
"content":
  "groups" : [
    {
      "operations" : [
      {
        "action": "test",
        "resourceType": "compute.googleapis.com/Instance",
        "resource": "//compute.googleapis.com/projects/my-project/"
                    "zones/us-central1-c/instances/vm-name",
        "path": "/status",
        "value": "RUNNING"
      },
      {
        "action": "replace",
        "resourceType": "compute.googleapis.com/Instance",
        "resource": "//compute.googleapis.com/projects/my-project/"
                    "zones/us-central1-c/instances/vm-name",
        "path": "/status",
        "value": "TERMINATED"
      }
      ]
    }
  ]
},
"etag" : "cb0e6ac2cfc0b591"
}

各フィールドの詳細については、Recommender API のドキュメントをご覧ください。

推奨のレスポンスの解釈

gcloud CLI または REST を介して受信する各推奨には、推奨を適用するために連続して実行できるオペレーション グループが含まれています。アイドル状態の VM の推奨のオペレーション グループには、次の 2 つのオペレーションが含まれます。

  1. VM の現在の status を検証するテスト オペレーション。例:

     {
       "action": "test",
       "resourceType": "compute.googleapis.com/Instance",
       "resource" : "//compute.googleapis.com/projects/my-project/zones/us-central1-c/instances/vm-name",
       "path": "/status",
       "value": "RUNNING"
     }
    
  2. VM の status を変更する置換オペレーション。例:

     {
       "action": "replace",
       "resourceType": "compute.googleapis.com/Instance",
       "resource" : "//compute.googleapis.com/projects/my-project/zones/us-central1-c/instances/vm-name",
       "path": "/status",
       "value": "TERMINATED"
     }
    

最初のオペレーションは test です。つまり、resource がまだ RUNNING であることをテストする必要があります。これを行うには、VM の状態を確認します。

2 番目のオペレーションである replace は、リソースの status を新しい値 TERMINATED に置き換えることを意味します。これを行うには、VM を停止します。これについては以下で説明します。

アイドル状態の VM の推奨の適用

アイドル状態の VM の推奨を受け取り、インスタンスが不要になった場合は、Google Cloud コンソールgcloud CLI、または REST を使用して、インスタンスを停止し、必要に応じて削除します。

インスタンスとそのディスクを停止しても削除しない場合は、そのディスクの料金が引き続き発生します。

コンソール

  1. Google Cloud コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] ページに移動

  2. 停止するインスタンスを選択します。
  3. [停止] をクリックします。

gcloud

instances stop コマンドを使用して、停止する VM_NAME を指定します。

gcloud compute instances stop VM_NAME --zone=ZONE

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

  • VM_NAME: 停止する VM インスタンスの名前
  • ZONE: 停止するインスタンスを含むゾーン

REST

インスタンスを停止する POST リクエストを作成します。

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop

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

  • PROJECT_ID: オブジェクトの ID
  • ZONE: 停止するインスタンスを含むゾーン
  • VM_NAME: 停止する VM インスタンスの名前

VM インスタンスとそのディスクを削除しても問題がない場合は、インスタンスを削除できます。

次のステップ