Afficher et appliquer les recommandations de VM inactives


Cette page explique comment utiliser les recommandations de VM inactives pour identifier et arrêter les instances de VM inactives afin de réduire le gaspillage de ressources et votre facture de calcul sur vos projets.

Avant de commencer

  • Consultez les limites pour vérifier si votre VM est compatible avec les recommandations de VM inactives.
  • Si ce n'est pas déjà fait, configurez l'authentification. L'authentification est le processus permettant de valider votre identité pour accéder aux services et aux API Google Cloud. Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine comme suit :

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    Console

    Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.

    gcloud

    1. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init
    2. Définissez une région et une zone par défaut.

    REST

    Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

      Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init

Tarification

Les recommandations de VM inactives sont disponibles gratuitement. Les recommandations permettant de réduire votre utilisation des ressources peuvent vous permettre de réduire les coûts.

Afficher les recommandations d'instances de VM inactives

Pour afficher les recommandations concernant les VM inactives, utilisez gcloud CLI ou REST.

gcloud

Utilisez la commande gcloud recommender recommendations list avec --recommender=google.compute.instance.IdleResourceRecommender :

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet
  • ZONE : zone contenant des instances pour lesquelles vous souhaitez répertorier les recommandations

Exemple :

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

S'il n'y a pas de VM inactive dans l'emplacement, la réponse est vide. Sinon, la réponse inclut les champs suivants pour chaque recommandation :


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

Pour en savoir plus sur l'utilisation des recommandations à l'aide de gcloud, consultez les exemples gcloud.

REST

Appelez la méthode recommendations.list et utilisez le type de recommandation suivant :

  • google.compute.instance.IdleResourceRecommender

L'appel d'API ressemble à ceci :

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

Remplacez les éléments suivants :

  • PROJECT_ID : par l'ID du projet.
  • ZONE : par la zone contenant des instances pour lesquelles vous souhaitez répertorier les recommandations.

L'exemple suivant montre comment envoyer une requête avec curl et l'exemple de réponse associé.

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

Exemple de réponse JSON pour une recommandation de VM inactive :

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

Vous trouverez plus de détails sur chaque champ dans la documentation de l'outil de recommandation.

Interpréter la réponse à la recommandation

Chaque recommandation que vous recevez via gcloud CLI ou REST contient un groupe d'opérations que vous pouvez exécuter en série pour appliquer la recommandation. Les groupes d'opérations de recommandation relatives aux VM inactives incluent deux opérations :

  1. Opération de test pour vérifier l'état (status) actuel de la VM. Exemple :

     {
       "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. Opération de remplacement pour modifier l'état (status) de la VM. Exemple :

     {
       "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 première opération est un test, ce qui signifie que vous devez vérifier que la ressource (resource) est toujours active (RUNNING). Pour ce faire, vérifiez l'état de la VM.

La deuxième opération, replace, signifie que vous devez remplacer l'état (status) de la ressource par une nouvelle valeur, TERMINATED. Pour ce faire, arrêtez la VM comme décrit ci-dessous.

Appliquer des recommandations de VM inactives

Après avoir reçu une recommandation de VM inactive et déterminé que l'instance correspondante n'est plus nécessaire, utilisez la console Google Cloud, gcloud CLI ou REST pour arrêter et éventuellement supprimer l'instance.

Si vous arrêtez une instance et ses disques, mais que vous ne les supprimez pas, vous continuez à être facturé pour les disques.

Console

  1. Dans Google Cloud Console, accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Sélectionnez l'instance que vous souhaitez arrêter.
  3. Cliquez sur Arrêter.

gcloud

Utilisez la commande instances stop et spécifiez le nom de la VM (VM_NAME) que vous souhaitez arrêter.

gcloud compute instances stop VM_NAME --zone=ZONE

Remplacez les éléments suivants :

  • VM_NAME : nom de l'instance de VM que vous souhaitez arrêter
  • ZONE : zone contenant l'instance que vous souhaitez arrêter

REST

Créez une requête POST pour arrêter une instance.

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

Remplacez les éléments suivants :

  • PROJECT_ID : ID de votre projet
  • ZONE : zone contenant l'instance que vous souhaitez arrêter
  • VM_NAME : nom de l'instance de VM que vous souhaitez arrêter

Si vous êtes sûr que l'instance de VM et ses disques peuvent être supprimés, vous pouvez supprimer l'instance.

Étapes suivantes