Como visualizar e aplicar recomendações de recursos inativos

O Compute Engine fornece recomendações para ajudar você a identificar recursos como discos permanentes (DPs), endereços IP e imagens de disco personalizadas que não são usadas. É possível usar recomendações de recursos inativos para ajudar a minimizar o desperdício de recursos e reduzir sua fatura de computação. Para DPs que não são usados ativamente, crie um snapshot de backup e exclua o recurso. Para DPs, imagens e endereços IP não utilizados, é possível excluí-los se você não precisa deles.

Se você tiver interesse em recomendações de VM inativas, consulte Como visualizar e aplicar recomendações de VM inativas.

Antes de começar

Preços

As recomendações de DPs inativos estão disponíveis gratuitamente.

Geração de recomendações

Se um recurso não tiver sido anexado a uma VM ou outro recurso há 15 dias, o Recomendador o classifica como inativo.

Uma das condições a seguir precisa ser atendida para classificar um recurso como inativo e gerar a ação recomendada correspondente:

Recurso Condição para um recurso ser classificado como inativo Ação recomendada Economia
DP Criado há pelo menos 15 dias atrás E
Nunca foi anexado a uma VM E
Está em branco
Excluir Economize 100% do custo desse disco (consulte os preços de disco)
DP Removido há pelo menos 15 dias Criar snapshot e excluir Reduz o custo de manutenção desse disco em 35% para 92% (consulte os preços de disco)
Imagem personalizada Não usado para criar um disco por pelo menos 15 dias E não usado em qualquer modelo de instância Excluir Economize 100% do custo dessa imagem (consulte os preços da imagem)
Endereço IP Não anexado a nenhum recurso há pelo menos 15 dias Excluir Economize 100% do custo desse endereço IP (consulte Preços de IP)

Frequência das recomendações

As recomendações de recursos inativos começam 15 dias após a criação do recurso e são atualizadas uma vez a cada 24 horas.

Como visualizar recomendações

Para visualizar recomendações sobre recursos inativos, use a ferramenta gcloud ou a API.

Console

No Console do Google Cloud, acesse a página Recomendações.

Ir para "Recomendações"

Todos os recursos inativos estão listados em Recursos do Compute Engine não utilizados.

gcloud

Use o comando gcloud recommender recommendations list com a sinalização RECOMMENDER_ID --recommender=:

gcloud recommender recommendations list \
    --project=PROJECT_ID \
    --location=LOCATION \
    --recommender=RECOMMENDER_ID \
    --format=yaml

Substitua:

  • PROJECT_ID: ID do projeto.
  • LOCATION: o local que contém os recursos para os quais você quer recomendações.
    • Para DPs, especifique uma zona ou região, por exemplo, us-central1-c.
    • Para IPs:
      • Para listar IPs regionais, especifique uma região.
      • Para listar IPs globais, especifique global. Para mais informações sobre recursos de endereços IP regionais e globais, consulte Endereços IP.
    • Para imagens personalizadas, especifique global.
  • RECOMMENDER_ID: o ID do recomendador
    • Para discos, especifique google.compute.disk.IdleResourceRecommender.
    • Para imagens, especifique google.compute.image.IdleResourceRecommender.
    • Para IPs, especifique google.compute.address.IdleResourceRecommender.

Por exemplo, o comando a seguir lista recomendações de DPs inativos em us-central1-c para my-project:

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


---
content:
    operationGroups:
    - operations:
      - action: add
        resource: //compute.googleapis.com/projects/test-project/global/snapshots/$snapshot-name
        resourceType: compute.googleapis.com/Disk
        path: /
        value:
        - name: $snapshot-name
          sourceDisk: projects/test-project/locations/us-central1-c/disks/pd-name
          storageLocations: us-central1
      - action: remove
        resource: //compute.googleapis.com/projects/test-project/zones/us-central1-c/disks/pd-name
        resourceType: compute.googleapis.com/Disk
        path: /
description: Save cost by snapshotting and then deleting idle persistent disk 'pd-name'
name: projects/test-project/locations/us-central1-c/recommenders/google.compute.disk.IdleResourceRecommender/recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1
recommenderSubtype: SNAPSHOT_AND_DELETE_DISK
lastRefreshTime:
  seconds: 1543912652
primaryImpact:
  category: COST
  costProjection:
    cost:
      currencyCode: USD
      units: '-50'
    duration:
      seconds: 2592000
stateInfo: ACTIVE
etag: "cb0e6ac2cfc0b591"

Saiba mais sobre como usar a ferramenta gcloud para trabalhar com recomendações.

API

