Skalierung anhand von Cloud Monitoring-Messwerten

In diesem Dokument wird beschrieben, wie Sie eine verwaltete Instanzgruppe (managed instance group, MIG) anhand von Monitoringmesswerten skalieren.

Sie können eine MIG auch anhand ihrer CPU-Auslastung oder der Bereitstellungskapazität eines externen HTTP(S)-Load-Balancers skalieren.

Wenn Sie eine MIG basierend auf Monitoringmesswerten skalieren, können Sie auf der Grundlage der folgenden Messwerttypen skalieren:

  • Instanzmesswerte, bei denen der ausgewählte Messwert für jede Instanz in einer verwalteten Instanzgruppe Daten zur Ressourcenauslastung bereitstellt.
  • Gruppenmesswerte (Beta), bei denen die Gruppe auf Basis eines Messwerts skaliert wird, der für die gesamte verwaltete Instanzgruppe gilt.

Die Messwerte können entweder Standardmesswerte sein, die vom Cloud Monitoring-Dienst bereitgestellt werden, oder benutzerdefinierte Cloud Monitoring-Messwerte, die Sie erstellen.

Beschränkungen

  • Autoscaling anhand von logbasierten Messwerten von Cloud Monitoring ist nicht möglich.

  • Regional verwaltete Instanzgruppen bieten keine Filterung von Instanzmesswerten.

  • Regional verwaltete Instanzgruppen bieten kein Autoscaling auf Basis von Gruppenmesswerten.

Vorbereitung

Instanzmesswerte

Instanzmesswerte beziehen sich auf einzelne Instanzen einer Gruppe. Sie informieren über die Ressourcenauslastung der Instanzen innerhalb der verwalteten Instanzgruppe. Bei Instanzmesswerten kann die Instanzgruppe nicht unter eine Größe von 1 skaliert werden, da Autoscaling für mindestens eine Instanz Messwerte benötigt, um ausgeführt werden zu können.

Wenn Sie die Skalierung mit Cloud Monitoring-Messwerten durchführen möchten, die nicht für individuelle Instanzen spezifisch sind, oder wenn Sie Ihre Instanzgruppen gelegentlich auf 0 Instanzen skalieren müssen, können Sie Ihre Instanzen so konfigurieren, dass Gruppenmesswerte für die Skalierung verwendet werden.

Standardmesswerte für einzelne Instanzen

Cloud Monitoring bietet eine Reihe von Standardmesswerten, die Sie für das Monitoring Ihrer VM-Instanzen verwenden können. Allerdings sind nicht alle davon gültige Auslastungsmesswerte, die das Autoscaling nutzen kann.

Ein gültiger Auslastungsmesswert für die Skalierung muss die folgenden Kriterien erfüllen:

  • Der Standardmesswert muss Daten für eine überwachte gce_instance-Ressource enthalten. Mit dem API-Aufruf timeSeries.list können Sie überprüfen, ob ein bestimmter Messwert Daten für diese Ressource exportiert.

  • Der Standardmesswert beschreibt, wie ausgelastet eine Instanz ist, und der Wert nimmt proportional zur Anzahl der VM-Instanzen in der Gruppe zu oder ab.

Der folgende Messwert ist ungültig, da sich der Wert nicht basierend auf der Auslastung ändert und das Autoscaling den Wert nicht für die proportionale Skalierung verwenden kann:

compute.googleapis.com/instance/cpu/reserved_cores

Nachdem Sie einen Standardmesswert ausgewählt haben, können Sie das Autoscaling auf Basis dieses Messwerts konfigurieren.

Benutzerdefinierte Messwerte

Sie können mit Cloud Monitoring benutzerdefinierte Messwerte erstellen und Ihre eigenen Monitoringdaten in den Monitoringdienst schreiben. So erhalten Sie parallel Zugriff auf gängige Google Cloud-Daten und Ihre eigenen Monitoringdaten mit einer bekannten Datenstruktur und einer einheitlichen Abfragesyntax. Wenn Sie einen benutzerdefinierten Messwert haben, können Sie auswählen, dass die Skalierung basierend auf den Daten dieses Messwerts erfolgt.

Voraussetzungen

Um benutzerdefinierte Messwerte zu verwenden, müssen Sie zuerst Folgendes tun:

  • Erstellen Sie einen benutzerdefinierten Messwert. Informationen zum Erstellen eines benutzerdefinierten Messwerts finden Sie unter Benutzerdefinierte Messwerte verwenden.
  • Sie haben Ihre verwaltete Instanzgruppe eingerichtet, um den benutzerdefinierten Messwert aus allen Instanzen in die verwaltete Instanzgruppe zu exportieren.

Gültigen benutzerdefinierten Messwert auswählen

Nicht alle benutzerdefinierten Messwerte können von Autoscaling verwendet werden. Ein gültiger benutzerdefinierter Messwert muss folgende Properties haben:

  • Er ist ein Instanzmesswert. Der Messwert muss Daten, die für jede spezifische Compute Engine-Instanz relevant sind, separat exportieren.
  • Die exportierten Instanzwerte müssen einer überwachten gce_instance-Ressource zugeordnet sein, die die folgenden Labels enthält:
    • zone mit dem Namen der Zone, in der sich die Instanz befindet.
    • instance_id mit dem Wert der eindeutigen numerischen ID, die der Instanz zugeordnet ist.
  • Der Messwert muss mindestens alle 60 Sekunden Daten exportieren. Wenn Sie Daten häufiger als alle 60 Sekunden exportieren, kann das Autoscaling schneller auf Laständerungen reagieren. Wenn Sie Ihre Daten weniger häufig als alle 60 Sekunden exportieren, reagiert das Autoscaling möglicherweise nicht schnell genug auf Laständerungen.
  • Bei dem Messwert muss es sich um einen gültigen Auslastungsmesswert handeln. Daten des Messwerts müssen also verwendet werden können, um die Anzahl virtueller Maschinen proportional nach oben oder nach unten zu skalieren.
  • Der Messwert muss int64- oder double-Datenwerte exportieren.

Damit Autoscaling mit Ihrem benutzerdefinierten Messwert funktioniert, müssen Sie Daten für diesen benutzerdefinierten Messwert von allen Instanzen der verwalteten Instanzgruppe exportieren.

Hinweis: Sie können die numerische ID einer Instanz abrufen, indem Sie in der Instanz das ID-Attribut des Metadatenservers anfordern. Sie können hierfür beispielsweise die Programmiersprache Curl verwenden:
curl http://metadata.google.internal/computeMetadata/v1/instance/id -H Metadata-Flavor:Google
Weitere Informationen zur Verwendung des Metadatenservers finden Sie unter Instanzmetadaten speichern und abrufen.

