Outil de recommandation de dimensionnement d'instance de VM

L'outil de recommandation de dimensionnement d'instance de VM vous aide à optimiser l'utilisation des ressources de vos instances de machine virtuelle Compute Engine. Ces recommandations sont générées automatiquement en fonction des métriques système ou des métriques collectées par le service Cloud Monitoring au cours des huit jours précédant l'émission des recommandations. Vous pouvez suivre ces recommandations pour redimensionner les types de machines de vos instances afin d'utiliser plus efficacement les ressources de VM.

Les recommandations de dimensionnement sont également appelées recommandations de redimensionnement.

Pour en savoir plus, consultez la page Appliquer des recommandations de dimensionnement aux instances de VM.

ID de l'outil de recommandation

L'ID de l'outil de recommandation de dimensionnement d'instances de VM est le suivant :

google.compute.instance.MachineTypeRecommender

Vous pouvez utiliser cet ID pour afficher et modifier des recommandations à l'aide des commandes gcloud ou des API REST et RPC.

Zone

Les commandes gcloud et les API de l'outil de recommandation exigent que vous spécifiez un emplacement pour les recommandations que vous consultez ou modifiez. Dans le cas de recommandations de dimensionnement d'instances de VM, utilisez la zone Compute Engine comme emplacement dans gcloud et les interactions avec l'API.

Autorisations

Autorisations requises

Pour afficher les recommandations de dimensionnement d'instances de VM, procédez comme suit :

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

Pour modifier l'état des recommandations de dimensionnement d'instances de VM, procédez comme suit :

  • recommender.computeInstanceMachineTypeRecommendations.update

Accorder des autorisations

Pour accorder des autorisations, attribuez les rôles comme suit :

  • Pour afficher des recommandations seulement, attribuez le rôle de Lecteur de l'outil de recommandation Compute (roles/recommender.computeViewer).
  • Pour afficher et modifier des recommandations, attribuez le rôle d'Administrateur de l'outil de recommandation Compute (roles/recommender.computeAdmin).
  • Pour accorder l'autorisation serviceusage.services.use, attribuez le rôle de Client de Service Usage (roles/serviceusage.serviceUsageConsumer).

Vous pouvez également attribuer les rôles primitifs suivants :

  • Pour afficher des recommandations seulement, attribuez le rôle de Lecteur (roles/viewer).
  • Pour afficher et modifier des recommandations, attribuez le rôle de Propriétaire (roles/owner) ou d'Éditeur (roles/editor).
    • Ces rôles incluent également l'autorisation serviceusage.services.use.

Sous-types de recommandation

Cet outil de recommandation est compatible avec les sous-types suivants :

  • CHANGE_MACHINE_TYPE : recommande de modifier le type de machine actuel d'une instance de machine virtuelle en fonction de l'utilisation actuelle.

Groupes d'opérations

Chaque recommandation générée par l'outil de recommandation de dimensionnement d'instance de VM comporte un groupe d'opérations qui décrit un ensemble d'actions à effectuer pour appliquer la recommandation.

Recommandation de dimensionnement pour une instance de VM autonome

Une recommandation de dimensionnement d'instance de VM autonome comprend un groupe OperationGroup de deux opérations sur la ressource compute.googleapis.com/Instance :

  1. Une opération test qui vérifie que le type de machine actuel est identique à celui de la recommandation. Exemple :

    {
     "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. Une opération replace qui remplace le type de machine par le type recommandé. Exemple :

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

Exemples

L'exemple suivant montre comment répertorier les recommandations de dimensionnement d'instances de VM :

  1. Définissez les variables d'environnement requises :

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

    où :

    • TARGET_PROJECT_ID correspond au projet dont vous souhaitez répertorier les recommandations. Il peut s'agir d'un projet différent de votre projet actuel.

      • Pour les commandes gcloud, vous devez utiliser l'ID de projet.
      • Pour les requêtes API, vous pouvez utiliser le numéro ou l'ID du projet. Il est recommandé d'utiliser le numéro de projet.

      Le numéro de projet est renvoyé dans les réponses des commandes gcloud et de l'API.

    • LOCATION_ID correspond à l'emplacement Google Cloud dans lequel se trouvent les ressources associées aux recommandations (par exemple, us-central1-a).

  2. Pour répertorier les recommandations de dimensionnement d'instances de VM, procédez comme suit :

    gcloud

    Saisissez les chaînes suivantes :

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

    REST

    Saisissez les chaînes suivantes :

    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"
    

Le résultat ressemble à ce qui suit :

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

Consultez la page Utiliser l'API pour savoir comment effectuer des tâches supplémentaires sur les recommandations à l'aide des commandes gcloud et des API de l'outil de recommandation.