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 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 :
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
Accédez à l'explorateur de journaux dans Google Cloud Console :
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.
PROJECT_ID
: ID de votre projetMIG_NAME
: MIG pour lequel vous souhaitez afficher les journaux de changement d'état.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.Accédez à l'explorateur de journaux dans Google Cloud Console :
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.
PROJECT_ID
: ID de votre projetINSTANCE_NAME
: instance gérée pour laquelle vous souhaitez afficher les journaux de changement d'état.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.- 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.
- 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.
Accédez à l'explorateur de journaux dans Google Cloud Console :
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.
Accédez à l'explorateur de journaux dans Google Cloud Console :
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.
Accédez à l'explorateur de journaux dans Google Cloud Console :
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.Accédez à l'explorateur de journaux dans Google Cloud Console :
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
.Accédez à l'explorateur de journaux dans Google Cloud Console :
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.Accédez à l'explorateur de journaux dans Google Cloud Console :
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.
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.
Console
gcloud
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 :
REST
Pour afficher les journaux de changement d'état, envoyez une requête
POST
à la méthodeentries.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: Bearer OAUTH2_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: Bearer OAUTH2_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 :
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.
Console
gcloud
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 :
REST
Pour afficher les journaux de changement d'état d'une instance gérée, envoyez une requête
POST
à la méthodeentries.list
.curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_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 :
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 :
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 valeurfalse
, il est omis du journal.Le 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 :
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 :
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 :
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 :
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 :
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 afficheHEALTHY
après une opération de réparation, le journal des changements d'état contiendra une entrée correspondante. Suivez la procédure :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 :Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/11/22 (UTC).
-