Afficher et appliquer les recommandations de VM inactives

Compute Engine propose des recommandations pour vous aider à identifier les instances de machines virtuelles (VM) qui ne sont pas utilisées. Ces recommandations sont générées automatiquement en fonction des métriques système collectées par le service Cloud Monitoring au cours des 14 jours précédant l'émission des recommandations. Vous pouvez utiliser les recommandations de VM inactives pour rechercher et arrêter des instances de VM inactives afin de réduire le gaspillage de ressources et votre facturation liée aux charges de calcul.

Avant de commencer

Tarifs

Les recommandations de VM inactives sont disponibles gratuitement.

Limites

Pour les VM autonomes, les recommandations d'inactivité ne sont pas disponibles dans les cas suivants :

  • Instances avec disques SSD locaux
  • Instances avec GPU/TPU
  • Ressources flexibles App Engine
  • Ressources Dataflow
  • Ressources Google Kubernetes Engine

Afficher les recommandations d'instances de VM inactives

Pour afficher les recommandations concernant les VM inactives, utilisez l'outil gcloud ou l'API.

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 : l'ID de votre projet
  • ZONE : la zone pour laquelle répertorier les recommandations, par exemple us-west1-a

Exemple :

gcloud recommender recommendations list \
  --recommender=google.compute.instance.IdleResourceRecommender \
  --project=my-project \
  --location us-central1-c \
  --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.

API

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 : le nom de votre projet
  • LOCATION : la zone contenant des instances pour lesquelles répertorier des recommandations, par exemple us-west1-a

Si vous ne maîtrisez pas encore les conditions préalables d'authentification pour appeler les API Google Cloud, consultez la page Présentation de l'authentification.

L'exemple suivant de script bash utilise le flux d'authentification de l'utilisateur final avec des identifiants client OAuth. Le script utilise l'outil de ligne de commande Google Oauth2l pour obtenir un jeton d'accès OAuth 2.0, puis envoie une requête curl à l'aide de ce jeton.

PROJECT_ID=my-project
ZONE=us-central1-c
RECOMMENDER=google.compute.instance.IdleResourceRecommender
OAUTH_JSON=~/service-account.json
OAUTH_HEADER="$(oauth2l header --json $OAUTH_JSON cloud-platform)"

curl -H "$OAUTH_HEADER" -H "x-goog-user-project: $PROJECT_ID" https://recommender.googleapis.com/v1/projects/$PROJECT_ID/locations/$ZONE/recommenders/google.compute.instance.IdleResourceRecommender/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 l'outil gcloud ou l'API 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 Google Cloud Console, l'outil gcloud ou l'API 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. Accédez à la page Instances de VM dans Google Cloud Console.

    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

API

Dans l'API, créez une requête POST pour arrêter une instance.

POST https://compute.googleapis.com/compute/v1/projects/MY-PROJECT/zones/ZONE/instances/VM-NAME/stop

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

Principe de détection des instances de VM inactives

L'outil de recommandation génère des recommandations relatives aux instances de VM inactives en fonction des métriques d'utilisation des 14 derniers jours ou, pour les nouvelles VM, à partir de cinq jours après leur création. Si l'utilisation du processeur et du réseau a été faible pendant la période observée, l'outil de recommandation classe la VM comme inactive.

Pour classer une VM comme inactive, toutes les conditions suivantes doivent être remplies :

  • L'utilisation du processeur est inférieure à 0,03 processeur virtuel pour 97 % de l'environnement d'exécution de la VM.
  • Le trafic réseau reçu est inférieur à 2 000 octets par seconde (octets/s) pour 95 % de l'environnement d'exécution de la VM.
  • Le trafic réseau envoyé est inférieur à 1 000 octets/s pour 95 % de l'environnement d'exécution de la VM.

Fréquence des recommandations

Les recommandations de VM inactives sont initialement générées après cinq jours d'exécution suivant la création d'une VM. Ensuite, les recommandations sont mises à jour au moins une fois par jour.

Relation avec les recommandations de dimensionnement des types de machines

Les recommandations de dimensionnement des types de machines indiquent la taille optimale pour une VM. Vous pouvez recevoir une recommandation de type de machine visant à réduire la taille d'une VM inactive.

Si vous devez maintenir une VM inactive en exécution malgré sa faible utilisation, utilisez les recommandations des types de machines pour vous aider à choisir la taille optimale pour les VM sous-exploitées.

Étape suivante