L'autoscaling basé sur les métriques Cloud Monitoring vous permet d'ajuster la capacité nécessaire en fonction des mesures de votre application. Lorsque vous effectuez l'autoscaling d'un groupe d'instances géré en fonction d'une métrique, l'autoscaler crée des VM lorsque la valeur de la métrique ajoute et supprime des VM lorsque la valeur diminue.
Par exemple, vous pouvez définir le nombre de VM dont vous avez besoin par nombre d'utilisateurs, la latence ou le nombre de messages dans un abonnement Pub/Sub. Vous pouvez utiliser les métriques intégrées fournies par le service Monitoring ou les métriques personnalisées que vous exportez depuis votre application.
Ce document explique comment effectuer l'autoscaling d'un groupe d'instances géré (Managed Instance Group, MIG) en fonction des métriques Monitoring.
Vous pouvez également effectuer l'autoscaling d'un groupe d'instances géré en fonction de l'utilisation du processeur, de la capacité de diffusion de l'équilibrage de charge ou des planifications.
Avant de commencer
- Découvrez les principes de base de l'autoscaler.
- Découvrez les concepts de métriques Monitoring utilisés dans une configuration d'autoscaling.
- Si vous souhaitez effectuer un autoscaling en fonction d'une métrique d'agent Ops, installez l'agent Ops.
-
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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- 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.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
-
Limites
Le scaling basé sur les métriques Monitoring est encadré par les limites applicables à tous les autoscalers, ainsi que par les limites suivantes :
- Vous pouvez configurer l'autoscaling en fonction de cinq métriques Monitoring par MIG.
- Vous pouvez procéder à un autoscaling en fonction des métriques de type
INT64
ouDOUBLE
uniquement. Les autres types de valeurs ne sont pas acceptés. - Vous ne pouvez pas configurer la même métrique plusieurs fois dans une règle d'autoscaling.
Configurer l'autoscaling en fonction des métriques
Vous pouvez utiliser une valeur de métrique Monitoring de deux manières différentes pour l'autoscaling :
Cible d'utilisation : si vous souhaitez que l'autoscaler conserve une métrique à une valeur spécifique, configurez une cible d'utilisation. L'autoscaler crée des VM lorsque la valeur de la métrique est supérieure à la cible et les supprime lorsque la valeur de la métrique est inférieure. Cela est utile pour des métriques telles que le trafic réseau, l'utilisation de la mémoire/disque ou la latence moyenne de votre application. Le schéma suivant montre comment l'autoscaler ajoute et supprime des VM en réponse à une valeur de métrique afin de maintenir une cible d'utilisation.
Attribution d'une seule instance : si vous souhaitez effectuer un autoscaling en fonction du volume de travail disponible pour l'attribution à chaque VM, configurez une attribution d'instance unique. L'attribution d'une seule instance que vous spécifiez représente le volume de travail à gérer pour chaque VM. L'autoscaler divise la valeur de la métrique par la valeur d'attribution d'une seule instance pour calculer le nombre de VM nécessaires. Par exemple, si la métrique est égale à 100 et que l'attribution d'une seule instance est de 5, l'autoscaler crée 20 VM dans le MIG. Cela est utile pour les métriques qui reflètent la quantité de travail, comme la longueur de la file d'attente Pub/Sub ou le nombre de tâches par lot. L'attribution d'instance unique ne s'applique pas aux métriques provenant de chaque VM. Le schéma suivant montre la relation proportionnelle entre la valeur de la métrique et le nombre de VM lors du scaling avec une seule instance.
Procéder à l'autoscaling pour maintenir une métrique à une valeur cible
Lorsque vous souhaitez conserver une métrique à une valeur cible, spécifiez une cible d'utilisation. L'autoscaler crée des VM lorsque la valeur de la métrique est supérieure à la cible et les supprime lorsque la valeur de la métrique est inférieure.
Si la métrique provient de chaque VM de votre MIG, l'autoscaler prend la valeur moyenne de la métrique sur toutes les VM du MIG et la compare à la cible d'utilisation. Par exemple, si vous souhaitez effectuer un autoscaling à l'aide de la métrique
tcp_connections
qui indique le nombre de connexions TCP sur une VM, l'autoscaler utilise un nombre moyen de connexions TCP à toutes les VM du MIG à comparer à la cible. Lorsque vous utilisez des métriques provenant d'une VM, celles-ci ne peuvent pas effectuer de scaling vertical vers0
, car l'autoscaler nécessite au moins une VM de publier une valeur de métrique.Si la métrique s'applique à l'ensemble du MIG et ne provient pas des VM de votre MIG, l'autoscaler compare la valeur de la métrique à la cible d'utilisation. Par exemple, vous pouvez utiliser une métrique personnalisée qui mesure la latence de votre application.
Lorsque votre métrique comporte plusieurs valeurs, appliquez un filtre pour effectuer l'autoscaling en utilisant une valeur individuelle de la métrique. Pour plus de détails sur les filtres de métriques et les autres champs que vous pouvez utiliser dans votre configuration, consultez la page Concepts de métriques Monitoring.
Console
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Si vous ne disposez d'aucun groupe d'instances géré, créez-en un. Sinon, cliquez sur le nom d'un MIG dans la liste pour ouvrir la page de ce groupe d'instances.
Cliquez sur Modifier.
Si aucune configuration d'autoscaling n'existe :
- Sous Autoscaling, cliquez sur Configurer l'autoscaling.
- Sous Mode autoscaling, sélectionnez Activé : ajouter et supprimer des instances au groupe pour activer l'autoscaling.
Sous Autoscaling, dans la section Signaux d'autoscaling, si un signal apparaît pour une métrique Cloud Monitoring, vous pouvez cliquer dessus pour le modifier ou cliquer sur Ajouter un signal pour ajouter un nouveau signal.
Définissez le champ Type de signal sur Métrique Cloud Monitoring.
Cliquez sur Configurer. Dans le volet Ressource et métrique qui s'affiche, procédez comme suit :
- Cliquez sur Sélectionner une métrique.
- Sélectionnez la métrique que vous souhaitez utiliser pour l'autoscaling. Vous pouvez filtrer les métriques en fonction de n'importe quel mot clé (par exemple, mémoire, octets ou disque).
- Cliquez sur Appliquer. Le volet affiche un graphique indiquant les données de la métrique sélectionnée.
Si vous souhaitez utiliser des données spécifiques de la métrique, ajoutez un filtre basé sur les libellés comme suit :
- Dans la section Filtres, cliquez sur Ajouter un filtre.
- Sélectionnez un libellé et saisissez une valeur.
- Cliquez sur OK. Le graphique est actualisé pour afficher la valeur filtrée de la métrique.
Pour afficher la valeur agrégée de la métrique qui sera utilisée pour procéder à l'autoscaling de votre groupe d'instances géré, cliquez sur le bouton Afficher l'agrégation dans le graphique. Le graphique s'actualise pour afficher la valeur agrégée.
Dans la section Options de cible de métrique pour l'autoscaling, sélectionnez Cible d'utilisation.
Indiquez les éléments suivants :
- Cible d'utilisation : spécifiez la valeur que l'autoscaler doit maintenir. Il s'agit d'un nombre positif. Par exemple, 24,5 et 100 sont des valeurs acceptables.
- Type de cible d'utilisation : sélectionnez un type de cible correspondant au type de mesure de la métrique. Pour effectuer des comparaisons précises, si la cible d'utilisation est mesurée par seconde, utilisez delta/seconde comme type de cible. De même, utilisez delta/minute pour une cible d'utilisation mesurée par minute.
- Jauge : l'autoscaler calcule la valeur moyenne des données collectées au cours des dernières minutes et la compare à la cible d'utilisation.
- Delta/minute : l'autoscaler calcule le taux moyen de croissance par minute et le compare à la cible d'utilisation.
- Delta/seconde : l'autoscaler calcule le taux moyen de croissance par seconde et le compare à la cible d'utilisation.
Lorsque vous avez terminé la configuration de la métrique, cliquez sur Sélectionner.
- Cliquez sur Sélectionner une métrique.
Passez en revue les détails de la métrique, puis cliquez sur OK.
Pour terminer la configuration, cliquez sur Enregistrer.
gcloud
Pour configurer l'autoscaling en fonction des métriques Monitoring, exécutez la commande set-autoscaling
.
Exécutez la commande suivante pour procéder à un autoscaling en fonction d'une métrique Monitoring dotée d'une cible d'utilisation.
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=METRIC_URL \ --stackdriver-metric-utilization-target=TARGET_VALUE \ --stackdriver-metric-utilization-target-type=TARGET_TYPE
Si votre métrique comporte plusieurs valeurs et que vous souhaitez n'en utiliser qu'une pour l'autoscaling, utilisez l'option --stackdriver-metric-filter
comme indiqué dans la commande suivante.
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=METRIC_URL \ --stackdriver-metric-utilization-target=TARGET_VALUE \ --stackdriver-metric-utilization-target-type=TARGET_TYPE \ --stackdriver-metric-filter="METRIC_FILTER"
Remplacez les éléments suivants :
MIG_NAME
: MIG auquel vous souhaitez ajouter un autoscaler.MAX_INSTANCES
: nombre maximal de VM que le MIG peut contenir.MIN_INSTANCES
: nombre minimal de VM requis par le MIG.METRIC_URL
: URL sans protocole d'une métrique Monitoring. Exemple :compute.googleapis.com/instance/uptime
. Si vous utilisez une métrique personnalisée, elle doit répondre aux exigences des métriques personnalisées.TARGET_VALUE
: valeur de la métrique que l'autoscaler tente de maintenir.TARGET_TYPE
: type de valeur de la métrique.gauge
: l'autoscaler calcule la valeur moyenne des données collectées au cours des dernières minutes et la compare à la cible d'utilisation.delta-per-minute
: l'autoscaler calcule le taux moyen de croissance par minute et le compare à la cible d'utilisation.delta-per-second
: l'autoscaler calcule le taux moyen de croissance par seconde et le compare à la cible d'utilisation. Pour effectuer des comparaisons précises, si vous définissez la cible d'utilisation en secondes, utilisezdelta-per-second
comme type de cible. De même, utilisezdelta-per-minute
si vous souhaitez utiliser une cible d'utilisation exprimée en minutes.
METRIC_FILTER
: appliquez un filtre pour utiliser une valeur individuelle d'une métrique comportant plusieurs valeurs et spécifier le type de ressource surveillée. Si vous utilisez une métrique provenant de chaque VM, vous n'avez pas besoin de spécifier le type de ressource surveillée, cargce_instance
est utilisé par défaut. Pour les autres métriques, utilisezresource.type
dans l'expression de filtre pour spécifier la ressource surveillée. Pour en savoir plus sur le filtre de métrique, consultez la section Concepts de métrique Monitoring.
Pour afficher la liste complète des commandes et des options disponibles pour gcloud CLI, consultez la documentation de référence de gcloud
.
REST
Pour configurer l'autoscaling en fonction des métriques Monitoring pour un MIG zonal, utilisez la ressource autoscalers
ou, pour un MIG régional, utilisez la ressource regionAutoscalers
.
Effectuez l'appel suivant pour procéder à l'autoscaling d'un groupe d'instances géré zonal en fonction d'une métrique Monitoring dotée d'une cible d'utilisation.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "metric": "METRIC_URL", "utilizationTarget": TARGET_VALUE, "utilizationTargetType": TARGET_TYPE } ], } }
Si votre métrique comporte plusieurs valeurs et que vous souhaitez n'en utiliser qu'une pour l'autoscaling, utilisez le paramètre filter
tel qu'indiqué dans l'appel d'API suivant.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "metric": "METRIC_URL", "utilizationTarget": TARGET_VALUE, "utilizationTargetType": TARGET_TYPE, "filter": "METRIC_FILTER" } ], } }
Remplacez les éléments suivants :
PROJECT_ID
: l'ID de votre projet.ZONE
: zone où se trouve le MIG.AUTOSCALER_NAME
: nom de l'autoscaler.MIG_NAME
: MIG auquel vous souhaitez ajouter un autoscaler.MAX_INSTANCES
: nombre maximal de VM que le MIG peut contenir.MIN_INSTANCES
: nombre minimal de VM requis par le MIG.METRIC_URL
: URL sans protocole d'une métrique Monitoring. Exemple :compute.googleapis.com/instance/uptime
. Si vous utilisez une métrique personnalisée, elle doit répondre aux exigences des métriques personnalisées.TARGET_VALUE
: valeur de la métrique que l'autoscaler tente de maintenir.TARGET_TYPE
: type de valeur de la métrique.GAUGE
: l'autoscaler calcule la valeur moyenne des données collectées au cours des dernières minutes et la compare à la cible d'utilisation.DELTA_PER_MINUTE
: l'autoscaler calcule le taux moyen de croissance par minute et le compare à la cible d'utilisation.DELTA_PER_SECOND
: l'autoscaler calcule le taux moyen de croissance par seconde et le compare à la cible d'utilisation. Pour effectuer des comparaisons précises, si vous définissez la cible d'utilisation en secondes, utilisezDELTA_PER_SECOND
comme type de cible. De même, utilisezDELTA_PER_MINUTE
si vous souhaitez utiliser une cible d'utilisation exprimée en minutes.
METRIC_FILTER
: appliquez un filtre pour utiliser une valeur individuelle d'une métrique comportant plusieurs valeurs et spécifier le type de ressource surveillée. Si vous utilisez une métrique provenant de chaque VM, vous n'avez pas besoin de spécifier le type de ressource surveillée, cargce_instance
est utilisé par défaut. Pour les autres métriques, vous devez spécifier la ressource surveillée à l'aide du sélecteurresource.type
. Pour en savoir plus sur le filtre de métrique, consultez la section Concepts de métrique Monitoring.
Autoscaling basé sur le travail disponible pour chaque VM d'un MIG
Lorsque vous souhaitez effectuer un autoscaling en fonction de la quantité de travail disponible pour chaque VM d'un MIG, spécifiez une seule attribution d'instance. La valeur de l'attribution d'une seule instance indique le volume de travail que chaque VM doit gérer. L'autoscaler divise la valeur de la métrique par la valeur d'attribution d'une seule instance pour calculer le nombre de VM nécessaires.
La valeur de métrique 0
indique qu'il n'y a pas de travail à effectuer dans votre MIG. Si le nombre minimal d'instances de votre MIG est défini sur 0
et que votre valeur de métrique passe à 0
, le MIG effectue le scaling à la valeur 0
jusqu'à ce que la valeur de la métrique augmente.
Lorsque votre métrique comporte plusieurs valeurs, appliquez un filtre pour effectuer l'autoscaling en utilisant une valeur individuelle de la métrique. Pour plus de détails sur les filtres de métriques et les autres champs que vous pouvez utiliser dans votre configuration, consultez la page Concepts de métriques Monitoring.
Console
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Si vous ne disposez d'aucun groupe d'instances géré, créez-en un. Sinon, cliquez sur le nom d'un MIG dans la liste pour ouvrir la page de ce groupe d'instances.
Cliquez sur Modifier.
Si aucune configuration d'autoscaling n'existe :
- Sous Autoscaling, cliquez sur Configurer l'autoscaling.
- Sous Mode autoscaling, sélectionnez Activé : ajouter et supprimer des instances au groupe pour activer l'autoscaling.
Sous Autoscaling, dans la section Signaux d'autoscaling, si un signal existe pour une métrique Monitoring, vous pouvez cliquer dessus pour le modifier ou cliquer sur Ajouter un signal pour ajouter une nouvelle métrique.
Définissez le champ Type de signal sur Métrique Cloud Monitoring.
Cliquez sur Configurer. Dans le volet Ressource et métrique qui s'affiche, procédez comme suit :
- Cliquez sur Sélectionner une métrique.
- Sélectionnez la métrique que vous souhaitez utiliser pour l'autoscaling. Vous pouvez filtrer les métriques en fonction de n'importe quel mot clé (par exemple, mémoire, octets ou disque).
- Cliquez sur Appliquer. Le volet affiche un graphique indiquant les données de la métrique sélectionnée.
Si vous souhaitez utiliser des données spécifiques de la métrique, ajoutez un filtre basé sur les libellés comme suit :
- Dans la section Filtres, cliquez sur Ajouter un filtre.
- Sélectionnez un libellé et saisissez une valeur.
- Cliquez sur OK. Le graphique s'actualise pour afficher la valeur de métrique filtrée.
Pour afficher la valeur agrégée de la métrique qui sera utilisée pour procéder à l'autoscaling de votre groupe d'instances géré, cliquez sur le bouton Afficher l'agrégation dans le graphique. Le graphique s'actualise pour afficher la valeur agrégée.
Dans la section Options de cible de métrique pour l'autoscaling, sélectionnez Attribution d'instance de VM unique.
Indiquez une valeur d'attribution d'une seule instance représentant le volume de travail à attribuer à chaque VM du MIG.
Lorsque vous avez terminé la configuration de la métrique, cliquez sur Sélectionner.
- Cliquez sur Sélectionner une métrique.
Passez en revue les détails de la métrique, puis cliquez sur OK.
Pour terminer la configuration, cliquez sur Enregistrer.
gcloud
Pour configurer l'autoscaling en fonction des métriques Monitoring, exécutez la commande set-autoscaling
.
Dans la commande, spécifiez l'option --stackdriver-metric-single-instance-assignment
pour indiquer le volume de travail que chaque VM du groupe doit gérer.
La commande suivante crée un autoscaler basé sur l'attribution de tâches pour chaque VM.
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --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
Remplacez les éléments suivants :
MIG_NAME
: nom du MIG auquel vous souhaitez ajouter un autoscaler.MAX_INSTANCES
: nombre maximal de VM que le MIG peut contenir.MIN_INSTANCES
: nombre minimal de VM requis par le MIG.METRIC_URL
: URL sans protocole d'une métrique Monitoring. Exemple :compute.googleapis.com/instance_group/size
. Si vous utilisez une métrique personnalisée, elle doit répondre aux exigences des métriques personnalisées.METRIC_FILTER
: appliquez un filtre pour utiliser une valeur individuelle d'une métrique comportant plusieurs valeurs et spécifier le type de ressource surveillée. Pour en savoir plus sur le filtre de métrique, consultez la section Concepts de métrique Monitoring.INSTANCE_ASSIGNMENT
: volume de travail à attribuer à chaque instance de VM dans le MIG.
REST
Pour configurer l'autoscaling en fonction des métriques Monitoring pour un MIG zonal, utilisez la ressource autoscalers
ou, pour un MIG régional, utilisez la ressource regionAutoscalers
.
Utilisez le paramètre singleInstanceAssignment
pour spécifier le volume de travail que chaque VM doit gérer.
Par exemple, effectuez l'appel suivant afin de créer un autoscaler qui effectue le sclaing d'un MIG zonal en fonction de l'attribution d'instances.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "metric": "METRIC_URL", "filter": "METRIC_FILTER", "singleInstanceAssignment": INSTANCE_ASSIGNMENT } ], } }
Remplacez les éléments suivants :
PROJECT_ID
: l'ID de votre projet.ZONE
: zone où se trouve le MIG.AUTOSCALER_NAME
: nom de l'autoscaler.MIG_NAME
: nom du MIG auquel vous souhaitez ajouter un autoscaler.MAX_INSTANCES
: nombre maximal de VM que le MIG peut contenir.MIN_INSTANCES
: nombre minimal de VM requis par le MIG.METRIC_URL
: URL sans protocole d'une métrique Monitoring. Exemple :compute.googleapis.com/instance_group/size
. Si vous utilisez une métrique personnalisée, elle doit répondre aux exigences des métriques personnalisées.METRIC_FILTER
: appliquez un filtre pour utiliser une valeur individuelle d'une métrique comportant plusieurs valeurs et spécifier le type de ressource surveillée. Pour en savoir plus sur le filtre de métrique, consultez la section Concepts de métrique Monitoring.INSTANCE_ASSIGNMENT
: volume de travail à attribuer à chaque instance de VM dans le MIG.
Exemples d'autoscaling basé sur les métriques
Cette section fournit des exemples de métriques utilisées pour l'autoscaling. Pour obtenir la liste complète des métriques, consultez la page Métriques Google Cloud.
Effectuer un autoscaling basé sur une métrique personnalisée
Il peut arriver que la métrique fournissant un signal pertinent ne représente pas le volume total de travail disponible ou une autre ressource applicable au groupe, mais plutôt une moyenne, un centile ou une autre propriété statistique. Pour cet exemple, supposons que vous effectuez un scaling en fonction de la latence de traitement moyenne du groupe.
Prenons la configuration suivante :
- Un MIG zonal nommé
our-instance-group
est chargé d'exécuter une tâche particulière. Le groupe se trouve dans la zoneus-central1-a
. - Vous disposez d'une métrique personnalisée Monitoring qui exporte une valeur que vous souhaitez conserver à un niveau particulier. Pour cet exemple, supposons que la métrique représente la latence moyenne des requêtes de traitement attribuées au groupe.
- La métrique personnalisée est nommée :
custom.googleapis.com/example_average_latency
. - La métrique personnalisée possède un libellé avec une clé nommée
group_name
et une valeur égale au nom du MIG,our-instance-group
. - La métrique personnalisée exporte des données pour la ressource surveillée globale , c'est-à-dire qu'elle n'est associée à aucune VM spécifique.
- La métrique personnalisée est nommée :
Vous avez déterminé que lorsque la valeur de la métrique dépasse une valeur spécifique, vous devez ajouter d'autres VM au groupe pour gérer la charge, tandis que lorsqu'elle est inférieure à cette valeur, vous pouvez libérer des ressources. Vous souhaitez que l'autoscaler ajoute ou supprime progressivement les VM à un taux proportionnel à la valeur de la métrique qui est supérieure ou inférieure à la cible. Pour cet exemple, supposons que vous avez déterminé que votre valeur cible est 250 delta/sec
.
Vous pouvez configurer l'autoscaling pour le groupe en utilisant une cible d'utilisation de 250
, qui représente la valeur de taux de changement de la métrique que l'autoscaler tentera de maintenir :
Console
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Cliquez sur le nom de votre groupe d'instances géré dans la liste afin d'ouvrir la page de présentation du groupe d'instances.
Cliquez sur Modifier.
Si aucune configuration d'autoscaling n'existe :
- Sous Autoscaling, cliquez sur Configurer l'autoscaling.
- Sous Mode autoscaling, sélectionnez Activé : ajouter et supprimer des instances au groupe pour activer l'autoscaling.
Sous Autoscaling, dans la section Signaux d'autoscaling, cliquez sur Ajouter un signal.
Définissez le champ Type de signal sur Métrique Cloud Monitoring.
Cliquez sur Configurer. Le volet Ressource et métrique s'ouvre.
- Cliquez sur Sélectionner une métrique.
- Choisissez votre métrique dans Global > Métriques personnalisées.
- Cliquez sur Appliquer.
- Dans la section Filtres, procédez comme suit :
- Cliquez sur Ajouter un filtre.
- Dans la liste déroulante Libellé, sélectionnez
group_name
. - Dans le champ Valeur, indiquez
our-instance-group
. - Cliquez sur OK. Le graphique est actualisé pour afficher la valeur filtrée de la métrique.
- Dans la section Options de métrique cible pour l'autoscaling, procédez comme suit :
- Sélectionnez Cible d'utilisation.
- Saisissez 250 comme valeur cible d'utilisation.
- Définissez le type de cible d'utilisation sur delta/seconde.
- Après avoir configuré la métrique, cliquez sur Sélectionner.
- Cliquez sur Sélectionner une métrique.
Passez en revue les détails de la métrique, puis cliquez sur OK.
Une fois l'opération terminée, cliquez sur Enregistrer.
gcloud
gcloud compute instance-groups managed set-autoscaling our-instance-group \ --zone=us-central1-a \ --max-num-replicas=50 \ --min-num-replicas=0 \ --update-stackdriver-metric=custom.googleapis.com/example_average_latency \ --stackdriver-metric-filter="metric.labels.group_name = \"our-instance-group\" AND resource.type = \"global\"" \ --stackdriver-metric-utilization-target=250 \ --stackdriver-metric-utilization-target-type=delta-per-second
REST
POST https://compute.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/autoscalers { "name": "our-instance-group-autoscaler", "target": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/instanceGroupManagers/our-instance-group", "autoscalingPolicy": { "maxNumReplicas": 50, "minNumReplicas": 0, "customMetricUtilizations": [ { "filter": "metric.labels.group_name=\"our-instance-group\" AND resource.type = \"global\"", "utilizationTargetType": "delta-per-second", "utilizationTarget": 250.0, "metric": "custom.googleapis.com/example_average_latency" } ] } }
Autoscaling basé sur les messages non confirmés dans Pub/Sub
Pour configurer l'autoscaling sur la base de messages non confirmés dans un abonnement Pub/Sub, utilisez la métrique subscription/num_undelivered_messages
fournie par pubsub
et filtrez avec le subscription ID
.
La métrique subscription/num_undelivered_messages
exporte le nombre total de messages dans l'abonnement, y compris les messages en cours de traitement, mais pas encore confirmés. Il n'est pas recommandé d'utiliser une métrique qui n'inclut pas les messages en cours de traitement, car une telle métrique peut être réduite à zéro lorsque le travail est en cours, ce qui incite l'autoscaling à réduire voire à interrompre le travail en cours.
Si vous n'avez pas d'abonnement, vous pouvez créer un abonnement pull, push ou BigQuery avant de configurer l'autoscaling.
Console
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Cliquez sur le nom de votre groupe d'instances géré dans la liste afin d'ouvrir la page de présentation du groupe d'instances.
Cliquez sur Modifier.
Si aucune configuration d'autoscaling n'existe :
- Sous Autoscaling, cliquez sur Configurer l'autoscaling.
- Sous Mode autoscaling, sélectionnez Activé : ajouter et supprimer des instances au groupe pour activer l'autoscaling.
Dans la section Signaux d'autoscaling, cliquez sur Ajouter un signal.
Définissez le Type de signal sur File d'attente Cloud Pub/Sub.
Sélectionnez un sujet. Si vous souhaitez créer un sujet, cliquez sur Créer un sujet pour en créer un.
Sélectionnez l'abonnement sur lequel vous souhaitez effectuer l'autoscaling de votre MIG. Si vous souhaitez un nouvel abonnement, cliquez sur Créer un abonnement pour en créer un.
Dans le champ Nombre de messages à attribuer à chaque VM, spécifiez le nombre de messages non confirmés que chaque VM doit gérer.
Cliquez sur OK.
Une fois l'opération terminée, cliquez sur Enregistrer.
gcloud
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=pubsub.googleapis.com/subscription/num_undelivered_messages \ --stackdriver-metric-filter="resource.type=\"pubsub_subscription\" AND resource.labels.subscription_id=\"SUBSCRIPTION_ID\"" \ --stackdriver-metric-single-instance-assignment=NUMBER_OF_MESSAGES_TO_ASSIGN_TO_EACH_VM
REST
Pour configurer l'autoscaling pour un groupe d'instances géré zonal, utilisez la ressource autoscalers
ou, pour un MIG régional, utilisez la ressource regionAutoscalers
.
Par exemple, effectuez l'appel suivant pour créer un autoscaler pour un MIG zonal.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "singleInstanceAssignment": NUMBER_OF_MESSAGES_TO_ASSIGN_TO_EACH_VM, "filter": "resource.type = \"pubsub_subscription\" AND resource.labels.subscription_id=\"SUBSCRIPTION_ID\"", "metric": "pubsub.googleapis.com/subscription/num_undelivered_messages" } ] } }
Effectuer un autoscaling basé sur le trafic réseau entrant
Pour configurer l'autoscaling en fonction du trafic réseau entrant sur les VM de votre MIG, utilisez la métrique instance/network/received_bytes_count
fournie par compute
.
Console
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Cliquez sur le nom de votre groupe d'instances géré dans la liste afin d'ouvrir la page de présentation du groupe d'instances.
Cliquez sur Modifier.
Si aucune configuration d'autoscaling n'existe :
- Sous Autoscaling, cliquez sur Configurer l'autoscaling.
- Sous Mode autoscaling, sélectionnez Activé : ajouter et supprimer des instances au groupe pour activer l'autoscaling.
Sous Autoscaling, dans la section Signaux d'autoscaling, cliquez sur Ajouter un signal.
Définissez le champ Type de signal sur Métrique Cloud Monitoring.
Cliquez sur Configurer. Le volet Ressource et métrique s'ouvre.
- Cliquez sur Sélectionner une métrique.
- Sélectionnez Instance de VM > Instance > Octets reçus (
compute.googleapis.com/instance/network/received_bytes_count
). - Cliquez sur Appliquer.
- Sélectionnez Instance de VM > Instance > Octets reçus (
- Dans la section Options de métrique cible pour l'autoscaling, procédez comme suit :
- Assurez-vous que l'option Cible d'utilisation est sélectionnée.
- Saisissez une valeur cible d'utilisation.
- Définissez un type de cible d'utilisation.
- Après avoir configuré la métrique, cliquez sur Sélectionner.
- Cliquez sur Sélectionner une métrique.
Passez en revue les détails de la métrique, puis cliquez sur OK.
Une fois l'opération terminée, cliquez sur Enregistrer.
gcloud
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=compute.googleapis.com/instance/network/received_bytes_count \ --stackdriver-metric-utilization-target=TARGET_VALUE \ --stackdriver-metric-utilization-target-type=TARGET_TYPE
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "utilizationTargetType": "TARGET_TYPE", "utilizationTarget": TARGET_VALUE, "metric": "compute.googleapis.com/instance/network/received_bytes_count" } ] } }
Effectuer un autoscaling basé sur l'utilisation de la mémoire
Pour configurer l'autoscaling en fonction du pourcentage de mémoire utilisée, spécifiez la métrique percent_used
fournie par les métriques de mémoire de l'agent Ops. Vous devez filtrer la métrique par state
pour n'utiliser que l'état de mémoire used
. Si vous ne spécifiez pas le filtre, l'autoscaler prend la somme de l'utilisation de la mémoire par tous les états de mémoire étiquetés buffered
, cached
, free
, slab
et used
.
Console
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Cliquez sur le nom de votre groupe d'instances géré dans la liste afin d'ouvrir la page de présentation du groupe d'instances.
Sur la page de présentation du groupe d'instances, cliquez sur Modifier.
Si aucune configuration d'autoscaling n'existe :
- Sous Autoscaling, cliquez sur Configurer l'autoscaling.
- Sous Mode autoscaling, sélectionnez Activé : ajouter et supprimer des instances au groupe pour activer l'autoscaling.
Sous Autoscaling, dans la section Signaux d'autoscaling, cliquez sur Ajouter un signal.
Définissez le champ Type de signal sur Métrique Cloud Monitoring.
Cliquez sur Configurer. Le volet Ressource et métrique s'ouvre.
- Cliquez sur Sélectionner une métrique.
- Sélectionnez Instance de VM > Mémoire > Utilisation de la mémoire (
compute.googleapis.com/instance/memory/percent_used
). - Cliquez sur Appliquer.
- Sélectionnez Instance de VM > Mémoire > Utilisation de la mémoire (
- Dans la section Filtres, procédez comme suit :
- Cliquez sur Ajouter un filtre.
- Dans le menu déroulant Libellé, choisissez le libellé de métrique État.
- Dans le champ Valeur, saisissez used.
- Cliquez sur OK.
- Dans la section Options de métrique cible pour l'autoscaling, procédez comme suit :
- Assurez-vous que l'option Cible d'utilisation est sélectionnée.
- Saisissez une valeur cible d'utilisation.
- Définissez le type de cible d'utilisation sur Jauge.
- Après avoir configuré la métrique, cliquez sur Sélectionner.
- Cliquez sur Sélectionner une métrique.
Passez en revue les détails de la métrique, puis cliquez sur OK.
Une fois l'opération terminée, cliquez sur Enregistrer.
gcloud
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=agent.googleapis.com/memory/percent_used \ --stackdriver-metric-filter="metric.labels.state = \"used\"" --stackdriver-metric-utilization-target-type=gauge \ --stackdriver-metric-utilization-target=TARGET_VALUE \
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "filter": "metric.labels.state=\"used\"", "utilizationTargetType": "GAUGE", "utilizationTarget": TARGET_VALUE, "metric": "agent.googleapis.com/memory/percent_used" } ] } }
Autoscaling basé sur les E/S du disque
Pour configurer l'autoscaling en fonction du nombre total d'opérations d'E/S du disque, utilisez la métrique operation_count
fournie par les métriques de disque de l'agent Ops.
Si vous souhaitez effectuer un scaling en fonction des opérations de lecture ou d'écriture, filtrez la métrique à l'aide du libellé direction
. De même, pour effectuer un scaling en fonction des opérations sur le disque d'un appareil particulier, utilisez le libellé device
dans le filtre de métrique.
Console
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Cliquez sur le nom de votre groupe d'instances géré dans la liste afin d'ouvrir la page de présentation du groupe d'instances.
Sur la page de présentation du groupe d'instances, cliquez sur Modifier.
Si aucune configuration d'autoscaling n'existe :
- Sous Autoscaling, cliquez sur Configurer l'autoscaling.
- Sous Mode autoscaling, sélectionnez Activé : ajouter et supprimer des instances au groupe pour activer l'autoscaling.
Sous Autoscaling, dans la section Signaux d'autoscaling, cliquez sur Ajouter un signal.
Définissez le champ Type de signal sur Métrique Cloud Monitoring.
Cliquez sur Configurer. Le volet Ressource et métrique s'ouvre.
- Cliquez sur Sélectionner une métrique.
- Sélectionnez Instance de VM > Disque > Opérations de disque (
agent.googleapis.com/disk/operation_count
). - Cliquez sur Appliquer.
- Sélectionnez Instance de VM > Disque > Opérations de disque (
- Dans la section Options de métrique cible pour l'autoscaling, procédez comme suit :
- Assurez-vous que l'option Cible d'utilisation est sélectionnée.
- Saisissez une valeur cible d'utilisation.
- Définissez un type de cible d'utilisation.
- Après avoir configuré la métrique, cliquez sur Sélectionner.
- Cliquez sur Sélectionner une métrique.
Passez en revue les détails de la métrique, puis cliquez sur OK.
Une fois l'opération terminée, cliquez sur Enregistrer.
gcloud
gcloud compute instance-groups managed set-autoscaling MIG_NAME \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=agent.googleapis.com/disk/operation_count \ --stackdriver-metric-utilization-target=TARGET_VALUE \ --stackdriver-metric-utilization-target-type=TARGET_TYPE
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_NAME", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "utilizationTargetType": "TARGET_TYPE", "utilizationTarget": TARGET_VALUE, "metric": "agent.googleapis.com/disk/operation_count" } ] } }
Autoscaling basé sur la taille d'un autre MIG
Vous pouvez procéder à l'autoscaling d'un groupe d'instances géré en fonction de la taille d'un autre MIG dans le même projet. Par exemple, vous pouvez disposer d'une application à plusieurs niveaux avec un MIG frontend qui s'adapte en fonction d'un équilibreur de charge et un MIG backend qui réalise un autoscaling proportionnel à l'interface. Utilisez une attribution d'instance unique pour définir le nombre de VM de backend nécessaires pour chaque VM d'interface. Si vous avez besoin d'une VM de backend pour chaque VM d'interface, définissez l'attribution d'instance unique sur 4 dans le MIG de backend.
Pour procéder à l'autoscaling d'un groupe d'instances géré (MIG_1) en fonction de la taille d'un autre MIG (MIG_2), utilisez la métrique instance_group/size
fournie par compute
.
Console
Dans la console Google Cloud, accédez à la page Groupes d'instances.
Cliquez sur le nom de votre groupe d'instances géré dans la liste afin d'ouvrir la page de présentation du groupe d'instances.
Sur la page de présentation du groupe d'instances, cliquez sur Modifier.
Si aucune configuration d'autoscaling n'existe :
- Sous Autoscaling, cliquez sur Configurer l'autoscaling.
- Sous Mode autoscaling, sélectionnez Activé : ajouter et supprimer des instances au groupe pour activer l'autoscaling.
Sous Autoscaling, dans la section Signaux d'autoscaling, cliquez sur Ajouter un signal.
Définissez le champ Type de signal sur Métrique Cloud Monitoring.
Cliquez sur Configurer. Le volet Ressource et métrique s'ouvre.
- Cliquez sur Sélectionner une métrique.
- Sélectionnez Groupe d'instances > Instance_group > Taille du groupe d'instances (
compute.googleapis.com/instance_group/size
). - Cliquez sur Appliquer.
- Sélectionnez Groupe d'instances > Instance_group > Taille du groupe d'instances (
- Dans la section Filtres, procédez comme suit :
- Cliquez sur Ajouter un filtre.
- Dans la liste déroulante Libellé, choisissez le libellé de ressource instance_group_name.
- Dans le champ Valeur, saisissez le nom du MIG (MIG_2) sur lequel vous souhaitez effectuer l'autoscaling.
- Cliquez sur OK.
- Dans la section Options de métrique cible pour l'autoscaling, procédez comme suit :
- Sélectionnez Attribution d'une instance de VM unique.
- Dans le champ d'attribution d'une instance de VM unique, saisissez
4
si vous souhaitez conserver une VM dans votre MIG actuel (MIG_1) pour chaque VM dans MIG_2.
- Après avoir configuré la métrique, cliquez sur Sélectionner.
- Cliquez sur Sélectionner une métrique.
Passez en revue les détails de la métrique, puis cliquez sur OK.
Une fois l'opération terminée, cliquez sur Enregistrer.
gcloud
gcloud compute instance-groups managed set-autoscaling MIG_1 \ --max-num-replicas=MAX_INSTANCES \ --min-num-replicas=MIN_INSTANCES \ --update-stackdriver-metric=compute.googleapis.com/instance_group/size \ --stackdriver-metric-filter="resource.type = \"instance_group\" AND resource.labels.location = \"ZONE|REGION\" AND resource.labels.instance_group_name = \"MIG_2\"" \ --stackdriver-metric-single-instance-assignment=4
REST
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/autoscalers { "name": "AUTOSCALER_NAME", "target": "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/MIG_1", "autoscalingPolicy": { "maxNumReplicas": MAX_INSTANCES, "minNumReplicas": MIN_INSTANCES, "customMetricUtilizations": [ { "singleInstanceAssignment": 4, "filter": "resource.type = \"instance_group\" and resource.labels.location = \"ZONE|REGION\" AND resource.labels.instance_group_name = \"MIG_2\"", "metric": "compute.googleapis.com/instance_group/size" } ] } }
Concepts de métriques Monitoring
Cette section décrit brièvement les concepts de métriques Monitoring que vous devez connaître lors de la configuration de l'autoscaling basé sur les métriques Monitoring.
Identifiant de métrique ou URL de métrique : nom de la métrique sous la forme d'une URL sans protocole. Vous trouverez les URL des métriques intégrées dans la liste des métriques.
Par exemple, l'URL d'une métrique Pub/Sub indiquant le nombre de messages non confirmés est
pubsub.googleapis.com/subscription/num_undelivered_messages
.Type de ressource surveillée : source de la valeur de la métrique. Vous pouvez trouver le type de ressource surveillée d'une métrique dans la liste des métriques.
Par exemple, le type de ressource surveillée de la métrique
pubsub.googleapis.com/subscription/num_undelivered_messages
estpubsub_subscription
. Pour plus d'informations sur chaque type de ressource surveillée, consultez la page Types de ressources surveillées.Filtre de métrique : lorsque votre métrique comporte plusieurs valeurs, un filtre permet à l'autoscaler d'identifier une valeur de métrique spécifique à partir de l'ensemble des valeurs de métriques possibles. Utilisez les libellés définis sur une métrique et un type de ressource surveillée pour filtrer les valeurs. Si vous souhaitez explorer les valeurs de vos métriques avec différents filtres, vous pouvez les tester dans l'explorateur de métriques.
Par exemple, la capture d'écran suivante montre la métrique
pubsub.googleapis.com/subscription/num_undelivered_messages
qui indique le nombre de messages non confirmés dans tous les abonnements disponibles. Chaque ligne du graphique indique un abonnement.Sans filtre, l'autoscaler prend la somme des valeurs des métriques de tous les abonnements. Pour procéder à un autoscaling en fonction d'un seul abonnement, appliquez un filtre au libellé
subscription_id
défini pour le champpubsub_subscription
. La capture d'écran suivante présente un seul abonnement après l'application du filtre.
Exigences applicables au filtrage des métriques
Lorsque vous utilisez une métrique comportant plusieurs valeurs (classées à l'aide de libellés), vous pouvez appliquer un filtre pour effectuer un autoscaling en fonction de valeurs spécifiques de la métrique. Si le filtre renvoie plusieurs valeurs, celles-ci sont additionnées. Pour de meilleurs résultats, créez un filtre suffisamment précis de sorte à afficher une valeur unique.
Le filtrage d'autoscaler pour les métriques est compatible avec la syntaxe des filtres Monitoring. Le filtre doit répondre aux exigences suivantes :
- Vous devez encapsuler la valeur d'un filtre entre guillemets doubles.
- Vous devez utiliser l'opérateur de comparaison d'égalité directe (
=
). Vous devez utiliser l'opérateur
AND
pour joindre différents critères de filtrage.Exemple :
--stackdriver-metric-filter="resource.type=\"pubsub_subscription\" AND resource.labels.subscription_id=\"our-subscription\""
.Vous devez utiliser des valeurs directes. Vous ne pouvez pas utiliser de caractères génériques ou de fonctions dans le filtre.
Par exemple, vous ne pouvez pas utiliser
resource.labels.zone = starts_with("us-")
.Vous ne pouvez pas utiliser de libellés de métadonnées de ressource qui stockent des métadonnées sur une ressource surveillée.
Pour obtenir une documentation de référence complète sur les libellés de métriques et les libellés de ressources surveillées que vous pouvez filtrer, consultez la liste des métriques et la liste des ressources surveillées.
Exigences concernant les métriques personnalisées
Pour utiliser des métriques personnalisées, vous devez d'abord créer une métrique personnalisée associée à l'un des types de ressources surveillées.
Une métrique personnalisée utilisée pour l'autoscaling doit présenter les propriétés suivantes :
- Si la configuration de l'autoscaling utilise les données de chaque VM du groupe, configurez des instances dans votre MIG de sorte que chaque VM exporte la métrique personnalisée. Les valeurs exportées de chaque VM doivent être associées à une ressource surveillée
gce_instance
, qui contient les libellés suivants :zone
avec le nom de la zone dans laquelle se trouve l'instance.instance_id
avec la valeur de l'ID numérique unique attribué à la VM.
- La métrique doit exporter des données au moins toutes les 60 secondes. Si vous exportez des données plus souvent que toutes les 60 secondes, l'autoscaler peut répondre plus rapidement aux changements de charge. Si vous exportez vos données moins souvent, l'autoscaler ne pourra peut-être pas répondre assez rapidement aux changements de charge.
- La métrique doit exporter des données de type
INT64
ouDOUBLE
.
Pour plus d'informations sur la création d'une métrique personnalisée, consultez la page Utiliser des métriques personnalisées.
Étapes suivantes
- Découvrez comment gérer les autoscalers.
- Découvrez comment les autoscalers prennent des décisions.
- Découvrez comment utiliser plusieurs signaux d'autoscaling pour effectuer un scaling de votre groupe.