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

Compute Engine では、使用されていない仮想マシン(VM)インスタンスを識別できるように、アイドル状態の VM に対する推奨が表示されます。この推奨は Cloud Monitoring サービスが過去 14 日間に集めたシステム指標に基づいて自動的に生成されます。アイドル状態の VM の推奨を使用して、アイドル状態の VM インスタンスを見つけて停止することで、リソースの無駄を減らし、コンピューティング料金を削減できます。

始める前に

料金

アイドル状態の VM の推奨は無料で利用できます。

制限事項

スタンドアロン VM では、次の場合にアイドル状態の推奨を使用できません。

  • ローカル SSD を使用するインスタンス
  • GPU / TPU を使用するインスタンス
  • App Engine フレキシブル リソース
  • Dataflow リソース
  • Google Kubernetes Engine のリソース

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

アイドル状態の VM に関する推奨を表示するには、gcloud ツールまたは API を使用します。

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 の例をご覧ください。

API

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: 推奨を一覧表示するインスタンスを含むゾーン

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

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

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

curl -H "$OAUTH_HEADER" -H "x-goog-user-project: $PROJECT_ID" https://recommender.googleapis.com/v1/projects/$PROJECT_ID/locations/$ZONE/recommenders/$RECOMMENDER/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 ツールまたは API を介して受信する各推奨には、推奨を適用するために連続して実行できるオペレーション グループが含まれています。アイドル状態の 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 Consolegcloud ツール、または API を使用して、インスタンスを停止し、必要に応じて削除します。

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

Console

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

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

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

gcloud

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

gcloud compute instances stop VM_NAME --zone=ZONE

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

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

API

API で 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 インスタンスとそのディスクを削除しても問題がない場合は、インスタンスを削除できます。

アイドル状態の VM インスタンスの検出方法

Compute Engine は、過去 14 日間の使用状況の指標に基づいて VM インスタンスに関する推奨を生成します(新しい VM の場合は、VM の作成から 5 日以降の使用状況の指標)。モニタリング期間中に CPU とネットワークの使用率が低い場合は、VM がアイドル状態として分類されます。

VM をアイドル状態として分類するには、次のすべての条件を満たす必要があります。

  • CPU 使用率が、97% の VM ランタイムで 0.03 vCPU 未満。
  • 受信したネットワーク トラフィックが、95% の VM ランタイムで 2,600 バイト/秒(B/s)未満。
  • 送信されたネットワーク トラフィックが、95% の VM ランタイムで 1,000 B/s 未満。

推奨の頻度

アイドル状態の VM の推奨が最初に生成されるのは、VM が作成されて 5 日間実行された後です。その後は、推奨が少なくとも 1 日に 1 回更新されます。

マシンタイプの推奨サイズとの関係

マシンタイプの推奨サイズでは、VM に最適なサイズが推奨されます。アイドル状態の VM をダウンサイズするための、マシンタイプに関する推奨が表示されることがあります。

使用率が低くてもアイドル状態の VM を実行し続ける必要がある場合は、マシンタイプの推奨を使用すると、使用率の低い VM に適したサイズを選択できます。

次のステップ