Ce document explique comment afficher et lire les entrées de journal de changement d'état d'une VM d'un groupe d'instances géré (MIG), et fournit des cas d'utilisation spécifiques pour vous aider à surveiller les VM dans le groupe.
Si vous avez configuré la vérification de l'état des applications pour le MIG, Compute Engine écrit une entrée de journal chaque fois que l'état d'une instance gérée change, par exemple lorsque l'instance passe de l'état HEALTHY
à l'état UNHEALTHY
. Ces entrées de journal vous permettent de surveiller et de déboguer l'état de chaque instance gérée, ainsi que l'état général du MIG.
Avant de commencer
- Examinez la section Configurer la vérification d'état et l'autoréparation
-
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 Google Cloud services et aux API.
Pour exécuter du code ou des exemples depuis un environnement de développement local, vous pouvez vous authentifier auprès de Compute Engine en sélectionnant l'une des options suivantes:
Select the tab for how you plan to use the samples on this page:
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
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
Pour en savoir plus, consultez la section S'authentifier pour utiliser REST dans la documentation sur l'authentification Google Cloud.
-
Tarifs
Compute Engine génère des entrées de journal pour les changements d'état des instances gérées à l'aide de Cloud Logging. Cloud Logging vous offre une attribution mensuelle gratuite, après quoi les entrées de journal sont facturées en fonction du volume de données. Pour en savoir plus, consultez le récapitulatif des tarifs de Cloud Logging.
Pour éviter les coûts de journalisation, vous pouvez désactiver les journaux des changements d'état.
Afficher les journaux des changements d'état
Si les journaux de changement d'état restent activés, Compute Engine écrit une entrée de journal dans les journaux de plate-forme chaque fois que l'état d'une instance gérée change. Vous pouvez afficher ces journaux pour un projet, un MIG ou une instance gérée spécifique.
Afficher les journaux d'un projet ou d'un MIG
Pour afficher les entrées de journal d'un projet ou d'un MIG spécifique, utilisez la console Google Cloud, la gcloud CLI ou REST.
Accédez à l'explorateur de journaux dans la console Google Cloud.
Définissez les paramètres de requête suivants :
- Ressource : gestionnaire de groupe d'instances GCE
- Nom du journal :
instance_group_manager_events
Vous pouvez également copier la requête suivante dans le Générateur de requêtes.
resource.type="gce_instance_group_manager" AND logName="projects/
PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:*Vous pouvez limiter votre recherche à un groupe d'instances géré spécifique à l'aide de la requête suivante.
resource.type="gce_instance_group_manager" AND logName="projects/
PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND resource.labels.instance_group_manager_name="MIG_NAME "Cliquez sur Exécuter la requête. Les journaux sont affichés dans les Résultats de requête.
Exécutez la commande gcloud logging read
pour afficher et lire les entrées de journal.
Pour afficher tous les journaux de changement d'état de votre projet, exécutez la commande suivante :
gcloud logging read 'resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:*'\ --limit 10
Pour afficher tous les journaux de changement d'état d'un groupe d'instances géré spécifique, exécutez la commande suivante :
gcloud logging read 'resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND resource.labels.instance_group_manager_name="MIG_NAME "' \ --limit 10
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projetMIG_NAME
: MIG pour lequel vous souhaitez afficher les journaux de changement d'état.
Pour afficher les journaux de changement d'état, envoyez une requête POST
à la méthode entries.list
.
Pour afficher tous les journaux de changement d'état de votre projet, exécutez la commande suivante :
curl -H "Content-Type: application/json" -H "Authorization: BearerOAUTH2_TOKEN " -X POST -d \ '{"filter": "resource.type=gce_instance_group_manager AND logName=projects/PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events AND jsonPayload.instanceHealthStateChange:*", "orderBy": "timestamp desc", "pageSize": 10, "resourceNames": ["projects/PROJECT_ID "] }' https://logging.googleapis.com/v2/entries:list?alt=json
Pour afficher les journaux de changement d'état d'un groupe d'instances géré spécifique, exécutez la commande suivante :
curl -H "Content-Type: application/json" -H "Authorization: BearerOAUTH2_TOKEN " -X POST -d \ '{"filter": "resource.type=gce_instance_group_manager AND logName=projects/PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events AND jsonPayload.instanceHealthStateChange:* AND resource.labels.instance_group_manager_name=MIG_NAME ", "orderBy": "timestamp desc", "pageSize": 10, "resourceNames": ["projects/PROJECT_ID "] }' https://logging.googleapis.com/v2/entries:list?alt=json
Remplacez les éléments suivants :
OAUTH2_TOKEN
: jeton d'accès de votre application. Pour les tests en local, vous pouvez exécuter la commandegcloud auth print-access-token
pour générer un jeton.PROJECT_ID
: ID de votre projetMIG_NAME
: MIG pour lequel vous souhaitez afficher les journaux de changement d'état.
Pour plus d'informations sur chaque entrée de journal, consultez la section Format des entrées de journal.
Selon que vous souhaitez archiver les journaux, les utiliser à des fins d'analyse, les diffuser dans d'autres applications ou déclencher une fonction Cloud, vous pouvez les exporter vers des destinations telles que Cloud Storage, BigQuery ou Pub/Sub. Pour en savoir plus sur l'exportation des journaux, consultez la page Présentation des exportations de journaux.
Afficher les journaux de changement d'état d'une VM spécifique
Pour afficher les entrées de journal d'une instance gérée spécifique, utilisez la console Google Cloud, la gcloud CLI ou REST.
Accédez à l'explorateur de journaux dans la console Google Cloud.
Copiez la requête suivante dans le Générateur de requêtes.
resource.type="gce_instance_group_manager" AND logName="projects/
PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND labels."compute.googleapis.com/instance_name"="INSTANCE_NAME "Cliquez sur Exécuter la requête.
Exécutez la commande gcloud logging read
pour afficher et lire les entrées de journal.
Pour afficher les journaux de changement d'état d'une instance gérée, utilisez la commande suivante :
gcloud logging read 'resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND labels."compute.googleapis.com/instance_name"="INSTANCE_NAME "' \ --limit 10
Remplacez les éléments suivants :
PROJECT_ID
: ID de votre projetINSTANCE_NAME
: instance gérée pour laquelle vous souhaitez afficher les journaux de changement d'état.
Pour afficher les journaux de changement d'état d'une instance gérée, envoyez une requête POST
à la méthode entries.list
.
curl -H "Content-Type: application/json" -H "Authorization: BearerOAUTH2_TOKEN " -X POST -d \ '{"filter": "resource.type=gce_instance_group_manager AND logName=projects/PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events AND jsonPayload.instanceHealthStateChange:* AND labels.\"compute.googleapis.com/instance_name\"=\"INSTANCE_NAME \"", "orderBy": "timestamp desc", "pageSize": 10, "resourceNames": ["projects/PROJECT_ID "] }' https://logging.googleapis.com/v2/entries:list?alt=json
Remplacez les éléments suivants :
OAUTH2_TOKEN
: jeton d'accès de votre application. Pour les tests en local, vous pouvez exécuter la commandegcloud auth print-access-token
pour générer un jeton.PROJECT_ID
: ID de votre projetINSTANCE_NAME
: instance gérée pour laquelle vous souhaitez afficher les journaux de changement d'état.
Format des entrées de journal
Les entrées des journaux de changement d'état des d'instances contiennent des informations utiles pour surveiller et déboguer l'état de vos instances gérées.
Les journaux sont écrits dans les journaux de plate-forme sous le nom de journal instance_group_manager_events
. Les journaux de plate-forme vous aident à déboguer et à résoudre les problèmes.
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events"
Les entrées des journaux de changement d'état contiennent les types d'informations suivants :
- Informations générales figurant dans la plupart des journaux (gravité, ID et nom du MIG, numéro de projet, horodatage, etc…).
- Champs spécifiques à l'état de l'instance.
Dans chaque entrée de journal de changement d'état, le champ jsonPayload.instanceHealthStateChange
contient les informations suivantes :
Champ | Description |
---|---|
instance |
URL de l'instance, basée sur la chaîne d'ID du projet et sur le nom de l'instance. |
instanceWithId |
URL de l'instance, basée sur le numéro d'ID de projet sur l'ID d'instance. |
ipAddress |
Adresse IP de l'instance, testée par la vérification d'état. |
network |
URL de la ressource réseau pour cette instance, basée sur la chaîne d'ID de projet et sur le nom du réseau. |
networkWithId |
URL de la ressource réseau pour cette instance, basée sur le numéro d'ID de projet et sur l'ID de réseau. |
healthCheck |
URL de la vérification d'état configurée pour le groupe d'instances géré. |
previousDetailedHealthState |
État précédent de l'instance. Pour obtenir la liste des états possibles, consultez la section États. |
detailedHealthState |
État actuel de l'instance. Pour obtenir la liste des états possibles, consultez la section États. |
notificationTime |
Horodatage du changement d'état. |
Les champs de journal de type booléen n'apparaissent généralement que s'ils comportent la valeur true
.
Si un champ booléen a la valeur false
, il est omis du journal.
Le codage UTF-8 est appliqué aux champs de journaux. Les caractères qui ne sont pas au format UTF-8 sont remplacés par des points d'interrogation.
Exemple d'entrées de journal
L'exemple suivant montre que l'état d'une instance de VM passe de HEALTHY
à UNHEALTHY
:
{ "logName": "projects/my-project/logs/compute.googleapis.com%2Finstance_group_manager_events", "resource": { "type": "gce_instance_group_manager", "labels": { "instance_group_manager_id": "3138236342290985981", "instance_group_manager_name": "my-mig", "project_id": "my-project", "location": "europe-west3" } }, "labels": { "compute.googleapis.com/instance_id": "6498902454451155884", "compute.googleapis.com/instance_location": "europe-west3-a", "compute.googleapis.com/instance_name": "my-mig-a" }, "timestamp": "2019-11-19T15:47:57.127Z", "severity": "INFO", "jsonPayload": { "@type": "type.googleapis.com/compute.InstanceGroupManagerEvent", "instanceHealthStateChange": { "instance": "projects/my-project/zones/europe-west3-a/instances/my-mig-a", "instanceWithId": "projects/123456/zones/europe-west3-a/instances/6498902454451155884", "ipAddress": "10.0.0.4", "network": "projects/my-project/global/networks/net-1", "networkWithId": "projects/123456/global/networks/456", "healthCheck": "projects/my-project/global/healthChecks/my-mig-health-check", "previousDetailedHealthState": "HEALTHY", "detailedHealthState": "UNHEALTHY", "notificationTime": "2019-11-19T15:47:56.444Z" } }, "receiveTimestamp": "2019-11-19T15:47:57.296439184Z" }
Cas d'utilisation
Vous pouvez utiliser les journaux de changement d'état dans les scénarios de surveillance ou de débogage suivants :
- Découvrir à quelle fréquence une instance de VM spécifique a changé d'état au fil du temps.
- Évaluer la fréquence à laquelle un groupe d'instances géré a subi des changements d'état de ses instances.
- Identifier les instances de VM problématiques qui passent fréquemment à l'état
UNHEALTHY
. - Découvrir les raisons d'une tentative d'autoréparation.
- Découvrir si une tentative d'autoréparation a réussi pour une instance de VM spécifique.
- Ajuster la configuration des vérifications d'état pour une application en déterminant un délai initial approprié pour l'autoréparation.
Surveiller les changements d'état d'une VM
Vous pouvez surveiller la fréquence à laquelle l'état d'une instance de VM change en créant une métrique qui suit les changements d'état de cette VM spécifique.
Pour créer la métrique et surveiller les changements, procédez comme suit :
Accédez à l'explorateur de journaux dans la console Google Cloud.
Saisissez la requête suivante dans le générateur de Requêtes en utilisant l'ID de votre projet et le nom de l'instance.
resource.type="gce_instance_group_manager" AND logName="projects/
PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND labels."compute.googleapis.com/instance_name"="INSTANCE_NAME "Dans la section Résultats de requête, cliquez sur Actions, puis sur Créer une métrique.
Sur la page Créer une métrique de journaux, procédez comme suit :
- Définissez le Type de métrique sur Compteur.
Saisissez un Nom de métrique de journal, par exemple
health-mig-xyzq
.La section Créer un filtre affiche la requête de journal de l'explorateur de journaux. Vous pouvez également configurer le filtre de la métrique pour ne prendre en compte que les états perturbateurs, tels que
UNHEALTHY
etTIMEOUT
, en ajoutantseverity>=WARNING
au filtre.Sous Libellés, cliquez sur Ajouter un libellé.
Saisissez un Nom de libellé, par exemple
health_state
.Définissez le Type de libellé sur
STRING
.Définissez le Nom du champ sur
jsonPayload.instanceHealthStateChange.detailedHealthState
. Cela vous permettra de faire la distinction entre différents changements d'état.Cliquez sur Terminé pour ajouter le libellé.
Cliquez sur Créer la métrique.
Accédez à la page Métriques basées sur les journaux, puis recherchez la métrique nouvellement créée.
Cliquez sur le menu more_vert sur la ligne de la métrique, puis sélectionnez Afficher dans l'explorateur de métriques. L'explorateur de métriques s'ouvre et affiche le graphique représentant les changements d'état de l'instance de VM que vous avez spécifiée dans la requête.
Surveiller les changements d'état de toutes les VM d'un MIG
Vous pouvez surveiller les changements d'état de toutes les instances gérées en créant une métrique qui suit les changements d'état des instances gérées.
Pour créer la métrique et surveiller les changements, procédez comme suit :
Accédez à l'explorateur de journaux dans la console Google Cloud.
Saisissez la requête suivante dans le générateur de Requêtes, en utilisant l'ID de votre projet et le nom du groupe d'instances géré.
resource.type="gce_instance_group_manager" AND logName="projects/
PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND resource.labels.instance_group_manager_name="MIG_NAME "Dans la section Résultats de requête, cliquez sur Actions, puis sur Créer une métrique.
Sur la page Créer une métrique de journaux, procédez comme suit :
- Définissez le Type de métrique sur Compteur.
- Saisissez un Nom de métrique de journal, par exemple
health-mig-xyzq
. - Sous Libellés, cliquez sur Ajouter un libellé.
- Saisissez un Nom de libellé, par exemple
health_state
. - Définissez le Type de libellé sur
STRING
. - Définissez le Nom du champ sur
jsonPayload.instanceHealthStateChange.detailedHealthState
. Cela vous permettra de faire la distinction entre différents changements d'état. - Cliquez sur Terminé pour ajouter le libellé.
- Cliquez sur Créer la métrique.
Accédez à la page Métriques basées sur les journaux, puis recherchez la métrique nouvellement créée.
Cliquez sur le menu more_vert sur la ligne de la métrique, puis sélectionnez Afficher dans l'explorateur de métriques. L'explorateur de métriques s'ouvre et affiche le graphique représentant les modifications de l'état de toutes les instances de VM dans le groupe d'instances géré que vous avez spécifié dans la requête.
Identifier les VM qui passent souvent à l'état "Unhealthy"
Vous pouvez identifier les VM problématiques qui passent fréquemment à l'état UNHEALTHY
en créant une métrique qui suit les changements d'état de toutes les instances de VM de votre MIG et en regroupant cette métrique par instance.
Pour créer la métrique et la regrouper par instances, procédez comme suit :
Accédez à l'explorateur de journaux dans la console Google Cloud.
Saisissez la requête suivante dans le générateur de Requêtes, en utilisant l'ID de votre projet et le nom du groupe d'instances géré.
resource.type="gce_instance_group_manager" AND logName="projects/
PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND resource.labels.instance_group_manager_name="MIG_NAME "Dans la section Résultats de requête, cliquez sur Actions, puis sur Créer une métrique.
Sur la page Créer une métrique de journaux, procédez comme suit :
- Définissez le Type de métrique sur Compteur.
- Saisissez un Nom de métrique de journal, par exemple
health-mig-xyzq
. - Sous Libellés, cliquez sur Ajouter un libellé.
- Saisissez un Nom de libellé, par exemple
health_state
. - Définissez le Type de libellé sur
STRING
. - Définissez le Nom du champ sur
jsonPayload.instanceHealthStateChange.detailedHealthState
. Cela vous permettra de faire la distinction entre différents changements d'état. - Cliquez sur Terminé pour ajouter le libellé.
- De même, ajoutez un libellé, par exemple
instance
, avec le champ Nom du champ défini surjsonPayload.instanceHealthStateChange.instance
. - Cliquez sur Créer la métrique.
Accédez à la page Métriques basées sur les journaux, puis recherchez la métrique nouvellement créée.
Cliquez sur le menu more_vert sur la ligne de la métrique, puis sélectionnez Afficher dans l'explorateur de métriques. L'explorateur de métriques s'ouvre et affiche le graphique représentant les modifications de l'état de toutes les instances de VM dans le groupe d'instances géré que vous avez spécifié dans la requête.
Définissez le paramètre Grouper par sur
instance
pour afficher le nombre total de changements d'état de chaque instance.
Les instances présentant le plus grand nombre global de changements d'état sont celles qui sont le plus fréquemment non opérationnelles.
Vérifier les causes d'une tentative d'autoréparation
Vous pouvez déterminer la cause d'une tentative d'autoréparation en filtrant les journaux sur les opérations repair
sur une instance de VM donnée.
Pour filtrer les opérations de réparation, procédez comme suit :
Accédez à l'explorateur de journaux dans la console Google Cloud.
Saisissez la requête suivante dans le générateur de Requêtes en utilisant l'ID de votre projet et le nom de l'instance.
resource.type="gce_instance" AND logName="projects/
PROJECT_ID /logs/cloudaudit.googleapis.com%2Fsystem_event" AND protoPayload.methodName="compute.instances.repair.recreateInstance" AND protoPayload.resourceName=~"/INSTANCE_NAME $"Cliquez sur Exécuter la requête. Les Résultats de requête affichent toutes les tentatives d'autoréparation de la VM avec le motif d'autoréparation dans
protoPayload.status.message
.
Vérifier si l'autoréparation a réussi pour une VM
Vous pouvez vérifier si une tentative d'autoréparation a réussi pour une instance de VM en filtrant les journaux des opérations repair
et des changements d'état par nom d'instance de VM.
Si l'état de l'instance affiche HEALTHY
après une opération de réparation, le journal des changements d'état contiendra une entrée correspondante. Suivez la procédure :
Accédez à l'explorateur de journaux dans la console Google Cloud.
Saisissez la requête suivante dans le générateur de Requêtes en utilisant l'ID de votre projet et le nom de l'instance.
(resource.type="gce_instance" AND logName="projects/
PROJECT_ID /logs/cloudaudit.googleapis.com%2Fsystem_event" AND protoPayload.methodName="compute.instances.repair.recreateInstance" AND protoPayload.resourceName=~"/INSTANCE_NAME $") OR (resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND labels."compute.googleapis.com/instance_name"="INSTANCE_NAME ")La première partie de la requête affiche les opérations de réparation d'instance, qui indiquent qu'une recréation a été déclenchée par l'autoréparation du MIG afin de rendre à nouveau l'instance opérationnelle. La deuxième partie de la requête affiche tous les changements d'état de l'instance de VM.
Dans les Résultats de requête, l'événement de changement d'état avec
detailedHealthState
défini surHEALTHY
peu de temps après une opération de réparation indique que la tentative d'autoréparation a abouti.
Déterminer la valeur de délai initial d'un MIG
Déterminer la valeur de délai initial appropriée pour l'autoréparation du MIG est plus facile avec la journalisation d'état de l'instance de VM. Vous pouvez utiliser les journaux pour observer le délai entre la fin de l'opération instances.insert
et la réception du premier signal opérationnel pour un ensemble d'instances dans un groupe. Cet intervalle de temps indique le temps nécessaire au démarrage complet des instances.
Certaines VM pouvant démarrer plus lentement que d'autres, nous vous recommandons d'ajouter une marge au temps d'initialisation observé (de l'opération d'insertion à la confirmation de l'état opérationnel) lorsque vous spécifiez le délai initial dans la règle d'autoréparation.
Pour mesurer le délai entre l'opération d'insertion d'instance et la confirmation de l'état opérationnel de l'instance, exécutez une requête pour les journaux des opérations insert
et des changements d'état par nom d'instance de VM. Utilisez les horodatages des deux opérations pour calculer le temps d'initialisation de l'instance. Suivez la procédure :
Accédez à l'explorateur de journaux dans la console Google Cloud.
Saisissez la requête suivante dans le générateur de Requêtes en utilisant l'ID de votre projet et le nom de l'instance.
(resource.type="gce_instance" AND logName="projects/
PROJECT_ID /logs/cloudaudit.googleapis.com%2Factivity" AND protoPayload.request.@type="type.googleapis.com/compute.instances.insert" AND operation.last="true" AND protoPayload.resourceName=~"/INSTANCE_NAME $") OR (resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID /logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:* AND labels."compute.googleapis.com/instance_name"="INSTANCE_NAME ")La première partie de la requête indique la fin de l'opération d'insertion de VM. La deuxième partie indique tous les changements d'état de la VM.
Dans les Résultats de requête, l'horodatage de l'événement de changement d'état avec
detailedHealthState
défini surHEALTHY
peu de temps après l'opération d'insertion indique le temps nécessaire à cette VM pour démarrer.Répétez la procédure avec quelques VM supplémentaires afin d'obtenir une meilleure approximation du paramètre de délai initial.