Como visualizar e aplicar recomendações de VM inativas

O Compute Engine fornece recomendações de VM inativa para ajudar você a identificar instâncias de máquina virtual (VM) que não foram usadas. Essas recomendações são geradas automaticamente com base nas métricas do sistema coletadas nos 14 dias anteriores pelo serviço do Cloud Monitoring. Use as recomendações de VM inativa para encontrar e interromper instâncias de VM que não estão em uso a fim de minimizar o desperdício de recursos e reduzir sua conta de computação.

Antes de começar

Preços

As recomendações de VM inativas estão disponíveis gratuitamente.

Limitações

Para VMs independentes, as recomendações de inatividade não estão disponíveis nos seguintes casos:

  • Instâncias com SSDs locais
  • Instâncias com GPU/TPUs
  • Recursos flexíveis do App Engine
  • Recursos do Dataflow
  • Recursos do Google Kubernetes Engine

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

Para visualizar recomendações sobre VMs inativas, use a ferramenta gcloud ou a API.

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.

API

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: zona que contém as instâncias para listar as recomendações

Se você ainda não se familiarizou com os pré-requisitos de autenticação para chamar APIs do Google Cloud, consulte a Visão geral da autenticação.

O exemplo de script bash a seguir usa a autenticação de usuário final com uma credencial de cliente do OAuth. O script usa a ferramenta de linha de comando Google oauth2l para conseguir um token de acesso do OAuth 2.0 e, em seguida, cria uma solicitação curl usando o token.

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

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 ferramenta gcloud ou da API 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 ferramenta gcloud ou a API para interromper e, como alternativa, 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 VM.

    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

API

Na API, 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.

Como funciona a detecção de instâncias de VM inativas

O Compute Engine gera recomendações sobre instâncias de VM inativas com base em métricas de uso dos últimos 14 dias ou, para novas VMs, a partir de cinco dias desde a criação da VM. Se a CPU e o uso da rede tiverem sido baixos durante o período observado, o recomendador classificará a VM como inativa.

Para classificar uma VM como inativa, todas as condições a seguir precisam ser atendidas:

  • A utilização da CPU é inferior a 0,03 vCPUs durante 97% do ambiente de execução da VM.
  • O tráfego de rede recebido é inferior a 2.000 bytes por segundo (B/s) durante 95% do tempo de execução da VM.
  • O tráfego de rede enviado é inferior a 1.000 B/s durante 95% do tempo de execução da VM.

Frequência das recomendações

As recomendações de VM inativa são geradas inicialmente após uma VM ser criada e executada por cinco dias. Posteriormente, as recomendações serão atualizadas pelo menos uma vez por dia.

Relação com recomendações de tipo de máquina

Recomendações do tipo de máquina sugerem o tamanho ideal para uma VM. Você pode receber uma recomendação de tipo de máquina para reduzir uma VM inativa.

Se você precisar manter em execução uma VM inativa, mesmo com a baixa utilização, use as recomendações de tipo de máquina para escolher o tamanho ideal para VMs subutilizadas.

A seguir