Recomendador de tamaño de instancias de VM

El recomendador de tamaño de instancias de VM te ayuda a optimizar el uso de recursos de tus instancias de máquina virtual de Compute Engine. Estas recomendaciones se generan de manera automática en función de las métricas del sistema o de las métricas recopiladas por el servicio de Cloud Monitoring durante los 8 días anteriores. Puedes usar estas recomendaciones para cambiar el tamaño de los tipos de máquinas de las instancias a fin de usar de manera más eficiente los recursos de VM.

Las recomendaciones de tamaño también se conocen como recomendaciones de redimensionamiento.

Para obtener más información, consulta la página Aplica las recomendaciones de tamaño para las instancias de VM.

ID del recomendador

El ID del recomendador de tamaño de la instancia de VM es el siguiente:

google.compute.instance.MachineTypeRecommender

Usas este ID cuando ves y modificas recomendaciones concomandos de gcloud o las API de REST y RPC.

Ubicación

Los comandos de gcloud y las API del recomendador requieren que especifiques una ubicación para las recomendaciones que ves o modificas. Para recomendaciones de tamaño de las instancias de VM, usa la zona de Compute Engine como ubicación en gcloud y las interacciones de la API.

Permisos

Permisos necesarios

Para ver las recomendaciones de tamaño de instancias de VM, haz lo siguiente:

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

Para modificar el estado de las recomendaciones de tamaño de las instancias de VM, sigue estos pasos:

  • recommender.computeInstanceMachineTypeRecommendations.update

Otorga permisos

Para otorgar esos permisos, asigna las funciones de la siguiente manera:

  • Para ver solo las recomendaciones, otorga la función Visualizador de recomendador de Compute (roles/recommender.computeViewer).
  • Para ver y modificar recomendaciones, otorga la función Administrador de recomendaciones de Compute (roles/recommender.computeAdmin).
  • Para otorgar el permiso serviceusage.services.use, otorga la función de Consumidor de Service Usage (roles/serviceusage.serviceUsageConsumer).

Como alternativa, también puedes otorgar las siguientes funciones básicas:

  • Para ver solo las recomendaciones, otorga la función Visualizador (roles/viewer).
  • Para ver y modificar recomendaciones, otorga la función Propietario (roles/owner) o Editor (roles/editor).
    • Estas funciones también incluyen el permiso serviceusage.services.use.

Subtipos de recomendaciones

Este recomendador admite los siguientes subtipos:

  • CHANGE_MACHINE_TYPE: Recomienda cambiar el tipo de máquina actual de una instancia de máquina virtual según el uso actual.

Grupos de operaciones

Cada recomendación que genera el recomendador de tamaño de instancia de VM tiene un grupo de operaciones que describe un conjunto de acciones que deben realizarse para aplicar la recomendación.

Recomendación de tamaño para una instancia de VM independiente

Una recomendación de tamaño para una instancia de VM independiente incluye un OperationGroup con dos operaciones en el recurso compute.googleapis.com/Instance:

  1. Una operación test para asegurarse de que el tipo de máquina actual sea el mismo que cuando se hizo la recomendación. Por ejemplo:

    {
     "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. Una operación replace que reemplaza el tipo de máquina por el tipo recomendado. Por ejemplo:

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

Ejemplos

En el siguiente ejemplo, se muestra cómo generar una lista de recomendaciones de tamaño de instancia de VM:

  1. Configura las variables de entorno necesarias:

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

    Donde:

    • TARGET_PROJECT_ID es el proyecto cuyas recomendaciones deseas enumerar. Este puede ser un proyecto diferente del actual.

      • Para los comandos de gcloud, debes usar el ID del proyecto
      • Para las solicitudes a la API, puedes usar el número o el ID del proyecto. Se recomienda usar el número del proyecto.

      El número de proyecto se muestra en las respuestas de la API y los comandos de gcloud.

    • LOCATION_ID es la ubicación de Google Cloud en la que se encuentran los recursos asociados con las recomendaciones (por ejemplo, us-central1-a).

  2. Enumera las recomendaciones de tamaño de la instancia de VM:

    gcloud

    Ingrese lo siguiente:

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

    REST

    Ingrese lo siguiente:

    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"
    

El resultado es similar al siguiente:

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

Consulta Usa la API para obtener instrucciones sobre cómo realizar tareas adicionales en las recomendaciones mediante los comandos de gcloud y las API del recomendador.