Autoscaling auf Basis instanzspezifischer Monitoringmesswerte konfigurieren

Die Autoscaling-Einrichtung für Standardmesswerte und benutzerdefinierte Messwerte ist identisch. Sie müssen die Messwert-ID, den gewünschten Zielnutzungsgrad und den Nutzungszieltyp angeben, um ein Autoscaling zu erstellen, das Cloud Monitoring-Messwerte verwendet. Jedes dieser Attribute wird im Folgenden kurz beschrieben:

  • Messwert-ID: Der Name des zu verwendenden Messwerts. Wenn Sie einen benutzerdefinierten Messwert verwenden, haben Sie diesen Namen beim Erstellen des Messwerts definiert. Die ID hat folgendes Format:

    custom.googleapis.com/path/to/metric
    

    Weitere Informationen zum Erstellen, Durchsuchen und Lesen von Messwerten finden Sie im Abschnitt Benutzerdefinierte Messwerte verwenden.

  • Zielnutzungsgrad: Der Nutzungsgrad, den das Autoscaling beibehalten soll. Dieser Wert muss eine positive Zahl sein. Sowohl 24.5 als auch 1100 sind beispielsweise gültige Werte. Dies ist anders als bei der CPU-Auslastung und der Auslastung beim Load-Balancing, wo es sich bei dem Wert um eine Gleitkommazahl zwischen 0,0 und 1,0 handeln muss.

  • Zieltyp: Der Zieltyp gibt an, wie das Autoscaling die von den Instanzen erfassten Daten verarbeitet. Mögliche Zieltypen:

    • GAUGE: Das Autoscaling vergleicht den durchschnittlichen Wert der in den letzten Minuten erfassten Daten mit dem Zielauslastungswert des Autoscalings.
    • DELTA_PER_MINUTE: Das Autoscaling berechnet die durchschnittliche Wachstumsrate pro Minute und vergleicht sie mit der Zielauslastung.
    • DELTA_PER_SECOND: Das Autoscaling berechnet die durchschnittliche Wachstumsrate pro Sekunde und vergleicht sie mit der Zielauslastung.

    Wenn Sie die Zielauslastung in Sekunden festgelegt haben, verwenden Sie für genaue Vergleiche DELTA_PER_SECOND als Autoscaling-Zieltyp. Gleichermaßen sollten Sie DELTA_PER_MINUTE für eine Zielauslastung in Minuten verwenden.

Console

Die Anweisungen zur Autoscaling-Konfiguration unterscheiden sich für regional bzw. in einer einzelnen Zone verwaltete Instanzgruppen. Regional verwaltete Instanzgruppen bieten keine Filterung von Instanzmesswerten.

So konfigurieren Sie Autoscaling für eine regional (mehrere Zonen) verwaltete Instanzgruppe:

  1. Rufen Sie die Seite Instanzgruppen auf.
  2. Erstellen Sie eine Instanzgruppe, sofern noch keine vorhanden ist. Klicken Sie andernfalls auf einen Namen in der Instanzgruppenliste, um die Seite mit den Details zu öffnen. Bei der Gruppe muss es sich um eine regionale Gruppe handeln.
  3. Klicken Sie auf der Detailseite der Instanzgruppe auf Gruppe bearbeiten.
  4. Wählen Sie unter Autoscaling die Option Automatisch skalieren aus, um die Funktion zu aktivieren.
  5. Wählen Sie unter Messwerte für Autoscaling die Option Stackdriver-Monitoringmesswert aus.
  6. Wählen Sie unter Umfang des Messwertexports die Option Zeitachsen pro Instanz aus, um Autoscaling anhand von Gruppenmesswerten zu konfigurieren.
  7. Geben Sie unter Stackdriver Monitoringmesswert den Messwertnamen im folgenden Format ein: example.googleapis.com/path/to/metric.
  8. Geben Sie unter Ziel den Zielwert ein.
  9. Wählen Sie unter Zieltyp den zur Messgenauigkeit des Messwerts passenden Zieltyp aus.
  10. Speichern Sie alle Einstellungen.

So konfigurieren Sie Autoscaling für eine in einer einzelnen Zone verwaltete Instanzgruppe:

  1. Rufen Sie die Seite Instanzgruppen auf.
  2. Erstellen Sie eine Instanzgruppe, sofern noch keine vorhanden ist. Klicken Sie andernfalls auf einen Namen in der Instanzgruppenliste, um die Seite mit den Details zu öffnen. Alle Instanzen in der Instanzgruppe müssen sich in einer einzigen Zone befinden.
  3. Klicken Sie auf der Detailseite der Instanzgruppe auf Gruppe bearbeiten.
  4. Wählen Sie unter Autoscaling die Option Automatisch skalieren aus, um die Funktion zu aktivieren.
  5. Wählen Sie unter Messwerte für Autoscaling die Option Stackdriver-Monitoringmesswert aus.
  6. Wählen Sie unter Umfang des Messwertexports die Option Zeitachsen pro Instanz aus, um Autoscaling auf der Basis von Instanzmesswerten zu konfigurieren.
  7. Geben Sie unter Messwert-ID den Namen des Messwerts im folgenden Format ein: example.googleapis.com/path/to/metric.
  8. Wählen Sie optional unter Zusätzlicher Filterausdruck einen Filter aus, wenn Sie einzelne Werte aus Messwerten mit mehreren Streams oder Labels herausfiltern möchten. Weitere Informationen finden Sie unter Instanzmesswerte filtern.
  9. Geben Sie unter Nutzungsziel den Zielwert ein.
  10. Prüfen Sie unter Nutzungszieltyp, dass der Zieltyp zum Messwerttyp passt.
  11. Speichern Sie alle Einstellungen.

gcloud

Im gcloud-Befehlszeilentool wird beispielsweise mit dem folgenden Befehl ein Autoscaling erstellt, das den Zieltyp GAUGE verwendet. Neben dem Parameter --custom-metric-utilization ist beim Erstellen eines Autoscalings auch der Parameter --max-num-replicas erforderlich:

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
    --custom-metric-utilization metric=example.googleapis.com/path/to/metric,utilization-target-type=GAUGE,utilization-target=10 \
    --max-num-replicas 20 \
    --cool-down-period 90

