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 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. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

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

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

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

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