Chame o método recommendations.list e especifique o ID do recomendador. Por exemplo, google.compute.disk.IdleResourceRecommender:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/recommenders/RECOMMENDER_ID/recommendations

Substitua:

  • PROJECT_ID: ID do projeto.
  • LOCATION: o local que contém os recursos para os quais você quer recomendações.
    • Para DPs, especifique uma zona ou região, por exemplo, us-central1-c.
    • Para IPs:
      • Para listar IPs regionais, especifique uma região.
      • Para listar IPs globais, especifique global. Para mais informações sobre recursos de endereços IP regionais e globais, consulte Endereços IP.
    • Para imagens personalizadas, especifique global.
  • RECOMMENDER_ID: o ID do recomendador
    • Para discos, especifique google.compute.disk.IdleResourceRecommender.
    • Para imagens, especifique google.compute.image.IdleResourceRecommender.
    • Para IPs, especifique google.compute.address.IdleResourceRecommender.

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 oauth2l do Google para conseguir um token de acesso do OAuth 2.0 e, em seguida, faz uma solicitação curl usando o token.

PROJECT_ID=test-project
LOCATION=us-central1-c
RECOMMENDER=google.compute.disk.IdleResourceRecommender
OAUTH_JSON=~/service-account.json
OAUTH_HEADER="$(oauth2l header --json $OAUTH_JSON cloud-platform)"

curl -H "$OAUTH_HEADER" https://recommender.googleapis.com/v1/projects/$PROJECT_ID/locations/$LOCATION/recommenders/google.compute.disk.IdleResourceRecommender/recommendations

Exemplo de resposta JSON para uma recomendação de DP inativo:

{
 "description" : "Save cost by deleting idle persistent disk 'pd-name'",
 "name": "projects/test-project/locations/us-central1-c/recommenders/"
         "google.compute.disk.IdleResourceRecommender/"
         "recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1",
 "recommenderSubtype" : "SNAPSHOT_AND_DELETE_DISK",
 "lastRefreshTime": {
   "seconds": 1543912652
 },
 "primaryImpact": {
   "category": COST,
   "costProjection": {
    "cost": {"currencyCode": "USD", "units": -50},
    "duration": { "seconds": 2592000 }
   }
 },
 "stateInfo": ACTIVE,
 "content": {
   "operationGroups" : [
    {
      "operations" : [
       {
         "action": "add",
         "resourceType": "compute.googleapis.com/Disk",
         "resource" : "//compute.googleapis.com/projects/test-project/global/snapshots/$snapshot-name",
         "value": {
           "name": "$snapshot-name",
           "sourceDisk": "projects/test-project/zones/us-central1-c/disks/pd-name",
           "storageLocations": ["us-central1"],
         }
       },
       {
         "action": "remove",
         "resourceType": "compute.googleapis/Disk",
         "resource": "//compute.googleapis.com/projects/test-project/"
                     "zones/us-central1-c/disks/pd-name"
       }
      ]
    }
   ]
 },
 "associatedInsights": [
    {
      "insight": "projects/test-project/locations/us-central1-c/insightTypes/google.compute.disk.IdleResourceInsight/insights/31326443-bcc3-4776-9b86-48879fddb656"
    }
  ],
 "etag": "cb0e6ac2cfc0b591"
}

Como interpretar a resposta da recomendação

Cada recomendação recebida por meio da ferramenta gcloud ou da API contém grupos de operações, com operações que podem ser executadas em série para aplicar a recomendação. Por exemplo, os grupos de operações de recomendação de DPs inativos incluem uma ou duas operações:

  • Se o DP inativo tiver dados, a recomendação incluirá uma operação add para criar um snapshot e fazer backup do DP. Exemplo:

       {
         "action": "add",
         "resourceType": "compute.googleapis.com/Disk",
         "resource" : "//compute.googleapis.com/projects/test-project/global/snapshots/$snapshot-name",
         "path": "/",
         "value": {
           "name": "$snapshot-name",
           "sourceDisk": "projects/test-project/zones/us-central1-c/disks/pd-name",
           "storageLocations": ["us-central1"]
         }
       }
    
  • Uma operação remove para excluir permanentemente o DP inativo. Exemplo:

       {
         "action": "remove",
         "resourceType": "compute.googleapis.com/Disk",
         "resource" : "//compute.googleapis.com/projects/test-project/zones/us-central1-c/disks/pd-name",
         "path": "/"
       }
    

Consulte Como aplicar recomendações de DPs inativos para criar um snapshot de e excluir um DP, excluir IPs inativos para remover endereços IP não utilizados e excluir imagens personalizadas inativas para remover imagens de disco personalizadas não usadas.

