Como visualizar e aplicar recomendações de DPs inativos

O Compute Engine fornece recomendações para ajudar a identificar discos permanentes (DPs) que não foram anexados a nenhuma instância de máquina virtual (VM, na sigla em inglês) há pelo menos 15 dias. É possível usar as recomendações de disco permanente inativo 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 DP.

O Recomendador gera uma das ações recomendadas a seguir para discos inativos:

  • Excluir: quando um disco está em branco e nunca foi anexado a uma instância de VM. É possível excluir o disco para economizar 100% do custo dele. Consulte os preços de disco.
  • Snapshot: quando os dados são armazenados em um disco inativo. É possível criar um snapshot para armazenar os dados para mais tarde e excluir o disco para reduzir o custo de manutenção desse disco em 35% a 92%. Consulte os preços de disco.

Depois de receber uma recomendação, é possível realizar uma ação para capturar o snapshot ou excluir o disco inativo.

Antes de começar

Preços

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

Geração de recomendações

Se um disco não tiver sido anexado a uma VM por 15 dias, o Recomendador o classificará como inativo.

É necessário atender a uma das condições a seguir para classificar um DP como inativo e gerar a ação recomendada correspondente:

Condição para o DP ser classificado como inativo Ação recomendada
Criado há pelo menos 15 dias atrás E
Nunca foi anexado a uma VM E
Está em branco
Excluir
Removido há pelo menos 15 dias Criar snapshot e excluir

Frequência das recomendações

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

Como visualizar recomendações

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

gcloud

Use o comando gcloud recommender recommendations list com a sinalização --recommender=google.compute.disk.IdleResourceRecommender.

gcloud recommender recommendations list \
    --project=project-id \
    --location=location \
    --recommender=google.compute.disk.IdleResourceRecommender \
    --format=yaml

Substitua o seguinte:

  • project-id: o ID do seu projeto;
  • location: a zona ou região para listar recomendações, por exemplo, us-central1-c.

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 seguinte ID do recomendador google.compute.disk.IdleResourceRecommender:

GET https://recommender.googleapis.com/v1/projects/project-id/locations/location/recommenders/google.compute.disk.IdleResourceRecommender/recommendations

Substitua o seguinte:

  • project-id: o ID do seu projeto;
  • location: a zona ou região para listar recomendações, por exemplo, us-central1-c.

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 um grupo de operações, as quais podem ser executadas em série para aplicar a recomendação. Os grupos de operações de recomendação de DPs inativos incluem 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 ver exemplos de comandos para criar um snapshot e excluir um DP.

Como visualizar insights de recomendações de DPs inativos

O recomendador gera recomendações com base nos insights dos recursos de DP. Ao visualizar insights sobre recursos do DP, é possível saber há quanto tempo um DP foi removido de uma VM e se um DP está em branco.

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=us-central1-c --insight-type=google.compute.disk.IdleResourceInsight

API

Use o método insights.list com google.compute.disk.IdleResourceInsights como o ID do tipo de insight.

GET https://recommender.googleapis.com/v1beta1/projects/project-id/locations/location/insightTypes/google.compute.disk.IdleResourceInsights/insights

Substitua o seguinte:

  • project-id: ID do projeto.
  • location: a zona ou região que contém DPs para listar insights. Por exemplo, us-central1-c.

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 DPs inativos

Se você receber uma recomendação sobre um DP inativo e decidir aplicá-la, siga as instruções abaixo para saber como fazer um snapshot para ter um backup do DP, excluir o DP inativo e, opcionalmente, recuperar o DP com base no snapshot.

Como tirar um snapshot de um DP inativo

gcloud

Para criar um snapshot de um disco permanente zonal no local de armazenamento padrão, use o comando gcloud compute disks snapshot:

gcloud compute disks snapshot disk-name

Substitua o seguinte:

  • disk-name: o nome do disco permanente zonal de que você quer criar o snapshot.

API

Para criar um snapshot de um disco permanente zonal no local de armazenamento padrão, faça uma solicitação POST para o método disks.createSnapshot:

POST https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/disks/disk-name/createSnapshot

Substitua o seguinte:

  • project-id: o ID do projeto;
  • zone: a zona em que a instância e o disco estão localizados;
  • disk-name: o nome do disco permanente zonal de que você quer criar um snapshot.

Para um guia sobre como criar um snapshot de um DP regional ou em um local de armazenamento personalizado, consulte Como criar snapshots de discos permanentes.

Como excluir um DP inativo

gcloud

Para excluir um disco inativo, use o comando gcloud compute disks delete:

gcloud compute disks delete disk-name \
[--zone=zone | --region=region]

Substitua o seguinte:

  • disk-name: o nome do disco permanente zonal que você quer excluir;
  • zone: a zona em que o disco está localizado;
  • region: região em que o disco está.

API

Para excluir um disco inativo, faça uma solicitação DELETE para o método disks.delete:

DELETE https://compute.googleapis.com/compute/v1/projects/project-id/zones/zone/disks/disk-name

Substitua o seguinte:

  • project-id: o ID do projeto;
  • zone: a zona em que o disco está localizado;
  • disk-name: o nome do disco permanente zonal que você quer excluir.

Para DPs regionais, substitua zones/zone por regions/region.

Como recuperar o DP com base em um snapshot

Para informações sobre como recuperar dados com base em um snapshot e recriar o DP, consulte Como restaurar snapshots de discos permanentes.