Optional können Sie das Flag --cool-down-period verwenden, das dem Autoscaling mitteilt, wie viele Sekunden nach dem Starten einer neuen virtuellen Maschine gewartet werden soll, bevor das Autoscaling Nutzungsinformationen von ihr erfasst. Dadurch wird die möglicherweise zur Initialisierung der virtuellen Maschine erforderliche Zeit berücksichtigt, während der die gesammelten Auslastungsdaten für das Autoscaling nicht verlässlich sind. Die Standardwartezeit beträgt 60 Sekunden.

Verwenden Sie bei verwalteten Instanzgruppen mit mehreren Zonen das Flag --region, um anzugeben, wo die Instanzgruppe zu finden ist. Beispiel:

gcloud compute instance-groups managed set-autoscaling example-managed-instance-group \
    --custom-metric-utilization metric=example.googleapis.com/path/to/metric,utilization-target-type=GAUGE,utilization-target=10 \
    --max-num-replicas 20 \
    --cool-down-period 90 \
    --region us-central1

Eine vollständige Liste der verfügbaren Befehle und Flags für das gcloud-Tool finden Sie in der gcloud-Referenz.

API

Hinweis: Auch wenn das Autoscaling eine Funktion verwalteter Instanzgruppen ist, handelt es sich doch um eine separate API-Ressource. Beachten Sie dies, wenn Sie API-Anfragen für das Autoscaling erstellen.

Senden Sie in der API eine POST-Anfrage an die folgende URL, wobei myproject durch Ihre eigene Projekt-ID und us-central1-f durch die Zone Ihrer Wahl ersetzt wird:

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/autoscalers/

Der Text Ihrer Anfrage muss die Felder name, target und autoscalingPolicy enthalten. Geben Sie in autoscalingPolicy die Attribute maxNumReplicas und customMetricUtilizations an.

Optional können Sie den Parameter coolDownPeriodSec verwenden, der dem Autoscaling mitteilt, wie viele Sekunden es nach dem Starten einer neuen Instanz warten soll, bevor es Nutzungsdaten erfasst. Nach Ablauf der Wartezeit beginnt das Autoscaling, Nutzungsinformationen von der neuen Instanz zu erfassen und zu bestimmen, ob die Gruppe zusätzliche Instanzen benötigt. Dadurch wird die zur Initialisierung der Instanz erforderliche Zeit berücksichtigt, in der die erfassten Nutzungsdaten für das Autoscaling nicht zuverlässig sind. Die Standardwartezeit beträgt 60 Sekunden.

POST https://compute.googleapis.com/compute/v1/projects/myproject/zones/us-central1-f/autoscalers

{
 "name": "example-autoscaler",
 "target": "zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
 "autoscalingPolicy": {
  "maxNumReplicas": 10,
  "coolDownPeriodSec": 90,
  "customMetricUtilizations": [
   {
    "metric": "example.googleapis.com/some/metric/name",
    "utilizationTarget": 10,
    "utilizationTargetType": "GAUGE"
   }
  ]
 }
}

Instanzmesswerte filtern (Beta)

Sie können Filter auf Cloud Monitoring-Instanzmesswerte anwenden, um in einer einzelnen Zone verwaltete Instanzgruppen anhand individueller Werte aus Messwerten mit mehreren Streams oder Labels zu skalieren.

Voraussetzungen für das Filtern von Instanzmesswerten

Die Autoscaling-Filterung ist mit einigen Einschränkungen mit der Filtersyntax von Cloud Monitoring kompatibel. Für das Filtern von Instanzmesswerten gelten folgende Voraussetzungen:

  • Selektoren können nur mit dem Operator AND verknüpft werden.
  • Es kann lediglich der direkte Gleichheitsvergleichsoperator = verwendet werden, aber nur ohne Funktionen. Sie können beispielsweise nicht die Funktion startswith() mit dem Vergleichsoperator = verwenden.
  • Sie können keine Platzhalter verwenden.
  • Die Selektoren resource.type oder resource.label.* dürfen nicht festgelegt werden. Bei Instanzmesswerten werden immer alle Instanzressourcen aus der Gruppe verwendet.
  • Die besten Ergebnisse erzielen Sie, wenn Sie einen Filter erstellen, der spezifisch genug ist, um für jede Instanz eine einzelne Zeitachse zurückzugeben. Gibt der Filter mehrere Zeitachsen zurück, werden sie addiert.

Autoscaling für das Filtern von Messwerten konfigurieren

Verwenden Sie die Google Cloud Console, das gcloud-Befehlszeilentool (Beta) oder die Compute Engine Beta API zum Hinzufügen von Messwertfiltern für das Autoscaling einer verwalteten Instanzgruppe mit nur einer Zone.

Console

Das Erstellen eines Autoscalings, das einen Instanzmesswert filtert, verläuft fast analog zum Erstellen eines normalen instanzspezifischen Autoscalings. Sie geben lediglich noch einen Messwertfilter an. Der Messwert compute.googleapis.com/instance/network/received_bytes_count enthält beispielsweise die Labels instance_name und loadbalanced. So filtern Sie nach dem booleschen Wert loadbalanced:

  1. Rufen Sie die Seite Instanzgruppen auf.
  2. Erstellen Sie eine Instanzgruppe, sofern noch keine vorhanden ist. Klicken Sie andernfalls auf einen Namen in der Instanzgruppenliste, um die Seite mit den Details zu öffnen. Bei der Instanzgruppe muss es sich um eine Gruppe mit einer einzelnen Zone handeln.
  3. Klicken Sie auf der Detailseite der Instanzgruppe auf Gruppe bearbeiten.
  4. Wählen Sie unter Autoscaling die Option Automatisch skalieren aus, um die Funktion zu aktivieren.
  5. Wählen Sie unter Automatisch skalieren auf der Grundlage von die Option Stackdriver-Monitoringmesswert aus.
  6. Wählen Sie unter Umfang des Messwertexports die Option Zeitachsen pro Instanz aus, um Autoscaling auf der Basis von Instanzmesswerten zu konfigurieren.
  7. Geben Sie unter Messwert-ID den Namen des Messwerts ein. Beispiel: compute.googleapis.com/instance/network/received_bytes_count.
  8. Geben Sie unter Zusätzlicher Filterausdruck einen Filter ein. Beispiel: 'metric.label.loadbalanced = true'.
  9. Speichern Sie alle Einstellungen.

gcloud