Como visualizar insights para recomendações de recursos inativos

O recomendador gera recomendações com base nos insights dos recursos de DP. Ao ver insights sobre recursos, é possível saber mais sobre eles, como por quanto tempo um recurso é desanexado de uma VM ou se um DP está vazio.

Se você quiser visualizar o insight que gerou a recomendação, use a API ou ferramenta gcloud.

gcloud

Use o comando insights list.

gcloud beta recommender insights list --project=PROJECT_NAME \
  --location=LOCATION --insight-type=INSIGHT_TYPE

Substitua:

  • LOCATION: o local dos recursos de que você quer insights.
    • Para DPs, especifique uma zona ou região, por exemplo, us-central1-c.
    • Para IPs:
      • Para listar IPs regionais, especifique uma região.
      • Para listar IPs globais, especifique global. Para mais informações sobre recursos de endereços IP regionais e globais, consulte Endereços IP.
    • Para imagens personalizadas, especifique global.
  • INSIGHT_TYPE: o código do tipo de insight
    • Para discos, especifique google.compute.disk.IdleResourceInsight.
    • Para imagens, especifique google.compute.image.IdleResourceInsight.
    • Para IPs, especifique google.compute.address.IdleResourceInsight.

API

Use o método insights.list.

GET https://recommender.googleapis.com/v1beta1/projects/PROJECT_ID/locations/LOCATION/insightTypes/INSIGHT_TYPE/insights

Substitua:

  • PROJECT_ID: ID do projeto.
  • LOCATION: o local dos recursos de que você quer insights.
    • Para DPs, especifique uma zona ou região, por exemplo, us-central1-c.
    • Para IPs:
      • Para listar IPs regionais, especifique uma região.
      • Para listar IPs globais, especifique global. Para mais informações sobre recursos de endereços IP regionais e globais, consulte Endereços IP.
    • Para imagens personalizadas, especifique global.
  • INSIGHT_TYPE: o código do tipo de insight
    • Para discos, especifique google.compute.disk.IdleResourceInsight.
    • Para imagens, especifique google.compute.image.IdleResourceInsight.
    • Para IPs, especifique google.compute.address.IdleResourceInsight.

Veja um exemplo de resposta de um insight sobre um recurso de DP inativo:

{
  "name": "projects/test-project/locations/us-central1-c/insightTypes/google.compute.disk.IdleResourceInsight/insights/0ec21a13-bb04-3121-7321-dc43a11cc3e2",
  "description": "Disk 'pd-name' in zone 'us-central1-c' was last used 17 days ago. Consider taking snapshot and delete it.",
  "targetResources": [
    "//compute.googleapis.com/projects/test-project/zones/us-central1-c/disks/pd-name"
  ],
  "insightSubtype": "IDLE_DISK",
  "content": {
    "diskLastUseTime": "2019-10-01 13:00:00",
    "isBlank": false,
  },
  "lastRefreshTime": "2019-10-10 13:00:00",
  "observationPeriod": "15 days",
  "stateInfo": {
    "state": "ACTIVE"
  },
  "category": "COST",
  "etag": "fds421j2349",
  "associatedRecommendations": [
    {
      "projects/test-project/locations/us-central1-c/recommenders/"
      "google.compute.disk.IdleResourceRecommender/"
      "recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1"
    }
  ]
}

A resposta inclui os campos a seguir:

  • diskLastUseTime: a última vez em que o disco foi anexado a uma VM. Se o disco nunca tiver sido anexado a uma VM, isso será definido como a data/hora de criação do disco.
  • isBlank: este campo é definido como true se o disco estiver em branco e nunca tiver sido anexado à VM. Caso contrário, será false.

Para mais informações sobre insights, consulte os documentos de referência.

Como aplicar recomendações de recursos inativos

Se você receber uma recomendação sobre um recurso inativo e decidir que quer segui-la, siga as instruções abaixo.

Como excluir endereços IP inativos

Consulte o método addresses.delete, comando gcloud compute addresses delete ou a documentação sobre como liberar um endereço IP externo estático.

Como excluir imagens personalizadas ociosas

Consulte o método images.delete, o comando gcloud compute images delete ou a documentação Como excluir uma imagem.

Como aplicar recomendações de DPs inativos

Se você precisar criar um snapshot de um DP antes de excluí-lo, consulte Como criar snapshots de disco permanente.

Para excluir um DP inativo, consulte o comando gcloud compute disks delete.

Para informações sobre como recuperar dados a partir de um snapshot e recriar o DP, consulte Como restaurar snapshots.