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
Dans Google Cloud Console, accédez à la page Vérifications d'état.
Cliquez sur Créer une vérification de l'état.
Pour le champ Journaux, sélectionnez Activé.
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 d'état pour différents protocoles avec journalisation, utilisez la ressource google_compute_health_check
.
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
Dans Google Cloud Console, accédez à la page Vérifications d'état.
Cliquez sur le nom de votre vérification d'état.
Cliquez sur Modifier (
).Pour le champ Journaux, sélectionnez Activé.
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
Dans Google Cloud Console, accédez à la page Vérifications d'état.
Cliquez sur le nom de votre vérification d'état.
Cliquez sur Modifier (
).Dans le champ Journaux, sélectionnez Désactivé.
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
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.
Pour afficher tous les journaux, dans le menu Ressource, sélectionnez
GCE Instance Group
ouNetwork Endpoint Group
, selon le type de backend.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 :
- Le serveur renvoie la mauvaise réponse. Le point de terminaison est donc considéré comme
UNHEALTHY
. - Le serveur cesse de répondre, et le nouvel état est
TIMEOUT
. - L'équilibreur de charge considère toujours le point de terminaison comme étant
UNHEALTHY
, car l'état détailléTIMEOUT
correspond à l'état de baseUNHEALTHY
.
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 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 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é. |
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
- Consultez les informations conceptuelles sur les vérifications d'état.
- Créez une vérification d'état.
- Apprenez-en plus sur Logging.