Ver e aplicar recomendações de VM inativas


Nesta página, descrevemos como usar recomendações de VMs inativas para identificar e interromper instâncias de VM inativas para minimizar o desperdício de recursos e reduzir sua conta de computação nos projetos.

Antes de começar

  • Analise as limitações para verificar se a VM é compatível com recomendações de VMs inativas.
  • Configure a autenticação, caso ainda não tenha feito isso. A autenticação é o processo de verificação da sua identidade para acesso a serviços e APIs do Google Cloud. Para executar códigos ou amostras de um ambiente de desenvolvimento local, autentique-se no Compute Engine da seguinte maneira.

    Selecione a guia para como planeja usar as amostras nesta página:

    Console

    Quando você usa o console do Google Cloud para acessar os serviços e as APIs do Google Cloud, não é necessário configurar a autenticação.

    gcloud

    1. Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init
    2. Defina uma região e uma zona padrão.

    REST

    Para usar as amostras da API REST nesta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.

      Instale a Google Cloud CLI e inicialize-a executando o seguinte comando:

      gcloud init

Preços

As recomendações de VM inativas estão disponíveis gratuitamente. Usar recomendações para reduzir o uso de recursos pode resultar em economia de custos.

Como visualizar recomendações de instância de VM inativa

Para visualizar recomendações sobre VMs inativas, use a CLI gcloud ou o REST.

gcloud

Use o comando gcloud recommender recommendations list com --recommender=google.compute.instance.IdleResourceRecommender:

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

Substitua:

  • PROJECT_ID: ID do projeto
  • ZONE: zona que contém as instâncias para listar as recomendações

Exemplo:

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

Se não houver VMs inativas no local, a resposta será vazia. Caso contrário, a resposta incluirá os seguintes campos para cada recomendação:


---
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

Saiba mais sobre como trabalhar com recomendações usando o gcloud em exemplos do gcloud.

REST

Chame o método recommendations.list e use o seguinte tipo de recomendação:

  • google.compute.instance.IdleResourceRecommender

A chamada da API tem esta aparência:

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

Substitua:

  • PROJECT_ID: ID do projeto.
  • ZONE: a zona que contém as instâncias que receberão a lista de recomendações.

O exemplo a seguir mostra o envio de uma solicitação com curl e a amostra de resposta associada.

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

Exemplo de resposta JSON para uma recomendação de VM inativa:

{
"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"
}

Encontre mais detalhes sobre cada campo na documentação da API Recommender.

Como interpretar a resposta da recomendação

Cada recomendação recebida por meio da CLI gcloud ou da REST contém um grupo de operações, com operações que podem ser executadas em série para aplicar a recomendação. Os grupos de operações de recomendação de VM inativa incluem duas operações:

  1. Uma operação de teste para verificar o status atual da VM. Exemplo:

     {
       "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. Uma operação de substituição para alterar o status da VM. Exemplo:

     {
       "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"
     }
    

A primeira operação é um test, o que significa que você precisa testar se o resource ainda é RUNNING. Para fazer isso, verifique o estado da VM.

A segunda operação, replace, significa que você precisa substituir o status do recurso por um novo valor, TERMINATED. Para fazer isso, interrompa a VM, que é descrita abaixo.

Como aplicar recomendações de VM inativas

Depois de receber uma recomendação de VM inativa e decidir que não precisa mais da instância, use o console do Google Cloud, a CLI gcloud ou a REST para interromper e, opcionalmente, excluir a instância.

Se você interromper, mas não excluir uma instância e os discos dela, ainda pagará pelos discos.

Console

  1. No console do Google Cloud, acesse a página Instâncias de VMs.

    Acessar a página "Instâncias de VMs"

  2. Selecione a instância que você quer interromper.
  3. Clique em Interromper.

gcloud

Use o comando instances stop e especifique o VM_NAME que você quer interromper.

gcloud compute instances stop VM_NAME --zone=ZONE

Substitua:

  • VM_NAME: o nome da instância de VM que você quer parar
  • ZONE: a zona que contém a instância que você quer parar

REST

Crie uma solicitação POST para interromper uma instância.

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

Substitua:

  • PROJECT_ID: ID do projeto
  • ZONE: a zona que contém a instância que você quer parar
  • VM_NAME: o nome da instância de VM que você quer parar

Se você tiver certeza de que a instância da VM e os discos dela podem ser removidos, exclua a instância.

A seguir