Informations concernant les journaux de vérification d'état

Vous pouvez obtenir des journaux des vérifications de l'état de l'équilibrage de charge lorsqu'un point de terminaison change d'état d'intégrité. Vous pouvez utiliser les journaux de vérification d'état pour :

  • le débogage et le dépannage en direct de l'état d'intégrité du point de terminaison ;
  • l'obtention de l'état d'intégrité du point de terminaison ;
  • les audits et la conformité.

Les vérifications d'état journalisent les informations de transition d'état dans Logging. Vous activez ou désactivez la journalisation par vérification d'état.

Pour afficher les journaux de vérification d'état dans Logging, vous devez vous assurer que vous n'avez pas d'exclusion de journaux qui s'applique aux vérifications d'état. Pour savoir comment vérifier si les journaux GCE Instance Group et Network Endpoint Group sont autorisés, consultez la section Filtres d'exclusion.

Activer et désactiver la journalisation

Cette section explique comment activer la journalisation pour une vérification d'état nouvelle ou existante, et comment la désactiver pour une vérification d'état existante.

Activer la journalisation pour une nouvelle vérification d'état

Console

  1. Dans Google Cloud Console, accédez à la page Vérifications d'état.

    Accéder à la page "Vérifications d'état"

  2. Cliquez sur Créer une vérification de l'état.

  3. Pour le champ Journaux, sélectionnez Activé.

  4. Continuez à configurer votre vérification d'état.

gcloud

gcloud compute health-checks create PROTOCOL HEALTH_CHECK_NAME \
    --enable-logging

L'option --enable-logging active la journalisation pour cette vérification d'état.

Terraform

Pour créer une vérification de l'état pour différents protocoles avec journalisation, utilisez la ressource google_compute_health_check.

resource "google_compute_health_check" "health_check_tcp_with_logging" {
  provider = google-beta

  name = "health-check-tcp"

  timeout_sec        = 1
  check_interval_sec = 1

  tcp_health_check {
    port = "22"
  }

  log_config {
    enable = true
  }
}

Pour un équilibreur de charge régional, utilisez la ressource google_compute_region_health_check.

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Activer la journalisation pour une vérification d'état existante

Console

  1. Dans Google Cloud Console, accédez à la page Vérifications d'état.

    Accéder à la page "Vérifications d'état"

  2. Cliquez sur le nom de votre vérification d'état.

  3. Cliquez sur Modifier ().

  4. Pour le champ Journaux, sélectionnez Activé.

  5. Cliquez sur Enregistrer.

gcloud

gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \
    --enable-logging

L'option --enable-logging active la journalisation pour cette vérification d'état.

Activer la journalisation pour une vérification d'état existante

Console

  1. Dans Google Cloud Console, accédez à la page Vérifications d'état.

    Accéder à la page "Vérifications d'état"

  2. Cliquez sur le nom de votre vérification d'état.

  3. Cliquez sur Modifier ().

  4. Dans le champ Journaux, sélectionnez Désactivé.

  5. Cliquez sur Enregistrer.

gcloud

gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \
    --no-enable-logging

L'option --no-enable-logging désactive la journalisation pour cette vérification d'état.

Afficher les journaux

  1. Pour afficher les journaux, accédez à la page Visionneuse de journaux.

    Les journaux de vérification d'état sont indexés par groupe d'instances ou groupe de points de terminaison du réseau.

  2. Pour afficher tous les journaux, dans le menu Ressource, sélectionnez GCE Instance Group ou Network Endpoint Group, selon le type de backend.

  3. Vous pouvez également coller le texte suivant dans le champ Requête. Remplacez PROJECT_ID par l'ID de votre projet.

    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
    

Vous pouvez configurer l'exportation de métriques basées sur les journaux pour les vérifications d'état de l'équilibreur de charge.

Afficher les journaux à l'aide de filtres

Vous pouvez également obtenir des journaux basés sur des recherches plus spécifiques. Par exemple, le filtre suivant affiche tous les journaux pour une adresse IP d'instance backend spécifiée :

  logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
jsonPayload.healthCheckProbeResult.ipAddress="IP_ADDRESS"

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.

Contenu consigné

Les entrées des journaux de vérification d'état contiennent des informations utiles pour surveiller et déboguer l'état de vos points de terminaison. Il s'agit des types d'informations suivants :

  • Informations générales figurant dans la plupart des journaux, telles que la gravité, l'ID de projet, le numéro de projet et le code temporel.
  • Champs spécifiques aux vérifications d'état, décrits dans les tableaux suivants.

États des vérifications d'état