Das Erstellen eines Autoscalings, das einen Instanzmesswert filtert, verläuft fast analog zum Erstellen eines normalen instanzspezifischen Autoscalings. Sie geben lediglich noch einen Messwertfilter und Flags für das Nutzungsziel und den Zieltyp an. Der Messwert compute.googleapis.com/instance/network/received_bytes_count enthält beispielsweise die Labels instance_name und loadbalanced. Um nach dem booleschen Wert loadbalanced zu filtern, geben Sie das Filter-Flag --stackdriver-metric-filter mit dem Wert 'metric.label.loadbalanced = true' an. Die Flags für das Nutzungsziel und den Zieltyp geben Sie einzeln an.

gcloud beta compute instance-groups managed set-autoscaling example-managed-instance-group \
    --update-stackdriver-metric=compute.googleapis.com/instance/network/received_bytes_count \
    --stackdriver-metric-utilization-target-utilization-target=10 \
    --stackdriver-metric-utilization-target-type=DELTA_PER_SEC \
    --stackdriver-metric-filter='metric.label.loadbalanced = true' \
    --max-num-replicas 20 \
    --cool-down-period 90

In diesem Beispiel wird das Autoscaling so konfiguriert, dass nur die loadbalanced-Traffic-Daten für das Auslastungsziel berücksichtigt werden.

Eine Liste der verfügbaren gcloud-Befehle und Flags finden Sie in der Referenz zum gcloud-Tool (Beta).

API

Hinweis: Auch wenn das Autoscaling eine Funktion verwalteter Instanzgruppen ist, handelt es sich doch um eine separate API-Ressource. Beachten Sie dies, wenn Sie API-Anfragen für das Autoscaling erstellen.

Das Erstellen eines Autoscalings, das einen Instanzmesswert filtert, verläuft fast analog zum Erstellen eines normalen instanzspezifischen Autoscalings. Sie geben lediglich noch einen Messwertfilter und Flags für das Nutzungsziel und den Zieltyp an. Der Messwert compute.googleapis.com/instance/network/received_bytes_count enthält beispielsweise die Labels instance_name und loadbalanced. Um nach dem booleschen Wert loadbalanced zu filtern, geben Sie den Parameter filter mit dem Wert "metric.label.loadbalanced = true" an.

Senden Sie in der API eine POST-Anfrage an die folgende URL, wobei myproject durch Ihre eigene Projekt-ID und us-central1-f durch die Zone Ihrer Wahl ersetzt wird. Der Anfragetext muss die Felder name, target und autoscalingPolicy enthalten. Geben Sie in autoscalingPolicy die Attribute maxNumReplicas und customMetricUtilizations an.

POST https://compute.googleapis.com/compute/beta/projects/myproject/zones/us-central1-f/autoscalers

{
 "name": "example-autoscaler",
 "target": "zones/us-central1-f/instanceGroupManagers/example-managed-instance-group",
 "autoscalingPolicy": {
  "maxNumReplicas": 10,
  "coolDownPeriodSec": 90,
  "customMetricUtilizations": [
   {
    "metric": "compute.googleapis.com/instance/network/received_bytes_count",
    "filter": "metric.label.loadbalanced = true",
    "utilizationTarget": 10,
    "utilizationTargetType": "DELTA_PER_SEC"
   }
  ]
 }
}

In diesem Beispiel wird das Autoscaling so konfiguriert, dass nur die loadbalanced-Traffic-Daten für das Auslastungsziel berücksichtigt werden.

Gruppenmesswerte (Beta)

Gruppenmesswerte ermöglichen Autoscaling auf Basis eines Standard- oder benutzerdefinierten Messwerts, der keine instanzspezifischen Auslastungsdaten exportiert. Stattdessen wird die Gruppe basierend auf einem Wert skaliert, der für die gesamte Gruppe gilt und angibt, wie viel Arbeit für die Gruppe verfügbar und wie hoch die Auslastung der Gruppe ist. Die Gruppe wird basierend auf der Fluktuation dieses Gruppenmesswerts und der von Ihnen definierten Konfiguration skaliert.

Wenn Sie Gruppenmesswerte für das Autoscaling verwenden, müssen Sie festlegen, wie das Autoscaling Instanzen relativ zum Messwert bereitstellen soll:

  • Instanzzuweisung: Mit einer Instanzzuweisung geben Sie an, dass das Autoscaling Instanzen abhängig davon einfügen oder entfernen soll, wie viel Arbeit für jede Instanz verfügbar ist. Mit dem Wert für diesen Parameter geben Sie an, wie viel Arbeit jede Instanz übernehmen soll. Der Wert 2 bedeutet zum Beispiel, dass jeder Instanz zwei Arbeitseinheiten zugewiesen werden. Bei 0.5 wird jeder Instanz nur eine halbe Arbeitseinheit zugewiesen. Das Autoscaling fügt der verwalteten Instanzgruppe ausreichend Instanzen hinzu, um sicherzugehen, dass genügend Instanzen vorhanden sind, um die verfügbare Arbeit, wie im Messwert angegeben, zu erledigen. Lautet der Messwert 10 und Sie haben jeder Instanz 0.5 Arbeitseinheiten zugewiesen, erstellt das Autoscaling 20 Instanzen in der verwalteten Instanzgruppe. Durch die Skalierung mit Instanzzuweisung kann die Instanzgruppe auf 0 Instanzen verkleinert werden, wenn der Messwert auf 0 fällt, und wieder hochskaliert werden, wenn der Wert über 0 ansteigt. Das folgende Diagramm zeigt die proportionale Beziehung zwischen dem Messwert und der Anzahl der Instanzen bei der Skalierung mit einer Instanzzuweisungsrichtlinie. Die proportionale Beziehung zwischen dem Messwert und der Anzahl der Instanzen.
  • Nutzungsziel: Geben Sie ein Nutzungsziel an, wenn Sie möchten, dass Autoscaling einen Messwert durch Hinzufügen oder Entfernen von Instanzen auf einem bestimmten Wert hält. Liegt der Messwert über dem angegebenen Ziel, fügt Autoscaling schrittweise Instanzen hinzu, bis der Messwert auf den Zielwert absinkt. Liegt der Messwert unter dem angegebenen Ziel, entfernt Autoscaling schrittweise Instanzen, bis der Messwert auf den Zielwert ansteigt. Bei der Skalierung mit einem Nutzungsziel kann die Gruppe nicht auf 0 Instanzen verkleinert werden. Das folgende Diagramm zeigt, wie das Autoscaling Instanzen als Reaktion auf einen Messwert hinzufügt und entfernt, um das Nutzungsziel aufrechtzuerhalten. Autoscaling behält durch Hinzufügen und Entfernen von Instanzen eine bestimmte Zielauslastung bei.

