Recomendador de dimensionamento de instância de VM

O recomendador de dimensionamento de instâncias de VM ajuda a otimizar a utilização de recursos das instâncias de máquinas virtuais do Compute Engine. Essas recomendações são geradas automaticamente com base nas métricas do sistema ou nas métricas coletadas pelo serviço Cloud Monitoring nos últimos oito dias. Use essas recomendações para redimensionar os tipos de máquina de instância e utilizar as funcionalidades com mais eficiência.

As recomendações de dimensionamento também são conhecidas como recomendações de redimensionamento.

Consulte Como aplicar recomendações de dimensionamento para instâncias de VM para mais informações.

ID do recomendador

O ID do recomendador de dimensionamento da instância de VM é:

google.compute.instance.MachineTypeRecommender

Use esse ID ao visualizar e modificar recomendações usando os comandos gcloud ou as APIs REST e RPC.

Location

Os comandos gcloud e as APIs do Recomendador exigem que você especifique um local para as recomendações exibidas ou modificadas. Para recomendações de dimensionamento de instância de VM, use a zona do Compute Engine como o local em gcloud e interações de API.

Permissões

Permissões necessárias

Para ver as recomendações de dimensionamento de instâncias de VM:

  • recommender.computeInstanceMachineTypeRecommendations.get
  • recommender.computeInstanceMachineTypeRecommendations.list

Para modificar o estado das recomendações de dimensionamento de instâncias de VM:

  • recommender.computeInstanceMachineTypeRecommendations.update

Como conceder permissões

Para conceder essas permissões, atribua papéis da seguinte maneira:

  • Para visualizar apenas recomendações, conceda o papel Leitor do recomendador do Compute (roles/recommender.computeViewer)
  • Para visualizar e modificar recomendações, conceda o papel Administrador do Compute Recommender (roles/recommender.computeAdmin).
  • Para conceder a permissão serviceusage.services.use, conceda o papel Consumidor do Service Usage (roles/serviceusage.serviceUsageConsumer).

Como alternativa, você também pode conceder os seguintes papéis básicos:

  • Para visualizar apenas recomendações, conceda o papel Leitor (roles/viewer).
  • Para visualizar e modificar recomendações, conceda o papel de proprietário (roles/owner) ou editor (roles/editor).
    • Esses papéis também incluem a permissão serviceusage.services.use.

Subtipos de recomendação

Esse Recommender é compatível com os seguintes subtipos:

  • CHANGE_MACHINE_TYPE: recomenda alterar o tipo de máquina atual de uma instância de máquina virtual com base no uso atual.

Grupos de operação

Cada recomendação gerada pelo recomendador de dimensionamento da instância de VM tem um grupo de operações que descreve um conjunto de ações que precisam ser realizadas para aplicar a recomendação.

Recomendação de dimensionamento para uma instância de VM autônoma

Uma recomendação de dimensionamento para uma instância de VM independente inclui um OperationGroup com duas operações no recurso compute.googleapis.com/Instance:

  1. Uma operação test para garantir que o tipo de máquina atual seja o mesmo de quando a recomendação foi feita. Exemplo:

    {
     "action": "test",
     "resourceType": "compute.googleapis.com/Instance",
     "resource" : "//compute.googleapis.com/projects/example-project/zones/z1/instances/vm-name",
     "path": "/machineType",
     "valueMatcher": {
       "matchesPattern": ".*zones/us-central1-f/machineTypes/n1-standard-32"
     }
    }
    
  2. Uma operação replace que substitui o tipo de máquina pelo tipo recomendado. Exemplo:

     {
       "action": "replace",
       "resourceType": "compute.googleapis.com/Instance",
       "resource" : "//compute.googleapis.com/projects/example-project/zones/z1/instances/vm-name",
       "path": "/machineType",
       "value": "zones/us-central1-f/machineTypes/n1-standard-4"
     }
    

Exemplos

No exemplo a seguir, veja como listar as recomendações de dimensionamento de instância de VM:

  1. Defina as variáveis de ambiente necessárias:

    PROJECT=TARGET_PROJECT_ID
    LOCATION=LOCATION_ID
    RECOMMENDER=google.compute.instance.MachineTypeRecommender
    

    onde:

    • TARGET_PROJECT_ID é o projeto cujas recomendações você quer listar. Pode ser um projeto diferente do atual.

      • Para comandos gcloud, use o código do projeto
      • Para solicitações de API, você pode usar o número ou o ID do projeto. O número do projeto é recomendado.

      O número do projeto é retornado nas respostas dos comandos de API e gcloud.

    • LOCATION_ID é o local do Google Cloud em que os recursos associados às recomendações estão localizados (por exemplo, us-central1-a).

  2. Liste as recomendações de dimensionamento de instâncias de VM:

    gcloud

    Digite o seguinte:

    gcloud recommender recommendations list \
        --project=${PROJECT} \
        --location=${LOCATION} \
        --recommender=${RECOMMENDER} \
        --format=json
    

    REST

    Digite o seguinte:

    curl \
        -H "Authorization: Bearer $(gcloud auth print-access-token)"  \
        -H "x-goog-user-project: ${PROJECT}" \
        "https://recommender.googleapis.com/v1/projects/${PROJECT}/locations/${LOCATION}/recommenders/${RECOMMENDER}/recommendations"
    

A resposta será semelhante a:

[
  {
    "content": {
     "operationGroups": [
        {
          "operations": [
            {
              "action": "test",
              "path": "/machineType",
              "resource": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-1",
              "resourceType": "compute.googleapis.com/Instance",
              "valueMatcher": {
                "matchesPattern": ".*zones/us-central1-a/machineTypes/n1-standard-4"
              }
            },
            {
              "action": "replace",
              "path": "/machineType",
              "resource": "//compute.googleapis.com/projects/example-project/zones/us-central1-a/instances/instance-1",
              "resourceType": "compute.googleapis.com/Instance",
              "value": "zones/us-central1-a/machineTypes/custom-2-5120"
            }
          ]
        }
      ]
    },
    "description": "Save cost by changing machine type from n1-standard-4 to custom-2-5120.",
    "etag": "280b34810bba8a1a",
    "lastRefreshTime": "2019-06-28T06:49:21Z",
    "name": "projects/548293842938/locations/us-central1-a/recommenders/google.compute.instance.MachineTypeRecommender/recommendations/a523ff7e-ed03-4143-a3a5-5b396b99cba9",
    "primaryImpact": { ... }
    },
    "stateInfo": {
      "state": "ACTIVE"
    },
    "recommenderSubtype": "CHANGE_MACHINE_TYPE"
  }
]

Consulte Como usar a API para instruções sobre como executar tarefas adicionais em recomendações usando os comandos e as APIs gcloud do Recommender.