Un point de terminaison est considéré comme HEALTHY ou UNHEALTHY. Voici les états de base. Dans chacun de ces états de base, il existe plusieurs états plus détaillés.

Les NEG hybrides et les NEG Internet régionaux utilisant des vérifications d'état Envoy distribuées ne sont pas compatibles avec les états détaillés.

Le tableau suivant montre le mappage entre les états de base et les états détaillés.

État de base État détaillé
HEALTHY HEALTHY
DRAINING
UNHEALTHY UNKNOWN
UNHEALTHY
TIMEOUT

Les changements d'état ne modifient pas toujours le comportement de l'équilibreur de charge. Prenons le cas suivant :

  1. Le serveur renvoie la mauvaise réponse. Le point de terminaison est donc considéré comme UNHEALTHY.
  2. Le serveur cesse de répondre, et le nouvel état est TIMEOUT.
  3. L'équilibreur de charge considère toujours le point de terminaison comme étant UNHEALTHY, car l'état détaillé TIMEOUT correspond à l'état de base UNHEALTHY.

Le tableau suivant fournit une définition de chaque état.

État détaillé de la vérification d'état Signification État de base
HEALTHY Le point de terminaison est accessible et respecte les exigences définies par la vérification d'état. HEALTHY
UNHEALTHY Le point de terminaison est accessible, mais il ne respecte pas les exigences définies par la vérification d'état. UNHEALTHY
DRAINING Le point de terminaison est en cours de drainage. Les connexions existantes au point de terminaison sont autorisées à s'exécuter jusqu'à la fin, mais les nouvelles connexions sont refusées. Le point de terminaison est considéré comme étant non opérationnel (HEALTHY). HEALTHY
TIMEOUT Le point de terminaison est inaccessible. En fonction du type de vérification d'état, une connexion au point de terminaison ne peut pas être établie, ou le serveur n'a pas répondu dans le délai imparti. Le point de terminaison est considéré comme étant non opérationnel (UNHEALTHY). UNHEALTHY
UNKNOWN Le système de vérification de l'état connaît le point de terminaison, mais son état n'est pas connu. Le point de terminaison est considéré comme étant non opérationnel (UNHEALTHY). UNHEALTHY

Plusieurs vérificateurs d'état vérifient chaque point de terminaison. Google Cloud supprime les entrées de journal en double avant la journalisation afin que des journaux uniques soient générés.

Si un vérificateur d'état redémarre, il est possible que l'état de fonctionnement enregistré UNKNOWN passe à l'un des états connus répertoriés précédemment, même si l'état de fonctionnement du point de terminaison n'a pas changé. Google Cloud utilise la méthode heuristique la plus optimale possible pour supprimer ces entrées de journal.

Si vous utilisez le drainage de connexion, les journaux de vérification d'état ne sont pas générés avec l'état de fonctionnement du point de terminaison DRAINING. En effet, les journaux de vérification d'état reflètent les résultats observés par les vérifications d'état, et le drainage de connexion n'a pas d'incidence sur les résultats observés. Le drainage de connexion fonctionne simplement pour indiquer à l'équilibreur de charge que le nouvel état est DRAINING et remplace effectivement l'état de fonctionnement réel du point de terminaison observé par le vérificateur d'état.

Vous pouvez interagir avec les journaux à l'aide de l'API Cloud Logging. L'API permet de filtrer de façon interactive les journaux pour lesquels des champs spécifiques sont définis, et d'exporter les journaux correspondants vers Cloud Logging, Cloud Storage, BigQuery ou Pub/Sub. Pour en savoir plus sur l'API Cloud Logging, consultez la page Présentation de l'API Cloud Logging.

Entrée du journal de vérification de l'état

Le paramètre jsonPayload de LogEntry est renseigné avec un champ healthCheckProbeResult contenant les informations suivantes.

Champ Type Description
ipAddress string Adresse IP interne principale associée à l'interface réseau principale de chaque VM de backend. Il s'agit d'une chaîne lisible.
healthCheckProtocol enum(HealthCheckProtocol) Protocole de vérification de l'état utilisé pour vérifier l'état du point de terminaison. Exemples : TCP, HTTP, HTTPS.
healthState enum(HealthState) État d'intégrité actuel du point de terminaison : HEALTHY ou UNHEALTHY.
previousHealthState enum(HealthState) État d'intégrité précédent du point de terminaison : HEALTHY ou UNHEALTHY.
detailedHealthState enum(DetailedHealthState) État d'intégrité détaillé actuel du point de terminaison. Pour obtenir la liste des possibilités, consultez la section États des vérifications d'état.

Non compatible avec les vérifications d'état Envoy distribuées pour les NEG hybrides et les NEG Internet régionaux.

