Ver e aplicar recomendações de VM ociosa


Esta página descreve como você pode usar recomendações de VM ociosa para identificar e interromper instâncias de VM ociosas para reduzir o desperdício de recursos e reduzir a conta de computação em seus projetos.

Antes de começar

  • Revise as limitações para verificar se sua VM oferece suporte a recomendações de VM ociosa.
  • Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    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.

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      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 ociosa 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âncias de VM inativas

Para visualizar recomendações sobre VMs ociosas, use a CLI gcloud ou 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 houver VMs ociosas no local, a resposta estará 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 gcloud em exemplos de gcloud .

DESCANSAR

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

  • google.compute.instance.IdleResourceRecommender

A chamada da API se parece com:

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 as quais listar recomendações.

O exemplo a seguir mostra como enviar uma solicitação com curl e o exemplo de resposta associado.

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

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

Você pode encontrar mais detalhes sobre cada campo na documentação da API do recomendador .

Interpretando a resposta da recomendação

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

  1. Uma operação de teste para verificar o status atual 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 você deve testar se o resource ainda está RUNNING . Você pode fazer isso verificando o estado da VM .

A segunda operação, replace , significa que você deve substituir o status do recurso por um novo valor, TERMINATED . Você pode fazer isso parando a VM, conforme descrito abaixo.

Aplicando recomendações de VM ociosa

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 REST para interromper e, opcionalmente, excluir a instância.

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

Console

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

    Acesse a página de instâncias de VM

  2. Selecione a instância que você deseja interromper.
  3. Clique em Parar .

gcloud

Use o comando instances stop e especifique a VM_NAME que você deseja parar.

gcloud compute instances stop VM_NAME --zone=ZONE

Substitua o seguinte:

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

DESCANSAR

Construa 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 o seguinte:

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

Se tiver certeza de que a instância de VM e seus discos podem ser removidos, você poderá excluir a instância .

O que vem a seguir