Die Anwendungsfälle der jeweiligen Option:

  • Instanzzuweisung: Die Größe der verwalteten Instanzgruppen wird basierend auf der Anzahl unbestätigter Nachrichten in einem Pub/Sub-Abo oder dem QPS-Gesamtwert (Queries Per Second, Abfragen pro Sekunde) eines Netzwerkendpunkts skaliert.
  • Nutzungsziel: Die Größe der verwalteten Instanzgruppen wird basierend auf einem Nutzungsziel für einen benutzerdefinierten Messwert skaliert, bei dem es sich nicht um einen instanzspezifischen Standardmesswert zur CPU- oder Speicherauslastung handelt. Sie können die Gruppe beispielsweise basierend auf einem benutzerdefinierten Latenzmesswert skalieren.

Wenn Sie Autoscaling mit Gruppenmesswerten konfigurieren und eine Instanzzuweisung angeben, können Ihre Instanzgruppen auf 0 Instanzen skalieren. Wenn Ihr Messwert angibt, dass Ihre Instanzgruppe nichts zu verarbeiten hat, wird die Gruppe auf 0 Instanzen skaliert, bis anhand des Messwerts erkennbar wird, dass neue Arbeit verfügbar ist. Im Gegensatz zur gruppenbasierten Instanzzuweisung werden für das instanzbasierte Autoscaling von mindestens einer Instanz Messwerte zur Ressourcenauslastung benötigt, weshalb die Gruppe nicht unter eine Größe von 1 skaliert werden kann.

Gruppenmesswerte filtern

Sie können Filter auf Cloud Monitoring-Gruppenmesswerte anwenden, um verwaltete Instanzgruppen anhand individueller Werte aus Messwerten mit mehreren Streams oder Labels zu skalieren.

Voraussetzungen für das Filtern von Gruppenmesswerten

Die Autoscaling-Filterung ist mit einigen Einschränkungen mit der Filtersyntax von Cloud Monitoring kompatibel. Für das Filtern von Gruppenmesswerten gelten folgende Voraussetzungen:

  • Selektoren können nur mit dem Operator AND verknüpft werden.
  • Sie können den direkten Gleichheitsvergleichsoperator = nicht mit Funktionen für jeden Selektor verwenden.
  • Sie können keine Platzhalter verwenden.
  • Sie können im Filter den Messwerttyp-Selektor metric.type = "..." angeben und auch das ursprüngliche metric-Feld einschließen. Optional können Sie nur das Feld metric verwenden. Der Messwert muss folgende Voraussetzungen erfüllen:
    • Der Messwert muss an mindestens einer Stelle angegeben werden.
    • Der Messwert kann an beiden Stellen angegeben werden, muss aber gleich sein.
  • Sie müssen den resource.type-Selektor festlegen. Sie können ihn jedoch nicht auf gce_instance festlegen, wenn Sie für die Skalierung Gruppenmesswerte verwenden möchten.
  • Für ein optimales Ergebnis sollte der Filter so spezifisch sein, dass für jede Gruppe eine einzelne Zeitachse zurückgegeben wird. Gibt der Filter mehrere Zeitachsen zurück, werden sie addiert.

Autoscaling für gruppenbasierte Monitoringmesswerte konfigurieren

Verwenden Sie die Google Cloud Console, das gcloud-Befehlszeilentool (Beta) oder die Compute Engine API (Beta) zum Konfigurieren des Autoscalings mit Gruppenmesswerten für eine verwaltete Instanzgruppe mit nur einer Zone.

Console

  1. Rufen Sie die Seite Instanzgruppen auf.
  2. Erstellen Sie eine Instanzgruppe, sofern noch keine vorhanden ist. Klicken Sie andernfalls auf einen Namen in der Instanzgruppenliste, um die Seite mit den Details zu öffnen. Die Instanzgruppe muss sich in einer einzelnen Zone befinden.
  3. Klicken Sie auf der Detailseite der Instanzgruppe auf Gruppe bearbeiten.
  4. Wählen Sie unter Autoscaling die Option Automatisch skalieren aus, um die Funktion zu aktivieren.
  5. Wählen Sie unter Automatisch skalieren auf der Grundlage von die Option Stackdriver-Monitoringmesswert aus.
  6. Wählen Sie unter Umfang des Messwertexports die Option Einzelne Zeitachse pro Gruppe aus.
  7. Geben Sie unter Messwert-ID den Namen des Messwerts im folgenden Format an: example.googleapis.com/path/to/metric.
  8. Geben Sie den Messwertressourcentyp an.
  9. Geben Sie einen zusätzlichen Filterausdruck an, um einzelne Werte aus Messwerten mit mehreren Streams oder Labels zu verwenden. Der Filter muss die Voraussetzungen für die Autoscaling-Filterung erfüllen.
  10. Wählen Sie unter Skalierungsrichtlinie entweder Instanzzuweisung oder Nutzungsziel aus.
  11. Wenn Sie eine Instanzzuweisungsrichtlinie auswählen, geben Sie mit einem Wert für Zuweisung einzelner Instanzen an, wie viel Arbeit den Instanzen in der verwalteten Instanzgruppe zugewiesen wird. Der Wert 2 bedeutet zum Beispiel, dass jeder Instanz zwei Arbeitseinheiten zugewiesen werden. Autoscaling hält genügend Instanzen bereit, um die (laut Messwert) verfügbare Arbeit zu erledigen. Lautet der Messwert 10 und Sie haben jeder Instanz 2 Arbeitseinheiten zugewiesen, erstellt das Autoscaling 5 Instanzen in der verwalteten Instanzgruppe.
  12. Wenn Sie eine Nutzungszielrichtlinie auswählen:
    • Geben Sie einen Wert für das Nutzungsziel an, das für den Messwert steht, den Autoscaling versuchen wird einzuhalten.
    • Wählen Sie den Nutzungszieltyp aus, der dem Messwerttyp entspricht.
  13. Speichern Sie alle Einstellungen.

gcloud

Das Erstellen eines Autoscalings für eine verwaltete Instanzgruppe verläuft fast analog zum Erstellen eines instanzbasierten Autoscalings. Sie müssen lediglich noch das Flag --update-stackdriver-metric angeben. Mit den folgenden Flags können Sie festlegen, wie Autoscaling Instanzen bereitstellt:

  • Instanzzuweisung: Geben Sie das Flag --stackdriver-metric-single-instance-assignment an.
  • Nutzungsziel: Geben Sie das Flag --stackdriver-metric-utilization-target an.

Instanzzuweisung:

Geben Sie einen Messwert an, den Sie messen möchten, und geben Sie das Flag --stackdriver-metric-single-instance-assignment an, um festzulegen, wie viel Arbeit jede Instanz übernehmen soll. Außerdem müssen Sie mit dem Flag --stackdriver-metric-filter einen Filter für den Messwert angeben.

gcloud beta compute instance-groups managed set-autoscaling [GROUP_NAME] \
    --zone=[ZONE] \
    --max-num-replicas=[MAX_INSTANCES] \
    --min-num-replicas=[MIN_INSTANCES] \
    --update-stackdriver-metric='[METRIC_URL]' \
    --stackdriver-metric-filter='[METRIC_FILTER]' \
    --stackdriver-metric-single-instance-assignment=[INSTANCE_ASSIGNMENT]

Dabei gilt:

  • [GROUP_NAME] ist der Name der verwalteten Instanzgruppe, der Sie Autoscaling hinzufügen möchten.
  • [ZONE] ist die Zone, in der sich die verwaltete Instanzgruppe befindet. Für Autoscaling mit Gruppenmesswerten kann keine Region angegeben werden.
  • [MAX_INSTANCES] ist das Limit für die Anzahl der Instanzen, die das Autoscaling der verwalteten Instanzgruppe hinzufügen kann.
  • [MIN_INSTANCES] ist das Limit für die minimale Anzahl von Instanzen, die das Autoscaling in der verwalteten Instanzgruppe bereitstellen kann.
  • [METRIC_URL] ist eine protokollfreie URL eines Monitoring-Messwerts.
  • [METRIC_FILTER] ist ein Cloud Monitoring-Filter, in dem Sie einen Monitoring-Filter mit einer relevanten TimeSeries und einer MonitoredResource angeben. Der Filter muss die Voraussetzungen für die Autoscaling-Filterung erfüllen.
  • [INSTANCE_ASSIGNMENT] ist die Menge an Arbeit, die jeder Instanz in der verwalteten Instanzgruppe zugewiesen wird. Der Wert 2 bedeutet zum Beispiel, dass jeder Instanz zwei Arbeitseinheiten zugewiesen werden. Bei 0.5 wird jeder Instanz nur eine halbe Arbeitseinheit zugewiesen. Das Autoscaling fügt der verwalteten Instanzgruppe ausreichend Instanzen hinzu, um sicherzugehen, dass genügend Instanzen vorhanden sind, um die verfügbare Arbeit, wie im Messwert angegeben, zu erledigen. Lautet der Messwert 10 und Sie haben jeder Instanz 0.5 Arbeitseinheiten zugewiesen, erstellt das Autoscaling 20 Instanzen in der verwalteten Instanzgruppe.

Nutzungsziel:

Manchmal ist es sinnvoller, Nutzungsziele und Gruppenmesswerte zu kombinieren, anstatt eine Anzahl von Instanzen relativ zum Wert des von Ihrem Autoscaling gemessenen Messwerts anzugeben. Sie können auch einen Gruppenmesswert für das Autoscaling verwenden, jedoch wird weiterhin versucht, das Nutzungsziel zu erreichen. Geben Sie Ziel und Zieltyp mit dem Flag --stackdriver-metric-utilization-target an. Außerdem müssen Sie mit dem Flag --stackdriver-metric-filter einen Filter für den Messwert angeben.

gcloud beta compute instance-groups managed set-autoscaling [GROUP_NAME] \
   --zone=[ZONE] \
   --max-num-replicas=[MAX_INSTANCES] \
   --min-num-replicas=[MIN_INSTANCES] \
   --update-stackdriver-metric='[METRIC_URL]' \
   --stackdriver-metric-filter='[METRIC_FILTER]' \
   --stackdriver-metric-utilization-target=[TARGET_VALUE] \
   --stackdriver-metric-utilization-target-type=[TARGET_TYPE]

Dabei gilt:

  • [GROUP_NAME] ist der Name der verwalteten Instanzgruppe, der Sie Autoscaling hinzufügen möchten.
  • [ZONE] ist die Zone, in der sich die verwaltete Instanzgruppe befindet. Für Autoscaling mit Gruppenmesswerten kann keine Region angegeben werden.
  • [MAX_INSTANCES] ist das Limit für die Anzahl der Instanzen, die das Autoscaling der verwalteten Instanzgruppe hinzufügen kann.
  • [MIN_INSTANCES] ist das Limit für die minimale Anzahl von Instanzen, die das Autoscaling in der verwalteten Instanzgruppe bereitstellen kann.
  • [METRIC_URL] ist eine protokollfreie URL eines Monitoring-Messwerts.
  • [METRIC_FILTER] ist ein Cloud Monitoring-Filter, in dem Sie einen Monitoring-Filter mit einer relevanten TimeSeries und einer MonitoredResource angeben. Sie müssen einen resource.type-Wert angeben. Sie können allerdings nicht gce_instance angeben, wenn Sie anhand von Gruppenmesswerten skalieren möchten. Der Filter muss die Voraussetzungen für die Autoscaling-Filterung erfüllen.
  • [TARGET_VALUE] ist der Messwert, den Autoscaling aufrechtzuerhalten versucht.
  • [TARGET_TYPE] ist der Werttyp des Messwerts. Sie können das Autoscaling den Messwert als GAUGE, nach delta-per-minute des Werts oder nach delta-per-second des Werts überwachen lassen.

Eine Liste der verfügbaren Befehle und Flags für das Autoscaling im gcloud-Befehlszeilentool, die mit dem gruppenbasierten Autoscaling verwendet werden können, finden Sie in der Referenz zum gcloud-Befehlszeilentool (Beta).

API

Hinweis: Auch wenn das Autoscaling eine Funktion verwalteter Instanzgruppen ist, handelt es sich bei [autoscalers](/compute/docs/reference/beta/autoscalers) um eine separate API-Ressource. Beachten Sie dies, wenn Sie API-Anfragen für das Autoscaling erstellen.

Erstellen Sie ein Autoscaling für eine verwaltete Instanzgruppe. Mit den folgenden Parametern bestimmen Sie, wie das Autoscaling Instanzen bereitstellen soll:

  • Instanzzuweisung: Geben Sie den Parameter singleInstanceAssignment an.
  • Nutzungsziel: Geben Sie den Parameter utilizationTarget an.

Instanzzuweisung:

