Veja e aplique recomendações de VMs inativas

Esta página descreve como pode usar as recomendações de VMs inativas para identificar e parar instâncias de VMs inativas para reduzir o desperdício de recursos e reduzir a fatura de computação nos seus projetos.

Antes de começar

  • Reveja as limitações para verificar se a sua VM suporta recomendações de VMs inativas.
  • Se ainda não o tiver feito, configure a autenticação. A autenticação valida a sua identidade para aceder a Google Cloud serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:

    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. Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    2. Set a default region and zone.

    REST

    Para usar os exemplos da API REST nesta página num ambiente de desenvolvimento local, usa as credenciais que fornece à CLI gcloud.

      Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:

      gcloud init

      Se estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.

    Para mais informações, consulte o artigo Autenticar para usar REST na Google Cloud documentação de autenticação.

Preços

As recomendações de VMs inativas estão disponíveis sem custo financeiro. A utilização de recomendações para reduzir a utilização de recursos pode resultar em poupanças de custos.

Ver recomendações de instâncias de VM inativas

Para ver recomendações sobre VMs inativas, use a CLI gcloud ou a API 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 o seguinte:

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

Por exemplo:

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

Se não existirem VMs inativas na localização, a resposta está vazia. Caso contrário, a resposta inclui 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 como trabalhar com recomendações através do 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 API tem o seguinte aspeto:

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

Substitua o seguinte:

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

O exemplo seguinte mostra como enviar um pedido com curl e a resposta de exemplo 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"
}

Pode encontrar mais detalhes acerca de cada campo na documentação da API Recommender.

Interpretar a resposta da recomendação

Cada recomendação que recebe através da CLI gcloud ou da API REST contém um grupo de operações, com operações que pode realizar em série para aplicar a recomendação. Os grupos de operações de recomendações de VMs inativas incluem duas operações:

  1. Uma operação de teste para validar o estado atual status da VM. Por 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. Por 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 deve testar se o resource continua a ser RUNNING. Pode fazê-lo verificando o estado da VM.

A segunda operação, replace, significa que deve substituir o valor status do recurso por um novo valor, TERMINATED. Pode fazê-lo parando a VM, conforme descrito abaixo.

Aplicar recomendações de VMs inativas

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

Se parar, mas não eliminar uma instância e os respetivos discos, continua a pagar pelos discos.

Consola

  1. Na Google Cloud consola, aceda à página Instâncias de VM.

    Aceda à página de instâncias de VM

  2. Selecione a instância que quer parar.
  3. Clique em Parar para parar a VM. Se não existir a opção Parar, clique em Mais ações > Parar.

gcloud

Use o comando instances stop e especifique o VM_NAME que quer parar.

gcloud compute instances stop VM_NAME --zone=ZONE

Substitua o seguinte:

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

REST

Construa um pedido POST para parar uma instância.

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

Substitua o seguinte:

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

Se tiver a certeza de que a instância de VM e os respetivos discos podem ser removidos, pode eliminar a instância.

O que se segue?