Größen-Recommender für VM-verwaltete Instanzgruppen

Mit dem Größen-Recommender für die VM-Instanzgruppe können Sie die Ressourcenauslastung Ihrer von Compute Engine verwalteten VM-Instanzen optimieren. Diese Empfehlungen werden automatisch anhand von Systemmesswerten generiert, die in den vergangenen acht Tagen vom Cloud Monitoring-Dienst erfasst wurden. Passen Sie die Größe der Maschinentypen Ihrer Gruppen anhand dieser Empfehlungen an, um VM-Ressourcen effizienter zu nutzen.

Größenempfehlungen werden auch als Empfehlungen zur Größenanpassung bezeichnet.

Weitere Informationen finden Sie unter Größenempfehlungen auf verwaltete Instanzgruppen anwenden.

Recommender-ID

Die ID der Empfehlungsgruppe für die Größenänderung der VM-Instanz lautet:

google.compute.instanceGroupManager.MachineTypeRecommender

Sie verwenden diese ID, wenn Sie Empfehlungen aufrufen und ändern Verwenden Sie gcloud-Befehle oder die REST- und RPC-APIs.

Ort

Für die Recommender-gcloud-Befehle und -APIs müssen Sie einen Standort für Empfehlungen angeben, die Sie ansehen oder ändern möchten. Verwenden Sie für Größenempfehlungen für VM-Instanzgruppen die Compute Engine-Zone als Speicherort in gcloud- und API-Interaktionen.

Berechtigungen

Erforderliche Berechtigung

So rufen Sie Größenempfehlungen für Instanzgruppen auf:

  • recommender.computeInstanceGroupManagerMachineTypeRecommendations.get
  • recommender.computeInstanceGroupManagerMachineTypeRecommendations.list

So ändern Sie die Größenempfehlungen der Instanzgruppen:

  • recommender.computeInstanceGroupManagerMachineTypeRecommendations.update

Berechtigungen gewähren

Um diese Berechtigungen zu erteilen, weisen Sie Rollen so zu:

  • Damit nur Empfehlungen angezeigt werden, gewähren Sie die Rolle Compute Recommender-Betrachter (roles/recommender.computeViewer).
  • Damit Empfehlungen aufgerufen und geändert werden können, weisen Sie die Rolle Compute Recommender-Administrator (roles/recommender.computeAdmin) zu.
  • Um die serviceusage.services.use-Berechtigung zu erteilen, weisen Sie die Rolle Service Usage-Nutzer (roles/serviceusage.serviceUsageConsumer ) zu.

Alternativ können Sie auch die folgenden einfachen Rollen zuweisen:

  • Damit nur Empfehlungen angezeigt werden, gewähren Sie die Rolle Betrachter (roles/viewer).
  • Damit Empfehlungen aufgerufen und geändert werden können, weisen Sie die Rolle Inhaber (roles/owner) oder Bearbeiter (roles/editor) zu.
    • Diese Rollen enthalten auch die Berechtigung serviceusage.services.use.

Empfehlungs-Untertypen

Dieser Recommender unterstützt die folgenden Untertypen:

  • CHANGE_MACHINE_TYPE: Es wird empfohlen, den aktuellen Maschinentyp einer Gruppe von verwalteten VM-Instanzen basierend auf der aktuellen Nutzung zu ändern.

Vorgangsgruppen

Jede Empfehlung, die von dem Größen-Recommender von VM-Instanzgruppen generiert wird, verfügt über Vorgangsgruppen, die eine Reihe von aufeinanderfolgenden Aktionen beschreiben, die zum Anwenden der Empfehlung erforderlich sind.

Größenempfehlungen für VM-Instanzen in einer verwalteten Instanzgruppe

Eine Größenempfehlung für eine VM-Instanzgruppe umfasst zwei Entitäten vom Typ OperationGroup.

Der erste gibt drei Vorgänge für die Ressource compute.googleapis.com/InstanceTemplate an:

  1. Ein test-Vorgang, um sicherzustellen, dass der aktuelle Maschinentyp mit dem Zeitpunkt der Empfehlung übereinstimmt. Beispiel:

    {
     "action": "test",
     "resourceType": "compute.googleapis.com/InstanceTemplate",
     "resource": "//compute.googleapis.com/projects/example-project/global/instanceTemplates/it-name",
     "path": "/properties/machineType"
     "value": "n1-standard-4"
    }
    
  2. Ein copy-Vorgang, mit dem eine neue Instanzvorlageressource erstellt wird Beispiel:

    {
       "action": "copy",
       "resourceType": "compute.googleapis.com/InstanceTemplate",
       "sourceResource": "//compute.googleapis.com/projects/example-project/global/instanceTemplates/it-name",
       "resource": "//compute.googleapis.com/projects/p1/global/instanceTemplates/$new-it-name",
       "sourcePath": "/",
       "path": "/"
     }
    

    Dabei ist $new-it-name der neue Instanzvorlagenname.

  3. Ein replace-Vorgang, der den Maschinentyp in der neuen Instanzvorlage durch den empfohlenen Typ ersetzt:

    {
      "action": "replace",
      "resourceType": "compute.googleapis.com/InstanceTemplate",
      "resource": "//compute.googleapis.com/projects/example-project/global/instanceTemplates/$new-it-name",
      "path": "/properties/machineType",
      "value" : "n1-standard-8"
    }
    

    Dabei ist $new-it-name der neue Instanzvorlagenname.