previousDetailedHealthState enum(DetailedHealthState) État d'intégrité détaillé précédent du point de terminaison. Pour obtenir la liste des possibilités, consultez la section États des vérifications d'état.

Non compatible avec les vérifications d'état Envoy distribuées pour les NEG hybrides et les NEG Internet régionaux.

probeRequest string

Pour HTTP, HTTPS et HTTP/2, il s'agit du chemin d'accès à la requête d'URL (champ requestPath dans la configuration de la ressource).

Pour TCP/SSL, il s'agit de la chaîne facultative configurée qui est envoyée une fois la connexion de vérification d'état établie (champ request dans la configuration de la ressource).

Non compatible avec les vérifications d'état Envoy distribuées pour les NEG hybrides et les NEG Internet régionaux.

probeCompletionTimestamp google.protobuf.Timestamp Code temporel de la fin de la vérification.
connectLatency google.protobuf.Duration Temps passé à configurer la connexion pour les protocoles de vérification d'état orientés connexion : TCP, SSL, HTTP, HTTPS et HTTP/2.

Non compatible avec les vérifications d'état Envoy distribuées pour les NEG hybrides et les NEG Internet régionaux.

responseLatency google.protobuf.Duration Latence entre la requête et la réponse, mesurée par le vérificateur.

Non compatible avec les vérifications d'état Envoy distribuées pour les NEG hybrides et les NEG Internet régionaux.

probeResultText string Texte descriptif lié au résultat de la vérification. Il peut indiquer "Connection timed out" (Connexion expirée) ou "HTTP response: Bad Gateway" (Réponse HTTP : passerelle incorrecte), ou être vide.

Non compatible avec les vérifications d'état Envoy distribuées pour les NEG hybrides et les NEG Internet régionaux.

probeSourceIp string Adresse IP à partir de laquelle la vérification de l'état a été envoyée.

Pour les vérifications d'état Envoy distribuées, il s'agit de l'adresse IP du proxy provenant du sous-réseau proxy réservé.

probeSourceRegion string

Région du point de vue cloud à partir duquel la vérification de l'état a été effectuée.

Ce champ n'est renseigné que pour les sondes des règles de routage Cloud DNS si le champ sourceRegions est défini dans la vérification de l'état correspondante.

targetIp string Adresse IP qui était la cible de la vérification. Elle peut être différente de ipAddress. L'adresse IP de destination de la vérification dépend du type d'équilibreur de charge. Pour en savoir plus, consultez la section Destination des paquets de vérification dans la présentation des vérifications d'état.
targetPort int Port qui était la cible de la vérification. Il peut s'agir du port par défaut de la vérification ou du port que vous avez spécifié lors de la création de la vérification d'état.

Exemples de filtres

Cette section fournit des exemples de filtres de journaux courants.

Rechercher tous les résultats de vérifications d'état pour un groupe d'instances spécifique

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"  AND
resource.type="gce_instance_group" AND
resource.labels.instance_group_name="INSTANCE_GROUP_NAME"

Rechercher tous les résultats de vérifications d'état pour un groupe de points de terminaison du réseau spécifique

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"  AND
resource.type="gce_network_endpoint_group" AND
resource.labels.network_endpoint_group_id="ENDPOINT_GROUP_ID"

Rechercher toutes les transitions de vérifications d'état pour l'adresse IP de l'instance backend 10.128.15.201

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
jsonPayload.healthCheckProbeResult.ipAddress="10.128.15.201"

Rechercher tous les points de terminaison qui étaient auparavant à l'état HEALTHY (opérationnels), mais sont maintenant à l'état TIMEOUT (arrivés à expiration)

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
jsonPayload.healthCheckProbeResult.previousDetailedHealthState="HEALTHY"
jsonPayload.healthCheckProbeResult.detailedHealthState="TIMEOUT"

Rechercher des journaux d'état pour une période spécifique

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
timestamp>"2019-02-14T02:20:00.0Z"
timestamp<"2019-02-14T03:30:00.0Z"

Limites

  • Les journaux ne sont générés que pour la transition d'état des points de terminaison.
  • Les vérifications d'état héritées ne sont pas compatibles.
  • Les pools cibles ne sont pas compatibles.
  • Les journaux ne sont pas générés lorsque l'état du point de terminaison est UNKNOWN.
  • Dans le cas de migrations de VM, il est possible qu'aucune entrée de journal ne s'affiche lorsque l'état du point de terminaison passe à l'état UNHEALTHY.
  • Les journaux ne sont pas générés lorsque les points de terminaison sont supprimés. Par exemple, lorsque vous arrêtez une VM.

Étapes suivantes