Ver y aplicar recomendaciones de VM inactivas


Esta página describe cómo puede utilizar recomendaciones de VM inactivas para identificar y detener instancias de VM inactivas para reducir el desperdicio de recursos y reducir la factura informática de sus proyectos.

Antes de comenzar

  • Revise las limitaciones para verificar si su VM admite recomendaciones de VM inactivas.
  • Si aún no lo has hecho, configura la autenticación. La autenticación es el proceso mediante el cual se verifica su identidad para acceder a Google Cloud servicios y API. Para ejecutar código o muestras 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. After installing the Google Cloud CLI, initialize it by running the following command:

      gcloud init

      If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

    2. Set a default region and zone.
    3. REST

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

        After installing the Google Cloud CLI, initialize it by running the following command:

        gcloud init

        If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.

      Para obtener más información, consulta Autentica para usar REST en la documentación de autenticación de Google Cloud .

Precios

Las recomendaciones de VM inactivas están disponibles de forma gratuita. El uso de recomendaciones para reducir el uso de recursos puede generar ahorros de costos.

Ver recomendaciones de instancias de VM inactivas

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

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

Reemplace lo siguiente:

  • PROJECT_ID : el ID de tu proyecto
  • ZONE : la zona que contiene instancias para enumerar recomendaciones para

Por ejemplo:

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

Si no hay máquinas virtuales inactivas en la ubicación, la respuesta está vacía. De lo contrario, la respuesta incluye los siguientes campos para 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

Obtén más información sobre cómo trabajar con recomendaciones usando gcloud en ejemplos de gcloud .

DESCANSAR

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

  • google.compute.instance.IdleResourceRecommender

La llamada API se ve así:

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

Reemplace lo siguiente:

  • PROJECT_ID : el ID de su proyecto.
  • ZONE : la zona que contiene instancias para las que enumerar recomendaciones.

El siguiente ejemplo muestra cómo enviar una solicitud con curl y la respuesta de muestra 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 para una recomendación de VM 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"
}

Puede encontrar más detalles sobre cada campo en la documentación de la API de recomendación .

Interpretar la respuesta a la recomendación

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

  1. Una operación de prueba para verificar el 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 reemplazo 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 una test , lo que significa que debe probar que el resource aún esté RUNNING . Puede hacerlo comprobando el estado de la VM .

La segunda operación, replace , significa que debe reemplazar el status del recurso con un nuevo valor, TERMINATED . Puede hacerlo deteniendo la máquina virtual, como se describe a continuación.

Aplicar recomendaciones de VM inactivas

Después de recibir una recomendación de VM inactiva y decidir que ya no necesita la instancia, use la consola de Google Cloud , la CLI de gcloud o REST para detener y, opcionalmente, eliminar la instancia.

Si detiene pero no elimina una instancia y sus discos, igualmente pagará por sus discos.

Consola

  1. En la consola de Google Cloud, vaya a la página de instancias de VM .

    Vaya a la página de instancias de VM

  2. Seleccione la instancia que desea detener.
  3. Haga clic en Detener .

nube de gcloud

Utilice el comando instances stop y especifique el VM_NAME que desea detener.

gcloud compute instances stop VM_NAME --zone=ZONE

Reemplace lo siguiente:

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

DESCANSAR

Construya una solicitud POST para detener una instancia.

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

Reemplace lo siguiente:

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

Si está seguro de que la instancia de VM y sus discos se pueden eliminar, puede eliminar la instancia .

¿Qué sigue?