In der API verwenden Sie eine POST-Anfrage, um ein Autoscaling zu erstellen. Geben Sie im Anfragetext die regulären Parameter an, die Sie auch zum Erstellen eines instanzbasierten Autoscalings verwenden würden, und ergänzen Sie diese noch um den Parameter single-instance-assignment. Der Parameter single-instance-assignment gibt an, wie viel Arbeit eine einzelne Instanz übernehmen soll.

POST https://compute.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/autoscalers

{
 "name": "example-autoscaler",
 "target": "zones/[ZONE]/instanceGroupManagers/[GROUP_NAME]",
 "autoscalingPolicy": {
  "maxNumReplicas": [MAX_INSTANCES],
  "minNumReplicas": [MIN_INSTANCES],
  "customMetricUtilizations": [
    {
      "metric": "[METRIC_URL]",
      "filter": "[METRIC_FILTER]",
      "singleInstanceAssignment": [INSTANCE_ASSIGNMENT]
    }
  ],
 }
}

Dabei gilt:

  • [PROJECT_ID] ist die Projekt-ID.
  • [ZONE] ist die Zone, in der sich die verwaltete Instanzgruppe befindet.
  • [GROUP_NAME] ist der Name der verwalteten Instanzgruppe, der Sie Autoscaling hinzufügen möchten.
  • [MAX_INSTANCES] ist das Limit für die Anzahl der Instanzen, die das Autoscaling der verwalteten Instanzgruppe hinzufügen kann.
  • [MIN_INSTANCES] ist das Limit für die minimale Anzahl von Instanzen, die das Autoscaling in der verwalteten Instanzgruppe bereitstellen kann.
  • [METRIC_URL] ist eine protokollfreie URL eines Monitoring-Messwerts.
  • [METRIC_FILTER] ist ein Cloud Monitoring-Filter, in dem Sie einen Monitoring-Filter mit einer relevanten TimeSeries und einer MonitoredResource angeben. Sie müssen einen resource.type-Wert angeben. Sie können allerdings nicht gce_instance angeben, wenn Sie anhand von Gruppenmesswerten skalieren möchten. Der Filter muss die Voraussetzungen für die Autoscaling-Filterung erfüllen.
  • [INSTANCE_ASSIGNMENT] ist die Menge an Arbeit, die jeder Instanz in der verwalteten Instanzgruppe zugewiesen wird. Der Wert 2 bedeutet zum Beispiel, dass jeder Instanz zwei Arbeitseinheiten zugewiesen werden. Bei 0.5 wird jeder Instanz nur eine halbe Arbeitseinheit zugewiesen. Das Autoscaling fügt der verwalteten Instanzgruppe ausreichend Instanzen hinzu, um sicherzugehen, dass genügend Instanzen vorhanden sind, um die verfügbare Arbeit, wie im Messwert angegeben, zu erledigen. Lautet der Messwert 10 und Sie haben jeder Instanz 0.5 Arbeitseinheiten zugewiesen, erstellt das Autoscaling 20 Instanzen in der verwalteten Instanzgruppe.

Nutzungsziel:

Manchmal ist es sinnvoller, Nutzungsziele und Gruppenmesswerte zu kombinieren, anstatt eine Anzahl von Instanzen relativ zum Wert des von Ihrem Autoscaling gemessenen Messwerts anzugeben. Sie können auch einen Gruppenmesswert für das Autoscaling verwenden, jedoch wird weiterhin versucht, das Nutzungsziel zu erreichen. Diese Ziele werden mit dem Parameter utilizationTarget angegeben. Außerdem müssen Sie mit dem Parameter filter einen Filter für den Messwert angeben.

POST https://compute.googleapis.com/compute/beta/projects/[PROJECT_ID]/zones/[ZONE]/autoscalers

{
 "name": "example-autoscaler",
 "target": "zones/[ZONE]/instanceGroupManagers/[GROUP_NAME]",
 "autoscalingPolicy": {
  "maxNumReplicas": [MAX_INSTANCES],
  "minNumReplicas": [MIN_INSTANCES],
  "customMetricUtilizations": [
    {
      "metric": "[METRIC_URL]",
      "filter": "[METRIC_FILTER]",
      "utilizationTarget": [TARGET_VALUE],
      "utilizationTargetType": [TARGET_TYPE]
    }
  ],
 }
}

Dabei gilt:

  • [GROUP_NAME] ist der Name der verwalteten Instanzgruppe, der Sie Autoscaling hinzufügen möchten.
  • [ZONE] ist die Zone, in der sich die verwaltete Instanzgruppe befindet.
  • [MAX_INSTANCES] ist das Limit für die Anzahl der Instanzen, die das Autoscaling der verwalteten Instanzgruppe hinzufügen kann.
  • [MIN_INSTANCES] ist das Limit für die minimale Anzahl von Instanzen, die das Autoscaling in der verwalteten Instanzgruppe bereitstellen kann.
  • [METRIC_URL] ist eine protokollfreie URL eines Monitoring-Messwerts.
  • [METRIC_FILTER] ist ein Cloud Monitoring-Filter, in dem Sie einen Monitoring-Filter mit einer relevanten TimeSeries und einer MonitoredResource angeben. Sie müssen einen resource.type-Wert angeben. Sie können allerdings nicht gce_instance angeben, wenn Sie anhand von Gruppenmesswerten skalieren möchten. Der Filter muss die Voraussetzungen für die Autoscaling-Filterung erfüllen.
  • [TARGET_VALUE] ist der Messwert, den Autoscaling aufrechtzuerhalten versucht.
  • [TARGET_TYPE] ist der Werttyp des Messwerts. Sie können das Autoscaling den Messwert als GAUGE, nach DELTA_PER_MINUTE des Werts oder nach DELTA_PER_SECOND des Werts überwachen lassen.

Beispiel: Mithilfe einer Instanzzuweisung auf Basis einer Pub/Sub-Warteschlange skalieren

Ausgangssituation:

  • Ein aktives Pub/Sub-Thema empfängt Nachrichten von einer bestimmten Quelle.
  • Ein aktives Pub/Sub-Abo ist in einer Pull-Konfiguration mit dem Thema verbunden. Das Abo heißt our-subscription.
  • Ein Pool von Workern bezieht Nachrichten über das Abo und verarbeitet sie. Der Pool ist eine verwaltete Instanzgruppe mit nur einer Zone namens our-instance-group und befindet sich in der Zone us-central1-a. Der Pool darf 100 Worker nicht überschreiten und soll auf 0 Worker verkleinert werden, wenn sich keine Nachrichten in der Warteschlange befinden.
  • Im Schnitt verarbeitet ein Worker eine Nachricht pro Minute.