Der zweite gibt einen replace-Vorgang für die Ressource compute.googleapis.com/InstanceGroupManager an. Dieser Vorgang ersetzt die aktuelle Instanzvorlage it-name durch die oben angegebene neue Vorlage, die den empfohlenen Maschinentyp verwendet:

 {
   "action" : "replace",
   "resourceType": "compute.googleapis.com/InstanceGroupManager",
   "resource": "//compute.googleapis.com/projects/example-project/zones/z1/instanceGroupManagers/instance-group",
   "path": "/versions/*/instanceTemplate",
   "pathValueMatchers": {
     "/versions/*/instanceTemplate": {
       "matchesPattern": ".*global/instanceTemplates/it-name"
     }
   }
   "value": "global/instanceTemplates/$new-it-name"
 }

Dabei ist $new-it-name der neue Instanzvorlagenname.

Beispiele

Das folgende Beispiel zeigt, wie Größenempfehlungen für verwaltete Instanzgruppen aufgelistet werden:

  1. Legen Sie die erforderlichen Umgebungsvariablen fest:

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

    wobei

    • TARGET_PROJECT_ID ist das Projekt, dessen Empfehlungen Sie auflisten möchten. Dies kann ein anderes Projekt als Ihr aktuelles Projekt sein.

      • Für gcloud-Befehle müssen Sie die Projekt-ID verwenden
      • Für API-Anfragen können Sie die Projektnummer oder Projekt-ID verwenden. Projektnummer wird empfohlen.

      Die Projektnummer wird in Antworten der API und der gcloud-Befehle zurückgegeben.

    • LOCATION_ID ist die Google Cloud-Zone, in der sich die Empfehlungen befinden (z. B. us-central1-a).

  2. Listen Sie die Größenempfehlungen für VM-Instanzgruppen auf:

    gcloud

    Passende Sucheingabe

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

    REST

    Passende Sucheingabe

    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"
    

Die Ausgabe sieht etwa so aus:

[
  {
    "content": {
      "operationGroups": [
        {
          "operations" : [
            {
              "action": "test",
              "resourceType": "compute.googleapis.com/InstanceTemplate",
              "resource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/it-name",
              "path": "/properties/machineType"
              "value": "n1-standard-4"
            },
            {
              "action": "copy",
              "resourceType": "compute.googleapis.com/InstanceTemplate",
              "sourceResource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/it-name",
              "resource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/$new-it-name",
              "sourcePath": "/",
              "path": "/"
            },
            {
              "action": "replace",
              "resourceType": "compute.googleapis.com/InstanceTemplate",
              "resource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/$new-it-name",
              "path": "/name",
              "value" : "$new-it-name"
            },
            {
              "action": "replace",
              "resourceType": "compute.googleapis.com/InstanceTemplate",
              "resource": "//compute.googleapis.com/projects/test-project/global/instanceTemplates/$new-it-name",
              "path": "/properties/machineType",
              "value" : "n1-standard-8"
            }
          ]
        },
        {
          "operations" : [
            {
              "action" : "replace",
              "resourceType": "compute.googleapis.com/InstanceGroupManager",
              "resource": "//compute.googleapis.com/projects/test-project/zones/us-west1-a/instanceGroupManagers/igm-name",
              "path": "/versions/*/instanceTemplate",
              "pathValueMatchers": {
                "/versions/*/instanceTemplate": {
                  "matchesPattern" : ".*global/instanceTemplates/it-name"
                }
              }
              "value": "global/instanceTemplates/$new-it-name"
            }
          ]
        }
      ]
    },
    "description" : "Improve performance by changing machine type from n1-standard-4 to n1-standard-8.",
    "etag": "\"eebe926c12f923da\"",
    "name": "projects/823742397239/locations/us-west1-a/recommenders/google.compute.instanceGroupManager.MachineTypeRecommender/recommendations/0fd31b24-cc05-4132-8431-ed54a22dd4f1",
    "lastRefreshTime": {
      "seconds": 1543912652
    },
    "primaryImpact": {
      "category": "PERFORMANCE"
    },
    "additionalImpact": [
      "category": "COST",
      "costProjection": {
        "cost": {"currencyCode": "USD", "units": 50},
        "duration": { "seconds": 2592000 }
      }
    ],
    "stateInfo": {
      "state": "ACTIVE"
    },
    "recommenderSubtype": "CHANGE_MACHINE_TYPE"
  }
]

Unter API verwenden finden Sie eine Anleitung zum Ausführen zusätzlicher Aufgaben zu Empfehlungen mit dem Recommender-gcloud-Befehlen und -APIs.