Ver y aplicar recomendaciones de máquinas virtuales inactivas


En esta página se describe cómo puedes usar las recomendaciones de VMs inactivas para identificar y detener instancias de VM inactivas, de modo que se reduzca el desperdicio de recursos y la factura de computación de tus proyectos.

Antes de empezar

  • Consulta las limitaciones para comprobar si tu máquina virtual admite recomendaciones de máquinas virtuales inactivas.
  • Si aún no lo has hecho, configura la autenticación. La autenticación verifica tu identidad para acceder a Google Cloud servicios y APIs. Para ejecutar código o ejemplos desde un entorno de desarrollo local, puedes autenticarte en Compute Engine seleccionando una de las siguientes opciones:

    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. Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    2. Set a default region and zone.

    REST

    Para usar las muestras de la API REST de esta página en un entorno de desarrollo local, debes usar las credenciales que proporciones a la CLI de gcloud.

      Instala Google Cloud CLI. Después de la instalación, inicializa la CLI de Google Cloud ejecutando el siguiente comando:

      gcloud init

      Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

    Para obtener más información, consulta el artículo Autenticarse para usar REST de la documentación sobre autenticación de Google Cloud .

Precios

Las recomendaciones de máquinas virtuales inactivas están disponibles sin coste adicional. Si sigues las recomendaciones para reducir el uso de recursos, puedes ahorrar costes.

Ver recomendaciones de instancias de VM inactivas

Para ver recomendaciones sobre máquinas virtuales inactivas, usa la CLI de gcloud o la API REST.

gcloud

Usa el comando gcloud recommender recommendations list con --recommender=google.compute.instance.IdleResourceRecommender:

gcloud recommender recommendations list \
  --project=PROJECT_ID \
  --location=ZONE \
  --recommender=google.compute.instance.IdleResourceRecommender \
  --format=yaml

Haz los cambios siguientes:

  • PROJECT_ID: el ID de tu proyecto
  • ZONE: la zona que contiene las instancias de las que se deben mostrar recomendaciones.

Por ejemplo:

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

Si no hay ninguna VM inactiva en la ubicación, la respuesta estará vacía. De lo contrario, la respuesta incluye los siguientes campos de cada recomendación:


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

Consulta más información sobre cómo trabajar con recomendaciones mediante gcloud en los ejemplos de gcloud.

REST

Llama al método recommendations.list y usa el siguiente tipo de recomendación:

  • google.compute.instance.IdleResourceRecommender

La llamada a la API tiene el siguiente aspecto:

GET https://recommender.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/recommenders/google.compute.instance.IdleResourceRecommender/recommendations

Haz los cambios siguientes:

  • PROJECT_ID: el ID de tu proyecto.
  • ZONE: la zona que contiene las instancias para las que se deben mostrar recomendaciones.

En el siguiente ejemplo se muestra cómo enviar una solicitud con curl y la respuesta de ejemplo asociada.

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

Ejemplo de respuesta JSON de una recomendación de máquina virtual inactiva:

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

Puedes consultar más detalles sobre cada campo en la documentación de la API Recommender.

Interpretar la respuesta de la recomendación

Cada recomendación que recibas a través de la CLI de gcloud o de REST contiene un grupo de operaciones que puedes realizar en serie para aplicar la recomendación. Los grupos de operaciones de recomendaciones de VMs inactivas incluyen dos operaciones:

  1. Una operación de prueba para verificar la status actual de la VM. Por ejemplo:

     {
       "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. Una operación de sustitución para cambiar el status de la VM. Por ejemplo:

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

La primera operación es un test, lo que significa que debes comprobar que el resource sigue siendo RUNNING. Para ello, consulta el estado de la VM.

La segunda operación, replace, significa que debes sustituir el status del recurso por un nuevo valor, TERMINATED. Para ello, detén la VM, tal como se describe más abajo.

Aplicar recomendaciones de máquinas virtuales inactivas

Después de recibir una recomendación de máquina virtual inactiva y decidir que ya no necesitas la instancia, usa la Google Cloud console, la CLI de gcloud o REST para detener y, opcionalmente, eliminar la instancia.

Si detienes una instancia y sus discos, pero no los eliminas, sigues pagando por los discos.

Consola

  1. En la consola de Google Cloud , ve a la página Instancias de VM.

    Ve a la página Instancias de VM.

  2. Selecciona la instancia que quieras detener.
  3. Haz clic en Detener para detener la VM. Si no aparece la opción Detener, haz clic en Más acciones > Detener.

gcloud

Usa el comando instances stop y especifica el VM_NAME que quieras detener.

gcloud compute instances stop VM_NAME --zone=ZONE

Haz los cambios siguientes:

  • VM_NAME: el nombre de la instancia de VM que quieres detener
  • ZONE: la zona que contiene la instancia que quieres detener

REST

Crea una solicitud POST para detener una instancia.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/VM_NAME/stop

Haz los cambios siguientes:

  • PROJECT_ID: el ID de tu proyecto
  • ZONE: la zona que contiene la instancia que quieres detener
  • VM_NAME: el nombre de la instancia de VM que quieres detener

Si tienes claro que puedes eliminar la instancia de VM y sus discos, puedes eliminar la instancia.

Siguientes pasos