Betrachten wir verschiedene Ansätze, um den optimalen Wert für die Instanzzuweisung zu bestimmen:

  • Sie können 1 als Instanzzuweisungswert wählen, um alle Nachrichten in der Warteschlange so schnell wie möglich zu verarbeiten. Dies erstellt für jede Nachricht in der Warteschlange eine Instanz (begrenzt auf die maximale Anzahl von Instanzen in der Gruppe). Dies kann jedoch zu einer Überdimensionierung führen. Im schlimmsten Fall wird eine Instanz erstellt, um genau eine Nachricht zu verarbeiten, bevor sie durch Autoscaling wieder beendet wird. Dadurch werden Ressourcen wesentlich länger belegt als für die eigentliche Arbeit nötig.
    • Wenn die Worker mehrere Nachrichten gleichzeitig verarbeiten können, ist es sinnvoll, den Wert auf die Anzahl gleichzeitiger Prozesse zu erhöhen.
    • Beachten Sie, dass in diesem Beispiel ein Wert unter 1 nicht sinnvoll ist, da eine Nachricht nicht von mehr als einem Worker verarbeitet werden kann.
  • Wenn es weniger auf die Verarbeitungslatenz als auf die Ressourcenauslastung und die Gesamtkosten ankommt, können Sie alternativ berechnen, wie viele Nachrichten jede Instanz innerhalb ihrer Lebensdauer verarbeiten muss, um effizient genutzt zu werden. Berücksichtigen Sie die Zeit für das Starten und Herunterfahren sowie die Tatsache, dass Autoscaling Instanzen nicht sofort löscht. Davon ausgehend, dass für das Starten und Herunterfahren etwa 5 Minuten benötigt werden und das Autoscaling Instanzen erst nach etwa 10 Minuten löscht, berechnen Sie, dass es effizient ist, eine zusätzliche Instanz in der Gruppe zu erstellen, solange sie mindestens 15 Nachrichten verarbeiten kann, bevor sie vom Autoscaling wieder beendet wird. Dies führt zu einem Leistungsaufwand von maximal 25 % aufgrund der Zeit, die für das Erstellen, Starten und Herunterfahren der Instanz aufgewendet werden muss. In diesem Fall können Sie die Instanzzuweisung auf 15 setzen.
  • Beide Ansätze lassen sich ausgleichen, sodass sich ein Wert zwischen 1 und 15 einpendelt, je nachdem, welcher Faktor Priorität hat – die Verarbeitungslatenz oder die Ressourcenauslastung.

Unter den verfügbaren Pub/Sub-Messwerten gibt es einen Messwert, der die Länge der Abo-Warteschlange darstellt: subscription/num_undelivered_messages.

Beachten Sie, dass dieser Messwert die Gesamtzahl der Nachrichten in der Warteschlange exportiert, einschließlich Nachrichten, die gerade verarbeitet werden, aber noch nicht bestätigt wurden. Verwenden Sie keinen Messwert, der die zu verarbeitenden Nachrichten nicht enthält. Er könnte auf 0 fallen, obwohl noch Arbeit zu erledigen ist, wodurch das Autoscaling veranlasst wird, nach unten zu skalieren und die eigentliche Arbeit unterbrochen wird.

Sie können jetzt Autoscaling für die Warteschlange konfigurieren:

gcloud beta compute instance-groups managed set-autoscaling \
    our-instance-group \
    --zone=us-central1-a \
    --max-num-replicas=100 \
    --min-num-replicas=0 \
    --update-stackdriver-metric=pubsub.googleapis.com/subscription/num_undelivered_messages \
    --stackdriver-metric-filter="resource.type = pubsub_subscription AND resource.label.subscription_id = our-subscription" \
    --stackdriver-metric-single-instance-assignment=15

Beispiel: Mithilfe eines Nutzungsziels basierend auf der durchschnittlichen Latenz skalieren

Es kann Situationen geben, in denen der Messwert, der ein bestimmtes Signal liefert, nicht die insgesamt verfügbare Menge an Arbeit bzw. eine andere relevante Ressource darstellt, wie im vorherigen Beispiel, und stattdessen einen Durchschnitt, ein Perzentil oder ein anderes statistisches Attribut repräsentiert. Im folgenden Beispiel wird davon ausgegangen, dass die Skalierung auf Basis der durchschnittlichen Verarbeitungslatenz der Gruppe erfolgt.

Ausgangssituation:

  • Eine verwaltete Instanzgruppe mit dem Namen our-instance-group wird für eine bestimmte Aufgabe zugewiesen. Die Gruppe befindet sich in der Zone us-central1-a.
  • Sie haben einen benutzerdefinierten Cloud Monitoring-Messwert, der einen Wert exportiert, der auf einem bestimmten Level gehalten werden soll. In diesem Beispiel wird davon ausgegangen, dass der Messwert die durchschnittliche Latenz von Verarbeitungsabfragen darstellt, die der Gruppe zugewiesen sind.
    • Der benutzerdefinierte Messwert heißt custom.googleapis.com/example_average_latency.
    • Der benutzerdefinierte Messwert hat ein Label mit einem Schlüssel namens group_name und einem Wert, der dem Namen der Instanzgruppe, our-instance-group, entspricht.
    • Der benutzerdefinierte Messwert exportiert Daten für die globale überwachte Ressource, d. h., sie ist keiner bestimmten Instanz zugeordnet.

Sie haben festgestellt, dass Sie, wenn der Messwert über einen bestimmten Wert hinausgeht, der Gruppe weitere Instanzen hinzufügen müssen, um die Auslastung zu bewältigen. Wenn er hingegen sinkt, können Sie einige Ressourcen freigeben. Beim Autoscaling werden Instanzen in einem Verhältnis hinzugefügt oder entfernt, das proportional zur Differenz des Messwerts zum Zielwert ist. Für dieses Beispiel ist der berechnete Zielwert 100.

Sie können das Autoscaling jetzt für die Gruppe auf Basis eines Gruppennutzungsziels von 100 konfigurieren. Dies ist der Messwert, den Autoscaling versuchen muss aufrechtzuerhalten:

gcloud beta compute instance-groups managed set-autoscaling \
    our-instance-group \
    --zone=us-central1-a \
    --max-num-replicas=100 \
    --min-num-replicas=0 \
    --update-stackdriver-metric=custom.googleapis.com/example_average_latency \
    --stackdriver-metric-filter "resource.type = global AND metric.label.group_name = our-instance-group" \
    --stackdriver-metric-utilization-target=100 \
    --stackdriver-metric-utilization-target-type=delta-per-second