Ce document fournit les informations dont vous avez besoin pour comprendre les métriques de journalisation et de surveillance des équilibreurs de charge d'application internes. Les métriques de journalisation et de surveillance des équilibreurs de charge d'application internes régionaux et internes interrégionaux sont identiques.
Journalisation
Vous pouvez activer la journalisation par service de backend. Le mappage d'URL d'un équilibreur de charge d'application interne peut faire référence à plusieurs services de backend. Vous devrez peut-être activer la journalisation pour plusieurs services de backend, en fonction de votre configuration.
Échantillonnage et collecte des journaux
Les requêtes (et les réponses correspondantes) gérées par les instances de machine virtuelle (VM) de backend d'équilibreur de charge sont échantillonnées. Ces requêtes échantillonnées sont ensuite traitées pour générer des journaux. Vous contrôlez la fraction des requêtes émises en tant qu'entrées de journal en fonction du paramètre logConfig.sampleRate. Lorsque logConfig.sampleRate
est défini sur 1.0
(100%), cela signifie que les journaux sont générés pour toutes les requêtes et écrits dans Cloud Logging.
Champs facultatifs
Les enregistrements de journal contiennent des champs obligatoires et des champs facultatifs. La section Contenu consigné répertorie les champs facultatifs et les champs obligatoires. Tous les champs obligatoires sont toujours inclus. Vous pouvez personnaliser quels sont les champs facultatifs à conserver.
Si vous sélectionnez Inclure tous les champs facultatifs, tous les champs facultatifs du format d'enregistrement du journal sont inclus dans les journaux de flux. Lorsque de nouveaux champs facultatifs sont ajoutés au format d'enregistrement, les journaux de flux incluent automatiquement les nouveaux champs.
Si vous sélectionnez Exclure tous les champs facultatifs, tous les champs facultatifs sont omis.
Si vous sélectionnez Personnalisé, vous pouvez spécifier les champs facultatifs que vous souhaitez inclure, par exemple
tls.protocol,tls.cipher
.
Pour obtenir des instructions sur la personnalisation des champs facultatifs, consultez la section Activer la journalisation sur un service de backend existant.
Activer la journalisation sur un service de backend existant
Pour les équilibreurs de charge d'application internes régionaux, procédez comme suit :
Console
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
Cliquez sur le nom de votre équilibreur de charge.
Cliquez sur Modifier (
).Cliquez sur Configuration du backend.
Cliquez sur Modifier (
) à côté de votre service de backend.Cliquez sur Configurations avancées (affinité de session, délai avant expiration du drainage de connexion).
Cliquez sur Activer la journalisation.
Définissez un taux d'échantillonnage. Vous pouvez définir un nombre compris entre
0.0
et1.0
, où0.0
signifie qu'aucune requête n'est enregistrée et1.0
signifie que 100 % des requêtes sont enregistrées. La valeur par défaut est1.0
.Facultatif : pour inclure tous les champs facultatifs dans les journaux, dans la section Champs facultatifs, cliquez sur Inclure tous les champs facultatifs.
Pour terminer la modification du service de backend, cliquez sur Mettre à jour.
Pour terminer la modification de l'équilibreur de charge, cliquez sur Mettre à jour.
gcloud
Pour mettre à jour le service de backend afin d'activer la journalisation, exécutez la commande gcloud compute
backend-services update
.
gcloud compute backend-services update BACKEND_SERVICE \ --enable-logging \ --logging-sample-rate=RATE \ --region=REGION \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=OPTIONAL_FIELDS
Où :
--enable-logging
active la journalisation pour ce service de backend.--logging-sample-rate
permet de spécifier une valeur entre0.0
et1.0
, où0.0
signifie qu'aucune requête n'est enregistrée et1.0
signifie que 100 % des requêtes sont enregistrées. Ce paramètre n'est pertinent que lorsqu'il est associé au paramètre--enable-logging
. L'activation de la journalisation en définissant le taux d'échantillonnage sur0.0
équivaut à désactiver la journalisation. La valeur par défaut est1.0
.--logging-optional
vous permet de spécifier les champs facultatifs que vous souhaitez inclure dans les journaux :INCLUDE_ALL_OPTIONAL
pour inclure tous les champs facultatifs.EXCLUDE_ALL_OPTIONAL
(par défaut) pour exclure tous les champs facultatifs.CUSTOM
pour inclure une liste personnalisée de champs facultatifs que vous spécifiez dansOPTIONAL_FIELDS
.
--logging-optional-fields
vous permet de spécifier une liste de champs facultatifs séparés par une virgule que vous souhaitez inclure dans les journaux.Par exemple,
tls.protocol,tls.cipher
ne peut être défini que siLOGGING_OPTIONAL_MODE
est défini surCUSTOM
.
Pour les équilibreurs de charge d'application internes interrégionaux, procédez comme suit :
Console
Dans Google Cloud Console, accédez à la page Équilibrage de charge.
Cliquez sur le nom de votre équilibreur de charge.
Cliquez sur Modifier (
).Cliquez sur Configuration du backend.
Cliquez sur Modifier (
) à côté de votre service de backend.Cliquez sur Configurations avancées (affinité de session, délai avant expiration du drainage de connexion).
Cliquez sur Activer la journalisation.
Définissez un taux d'échantillonnage. Vous pouvez définir un nombre compris entre
0.0
et1.0
, où0.0
signifie qu'aucune requête n'est enregistrée et1.0
signifie que 100 % des requêtes sont enregistrées. La valeur par défaut est1.0
.Facultatif : pour inclure tous les champs facultatifs dans les journaux, dans la section Champs facultatifs, cliquez sur Inclure tous les champs facultatifs.
Pour terminer la modification du service de backend, cliquez sur Mettre à jour.
Pour terminer la modification de l'équilibreur de charge, cliquez sur Mettre à jour.
gcloud
Pour mettre à jour le service de backend afin d'activer la journalisation, exécutez la commande gcloud compute
backend-services update
.
gcloud compute backend-services update BACKEND_SERVICE \ --enable-logging \ --logging-sample-rate=RATE \ --global \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=OPTIONAL_FIELDS
Où :
--enable-logging
active la journalisation pour ce service de backend.--logging-sample-rate
permet de spécifier une valeur entre0.0
et1.0
, où0.0
signifie qu'aucune requête n'est enregistrée et1.0
signifie que 100 % des requêtes sont enregistrées. Ce paramètre n'est pertinent que lorsqu'il est associé au paramètre--enable-logging
. L'activation de la journalisation en définissant le taux d'échantillonnage sur0.0
équivaut à désactiver la journalisation. La valeur par défaut est1.0
.--logging-optional
vous permet de spécifier les champs facultatifs que vous souhaitez inclure dans les journaux :INCLUDE_ALL_OPTIONAL
pour inclure tous les champs facultatifs.EXCLUDE_ALL_OPTIONAL
(par défaut) pour exclure tous les champs facultatifs.CUSTOM
pour inclure une liste personnalisée de champs facultatifs que vous spécifiez dansOPTIONAL_FIELDS
.
--logging-optional-fields
vous permet de spécifier une liste de champs facultatifs séparés par une virgule que vous souhaitez inclure dans les journaux.Par exemple,
tls.protocol,tls.cipher
ne peut être défini que siLOGGING_OPTIONAL_MODE
est défini surCUSTOM
.
Une fois la journalisation activée sur le service de backend, chaque requête HTTP(S) est consignée via Cloud Logging.
Afficher les journaux
Pour afficher les journaux, accédez à la page Explorateur de journaux dans la console Google Cloud.
Les journaux de l'équilibreur de charge d'application internes sont indexés d'abord par réseau, puis par région.
- Pour afficher les journaux de tous les équilibreurs de charge d'application internes, sélectionnez Règle d'équilibreur de charge d'application interne dans le premier menu déroulant.
- Pour afficher les journaux d'un seul réseau, sélectionnez Règle d'équilibrage de charge d'application interne, puis le nom d'un réseau.
- Pour afficher les journaux d'une seule région du réseau, sélectionnez Règle d'équilibrage de charge d'application interne >
NETWORK
>REGION
.
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.
Vous pouvez configurer l'exportation de métriques basées sur les journaux pour les journaux de ressources (resource.type="internal_http_lb_rule"
). Les métriques créées sont basées sur la ressource "Règle d'équilibreur de charge d'application interne", disponible dans les tableaux de bord Cloud Monitoring:
Contenu consigné
Les entrées des journaux de l'équilibreur de charge d'application interne contiennent des informations utiles pour surveiller et déboguer votre trafic HTTP(S). Les enregistrements de journal contiennent des champs obligatoires, qui sont les champs par défaut de chaque enregistrement de journal, ainsi que des champs facultatifs qui ajoutent des informations supplémentaires sur votre trafic HTTP(S). Ils peuvent être omis pour réduire les coûts de stockage. Les entrées de journal contiennent les types d'informations suivants :
- Informations générales figurant dans la plupart des journaux Google Cloud, telles que la gravité, l'ID de projet, le numéro de projet et l'horodatage, comme décrit dans LogEntry.
- Champs de journal HttpRequest.
Le format "multi-champs" de certains champs affiche plusieurs données dans un même champ. Par exemple, le champ tls
est au format TlsDetails
, qui contient le protocole TLS et l'algorithme de chiffrement TLS dans un seul champ.
Ces champs particuliers sont décrits dans le tableau sur le format des enregistrements ci-dessous.
Champ | Type | Type de champ : obligatoire ou facultatif | Description |
---|---|---|---|
logName
|
chaîne | Requis |
Nom de la ressource du journal à laquelle appartient cette entrée de journal. Au format "projects/PROJECT_ID/logs/requests" .
|
timestamp
|
chaîne | Requis | Heure à laquelle la requête a commencé. |
severity
|
Format LogSeverity | Requis |
Gravité de l'entrée de journal. La valeur par défaut est LogSeverity.DEFAULT .
|
httpRequest
|
Objet HttpRequest | Requis | Proto HttpRequest qui décrit la requête HTTP(S) en cours de journalisation. |
trace
|
chaîne | Requis |
Nom de ressource de la trace associée à l'entrée de journal, le cas échéant. S'il contient un nom de ressource relatif, le nom est supposé être associé à https://tracing.googleapis.com . Exemple :projects/PROJECT_ID/traces/06796866738c859f2f19b7cfb3214824
Les équilibreurs de charge d'application internes ne sont pas compatibles avec ce champ. |
spanId
|
chaîne | Requis |
ID de délai dans la trace associée à l'entrée de journal. Pour les délais de trace, cette chaîne utilise le même format que l'API Trace v2 : encodage hexadécimal à 16 caractères d'un tableau de 8 octets, tel que 000000000000004a .
Les équilibreurs de charge d'application internes ne sont pas compatibles avec ce champ. |
resource
|
Objet MonitoredResource | Requis |
La ressource surveillée qui a généré cette entrée de journal. L'objet Par exemple, les descripteurs de ressources surveillées pour les équilibreurs de charge d'application internes ont le type de ressource |
jsonPayload | object (format Struct) | Obligatoire | Charge utile de l'entrée de journal, exprimée sous la forme d'un objet JSON. L'objet JSON contient les champs suivants :
|
chaîne | Requis | Le champ Le champ n'est pas consigné si la valeur est une chaîne vide. Cela peut se produire si le proxy ou le backend ne renvoie pas d'erreur ou si le code d'erreur n'est pas Le champ
|
|
chaîne | Requis | Le champ backendTargetProjectNumber contient le numéro de projet qui identifie le propriétaire du service de backend ou du bucket backend.
|
|
chaîne | Requis | Le champ serviceDirectoryService contient le nom du service d'annuaire des services sur lequel la défaillance Cloud FIT a été configurée. |
|
chaîne | Requis | Le champ cloudFitExperiment contient le nom du test Cloud FIT. |
|
chaîne | Requis | Le champ cloudFitFault contient le nom de la défaillance injectée par un test de défaillance Cloud FIT dans ce chemin de requête. |
|
ServiceExtensionInfo | Requis | Le champ serviceExtensionInfo stocke des informations sur les flux gRPC de l'équilibreur de charge vers les extensions de service. Pour en savoir plus, consultez la section
Qu'est-ce qui est consigné pour les extensions d'accroche ? |
|
AuthzPolicyInfo | Obligatoire | Le champ authzPolicyInfo stocke des informations sur le résultat de la stratégie d'autorisation. Ces informations ne sont disponibles que pour les équilibreurs de charge d'application internes pour lesquels la
Stratégie d'autorisation est activée. Pour en savoir plus, consultez la section
Qu'est-ce qui est consigné pour la règle d'autorisation ?. |
|
TlsDetails | Facultatif | Le champ tls contient les informations TlsDetails qui spécifient les métadonnées TLS pour la connexion entre le client et l'équilibreur de charge d'application interne. Ce champ n'est disponible que si le client utilise le chiffrement TLS/SSL. |
|
MtlsDetails | Facultatif | Le champ mtls contient la valeur MtlsDetails qui spécifie les métadonnées mTLS pour la connexion entre le client et l'équilibreur de charge d'application interne. Ce champ n'est disponible que si l'équilibreur de charge utilise le protocole d'authentification TLS mutuelle (mTLS) d'interface.
|
Format de champ TlsDetails
Champ | Format du champ | Type de champ : obligatoire ou facultatif | Description |
---|---|---|---|
protocol | chaîne | Facultatif | Protocole TLS utilisé par les clients pour établir une connexion avec l'équilibreur de charge. Les valeurs possibles sont TLS 1.0, 1.1, 1.2,
1.3 , et QUIC .
Cette valeur est définie sur NULL si le client n'utilise pas le chiffrement TLS/SSL.
|
cipher | chaîne | Facultatif | Algorithme de chiffrement TLS que les clients peuvent utiliser pour établir une connexion avec l'équilibreur de charge. Cette valeur est définie sur NULL si le client n'utilise pas HTTP(S) ou s'il n'utilise pas le chiffrement TLS/SSL.
|
Format de champ MtlsDetails
Champ | Format du champ | Type de champ : obligatoire ou facultatif | Description |
---|---|---|---|
clientCertPresent | Bool | Facultatif |
|
clientCertChainVerified | Bool | Facultatif |
|
clientCertError | chaîne | Facultatif | Chaînes prédéfinies représentant les conditions d'erreur. Pour plus d'informations sur les chaînes d'erreur, consultez la section Modes de validation des clients mTLS. |
clientCertSha256Fingerprint | chaîne | Facultatif | Empreinte SHA-256 du certificat client, encodée en base64. |
clientCertSerialNumber | chaîne | Facultatif | Numéro de série du certificat client.
Si le numéro de série est plus de 50 octets, la chaîne |
clientCertValidStartTime | chaîne | Facultatif | Horodatage (format de chaîne de date RFC 3339) avant lequel le certificat client n'est pas valide.
Par exemple, |
clientCertValidEndTime | chaîne | Facultatif | Horodatage (format de chaîne de date RFC 3339) après lequel le certificat client n'est pas valide.
Par exemple, |
clientCertSpiffeId | chaîne | Facultatif | L'ID SPIFFE du champ "Autre nom de l'objet (SAN)". Si la valeur n'est pas valide ou dépasse 2 048 octets, l'ID SPIFFE est défini sur une chaîne vide. Si l'ID SPIFFE dépasse 2 048 octets, la chaîne |
clientCertUriSans | chaîne | Facultatif | Liste des extensions SAN de type URI encodées en base64, séparées par une virgule. Les extensions SAN sont extraites du certificat client.
L'ID SPIFFE n'est pas inclus dans le champ Si le champ |
clientCertDnsnameSans | chaîne | Facultatif | Liste des extensions SAN de type DNSName encodées en base64, séparées par une virgule. Les extensions SAN sont extraites du certificat client. Si le champ |
clientCertIssuerDn | chaîne | Facultatif | Champ Issuer (émetteur) complet, encodé en base64, tiré du certificat. Si le champ |
clientCertSubjectDn | chaîne | Facultatif | Champ Subject (objet) complet, encodé en base64, tiré du certificat. Si le champ |
clientCertLeaf | chaîne | Facultatif | Certificat d'entité finale du client pour une connexion mTLS établie où le certificat a été validé. L'encodage des certificats est conforme à RFC 9440 : le certificat DER binaire est encodé en base64 (sans sauts de ligne, espaces ni autres caractères en dehors de l'alphabet en base64) et est délimité par des signes deux-points de chaque côté. Si |
clientCertChain | chaîne | Facultatif | Liste de certificats séparés par une virgule (dans l'ordre TLS standard) de la chaîne de certificats client pour une connexion mTLS établie où le certificat client a été validé, sans inclure le certificat d'entité finale. L'encodage du certificat est conforme à la norme RFC 9440. Si la taille combinée de |
Champ d'erreur proxyStatus
Le champ proxyStatus
contient une chaîne qui spécifie la raison pour laquelle l'équilibreur de charge a renvoyé une erreur. Le champ proxyStatus
comporte deux parties : proxyStatus error
et proxyStatus details
.
Cette section décrit les chaînes compatibles avec le champ proxyStatus error
.
Le champ proxyStatus error est applicable aux équilibreurs de charge suivants :
- Équilibreur de charge d'application externe régional
- Équilibreur de charge d'application interne interrégional
- Équilibreur de charge d'application interne régional
Erreur proxyStatus | Description | Codes de réponse d'accompagnement courants |
---|---|---|
destination_unavailable
|
L'équilibreur de charge considère que le backend est indisponible. Par exemple, les tentatives récentes de communication avec le backend ont échoué, ou une vérification de l'état a peut-être entraîné un échec. | 500, 503 |
connection_timeout
|
La tentative d'ouverture d'une connexion au backend par l'équilibreur de charge a expiré. | 504 |
connection_terminated
|
La connexion de l'équilibreur de charge au backend s'est terminée avant la réception d'une réponse complète. Ce
|
0, 502, 503 |
connection_refused
|
La connexion de l'équilibreur de charge au backend est refusée. | 502, 503 |
connection_limit_reached
|
L'équilibreur de charge est configuré pour limiter le nombre de connexions au backend dont il dispose, et cette limite a été dépassée. Ce
|
502, 503 |
destination_not_found
|
L'équilibreur de charge ne peut pas déterminer le backend approprié à utiliser pour cette requête. Par exemple, le backend peut ne pas être configuré. | 500, 404 |
dns_error
|
L'équilibreur de charge a rencontré une erreur DNS lors de la tentative de recherche d'une adresse IP pour le nom d'hôte du backend. | 502, 503 |
proxy_configuration_error
|
L'équilibreur de charge a rencontré une erreur de configuration interne. | 500 |
proxy_internal_error
|
L'équilibreur de charge a rencontré une erreur interne. | 0, 500, 502 |
proxy_internal_response
|
L'équilibreur de charge a généré la réponse sans tenter de se connecter au backend. | Tout code de réponse en fonction du type de problème. Par exemple, le code de réponse 410 signifie que le backend n'est pas disponible en raison d'un défaut de paiement.
|
http_response_timeout
|
L'équilibreur de charge a atteint un délai avant expiration configuré pour le service de backend en attendant la réponse complète du backend. | 504, 408 |
http_request_error
|
L'équilibreur de charge a rencontré une erreur HTTP 4xx, ce qui indique des problèmes avec la requête client. | 400, 403, 405, 406, 408, 411, 413, 414, 415, 416, 417 ou 429 |
http_protocol_error
|
L'équilibreur de charge a rencontré une erreur de protocole HTTP lors de la communication avec le backend. | 502 |
tls_protocol_error
|
L'équilibreur de charge a rencontré une erreur TLS lors du handshake TLS. | 0 |
tls_certificate_error
|
L'équilibreur de charge a rencontré une erreur au moment de la vérification du certificat présenté par le serveur ou par le client lorsque mTLS est activé. | 0 |
tls_alert_received
|
L'équilibreur de charge a rencontré une alerte TLS fatale lors du handshake TLS. | 0 |
Champ "proxyStatus details"
Le champ proxyStatus
contient une chaîne qui spécifie la raison pour laquelle l'équilibreur de charge a renvoyé une erreur. Le champ proxyStatus
comporte deux parties : proxyStatus error
et proxyStatus details
.
Le champ proxyStatus details
est facultatif et ne s'affiche que lorsque des informations supplémentaires sont disponibles.
Cette section décrit les chaînes compatibles avec le champ proxyStatus details
.
Le champ proxyStatus details s'applique aux équilibreurs de charge suivants :
- Équilibreur de charge d'application externe régional
- Équilibreur de charge d'application interne régional
- Équilibreur de charge d'application interne interrégional
Détails du proxyStatus | Description | Codes de réponse d'accompagnement courants |
---|---|---|
client_disconnected_before_any_response
|
La connexion au client a été interrompue avant que l'équilibreur de charge n'ait envoyé de réponse. | 0 |
backend_connection_closed
|
Le backend a fermé de manière inattendue sa connexion à l'équilibreur de charge. Cela peut se produire si l'équilibreur de charge envoie du trafic vers une autre entité, par exemple une application tierce dont le délai avant expiration TCP est inférieur à celui de l'équilibreur de charge, qui est de 10 minutes (600 secondes). | 502 |
failed_to_connect_to_backend
|
L'équilibreur de charge n'a pas pu se connecter au backend. Cet échec inclut les délais avant expiration pendant la phase de connexion. | 503 |
failed_to_pick_backend
|
L'équilibreur de charge n'a pas pu sélectionner un backend opérationnel pour traiter la requête. | 502 |
response_sent_by_backend
|
La requête HTTP a bien été envoyée par proxy au backend et la réponse a été renvoyée par le backend. | Le code de réponse HTTP est défini par le logiciel exécuté sur le backend. |
client_timed_out
|
La connexion entre l'équilibreur de charge et le client a dépassé le délai d'inactivité. Pour plus d'informations sur l'équilibreur de charge d'application externe régional, consultez la section Délai d'expiration du message keepalive HTTP client. Pour plus d'informations sur l'équilibreur de charge d'application interne, consultez la page Délai d'expiration du message keepalive HTTP client. |
0, 408 |
backend_timeout
|
Le backend a expiré lors de la génération d'une réponse. |
502 |
http_protocol_error_from_backend_response
|
La réponse du backend contient une erreur de protocole HTTP. | 501, 502 |
http_protocol_error_from_request
|
La requête du client contient une erreur de protocole HTTP. | 400, 503 |
http_version_not_supported
|
La version du protocole HTTP n'est pas acceptée. Actuellement, seuls les protocoles HTTP 0.9, 1.0, 1.1 et 2.0 sont compatibles. | 400 |
handled_by_identity_aware_proxy
|
Cette réponse a été générée par Identity-Aware Proxy (IAP) lors de la vérification d'identité du client avant d'autoriser l'accès. | 200, 302, 400, 401, 403, 500, 502 |
invalid_request_headers
|
Les en-têtes de requêtes HTTP reçus d'un client contiennent au moins un caractère non autorisé par une spécification HTTP applicable. Par exemple, les noms de champ d'en-tête qui incluent des guillemets doubles ( Pour en savoir plus, consultez les pages suivantes : |
400, 404 |
ip_detection_failed
|
L'adresse IP d'origine n'a pas pu être détectée. | Tout code de réponse possible en fonction de la nature de l'échec. La valeur doit être comprise entre 400 et 599. |
request_body_too_large
|
Le corps de la requête HTTP dépasse la longueur maximale acceptée par l'équilibreur de charge. | 413, 507 |
request_header_timeout
|
L'en-tête de requête a expiré, car l'équilibreur de charge n'a pas reçu la requête complète dans les cinq secondes. | 408, 504 |
denied_by_security_policy
|
L'équilibreur de charge a refusé cette requête en raison d'une règle de sécurité Google Cloud Armor. | 403 |
throttled_by_security_policy
|
La requête a été bloquée par une règle de limitation de Google Cloud Armor. | 429 |
client_cert_chain_invalid_eku
|
Le certificat client ou son émetteur ne dispose pas d'usage étendu de clé qui inclut clientAuth. Pour en savoir plus, consultez la section Erreurs consignées pour les connexions fermées. | 0 |
client_cert_chain_max_name_constraints_exceeded
|
Un certificat intermédiaire fourni pour la validation comportait plus de 10 contraintes de nom. Pour en savoir plus, consultez la section Erreurs consignées pour les connexions fermées. | 0 |
client_cert_invalid_rsa_key_size
|
La taille de la clé RSA d'un certificat intermédiaire ou feuille client n'est pas valide. Pour en savoir plus, consultez la section Erreurs consignées pour les connexions fermées. | 0 |
client_cert_not_provided
|
Le client n'a pas fourni le certificat demandé lors du handshake. Pour en savoir plus, consultez la section Erreurs consignées pour les connexions fermées. | 0 |
client_cert_pki_too_large
|
L'infrastructure PKI à utiliser pour la validation dispose de plus de trois certificats intermédiaires qui partagent les mêmes Subject et Subject Public Key Info .
Pour en savoir plus, consultez la section Erreurs consignées pour les connexions fermées.
|
0 |
client_cert_unsupported_elliptic_curve_key
|
Un client ou un certificat intermédiaire utilise une courbe elliptique non compatible. Pour en savoir plus, consultez la section Erreurs consignées pour les connexions fermées. | 0 |
client_cert_unsupported_key_algorithm
|
Un client ou un certificat intermédiaire utilise un algorithme non RSA ou ECDSA. Pour en savoir plus, consultez la section Erreurs consignées pour les connexions fermées. | 0 |
client_cert_validation_failed
|
La validation du certificat client échoue avec la ressource TrustConfig .
Pour en savoir plus, consultez la section Erreurs consignées pour les connexions fermées.
|
0 |
client_cert_validation_not_performed
|
Vous avez configuré le protocole TLS mutuel sans configurer de clé TrustConfig .
Pour en savoir plus, consultez la section Erreurs consignées pour les connexions fermées.
|
0 |
client_cert_validation_search_limit_exceeded
|
La limite de profondeur ou d'itération est atteinte lors de la tentative de validation de la chaîne de certificats. Pour en savoir plus, consultez la section Erreurs consignées pour les connexions fermées. | 0 |
client_cert_validation_timed_out
|
Le délai a été dépassé (200 ms) lors de la validation de la chaîne de certificats. Pour en savoir plus, consultez la section Erreurs consignées pour les connexions fermées. | 0 |
tls_version_not_supported
|
La version du protocole TLS est reconnue, mais n'est pas prise en charge. L'erreur entraîne une connexion TLS fermée. | 0 |
unknown_psk_identity
|
Les serveurs envoient cette erreur lorsque l'établissement de clés PSK est requis, mais que le client ne fournit pas d'identité PSK acceptable. Cette erreur entraîne une connexion TLS fermée. | 0 |
no_application_protocol
|
Envoyés par les serveurs lorsqu'une extension client "application_layer_protocol_negociation" n'annonce que des protocoles non compatibles avec le serveur. Consultez la section Extension de négociation de protocole de couche application TLS. Cette erreur entraîne une connexion TLS fermée. | 0 |
no_certificate
|
Aucun certificat n'a été trouvé. Cette erreur entraîne une connexion TLS fermée. | 0 |
bad_certificate
|
Un certificat n'est pas valide ou contient des signatures qui n'ont pas pu être validées. Cette erreur entraîne une connexion TLS fermée. | 0 |
unsupported_certificate
|
Le type d'un certificat n'est pas compatible. L'erreur entraîne une connexion TLS fermée. | 0 |
certificate_revoked
|
Un certificat a été révoqué par son signataire. L'erreur entraîne une connexion TLS fermée. | 0 |
certificate_expired
|
Un certificat a expiré ou n'est pas valide. L'erreur entraîne une connexion TLS fermée. | 0 |
certificate_unknown
|
Des problèmes non spécifiés sont survenus lors du traitement du certificat, ce qui le rend inacceptable. Cette erreur entraîne une connexion TLS fermée. | 0 |
unknown_ca
|
Une chaîne de certificats valide ou une chaîne partielle a été reçue, mais le certificat n'a pas été accepté, car il n'a pas pu être localisé ni mis en correspondance avec une ancre de confiance connue. L'erreur entraîne une connexion TLS fermée. | 0 |
unexpected_message
|
Un message inapproprié, tel qu'un message de handshake incorrect ou de données d'application prématurées a été reçu. Cette erreur entraîne une connexion TLS fermée. | 0 |
bad_record_mac
|
La protection d'un enregistrement reçu ne peut pas être annulée. L'erreur entraîne une connexion TLS fermée. | 0 |
record_overflow
|
Un enregistrement TLSCiphertext a été reçu d'une longueur supérieure à 214+256 octets ou un enregistrement a été déchiffré comme enregistrement TLSPlaintext avec plus de 214 octets (ou une autre limite négociée). L'erreur entraîne une connexion TLS fermée.
|
0 |
handshake_failure
|
Impossible de négocier un ensemble acceptable de paramètres de sécurité compte tenu des options disponibles. Cette erreur entraîne une connexion TLS fermée. | 0 |
illegal_parameter
|
Un champ du handshake était incorrect ou incohérent avec les autres champs. Cette erreur entraîne une connexion TLS fermée. | 0 |
access_denied
|
Un certificat ou une clé PSK valide a été reçu, mais le client n'a pas commencé la négociation lorsque le contrôle des accès a été appliqué. Cette erreur entraîne une connexion TLS fermée. | 0 |
decode_error
|
Un message n'a pas pu être décodé, car certains champs étaient en dehors de la plage spécifiée ou la longueur du message était incorrecte. Cette erreur entraîne une connexion TLS fermée. | 0 |
decrypt_error
|
Échec d'une opération cryptographique de handshake (et non de la couche d'enregistrement), y compris l'impossibilité de valider correctement une signature ou de valider un message terminé ou un liant PSK. Cette erreur entraîne une connexion TLS fermée. | 0 |
insufficient_security
|
Une négociation a échoué spécifiquement car le serveur requiert des paramètres plus sécurisés que ceux acceptés par le client. Cette erreur entraîne une connexion TLS fermée. | 0 |
inappropriate_fallback
|
Envoyée par un serveur en réponse à une tentative de nouvelle connexion non valide d'un client. Cette erreur entraîne une connexion TLS fermée. | 0 |
user_cancelled
|
L'utilisateur annule le handshake pour une raison sans rapport avec un échec de protocole. Cette erreur entraîne une connexion TLS fermée. | 0 |
missing_extension
|
Envoyés par les points de terminaison qui reçoivent un message de handshake ne contenant pas d'extension obligatoire à envoyer pour la version TLS proposée ou d'autres paramètres négociés. Cette erreur entraîne une connexion TLS fermée. | 0 |
unsupported_extension
|
Envoyés par les points de terminaison qui reçoivent un message de handshake contenant une extension dont l'inclusion dans le message de handshake donné est interdite, ou contenant des extensions dans ServerHello ou Certificate , et qui n'a pas été proposé dans l'élément ClientHello ou CertificateRequest correspondant.
Cette erreur entraîne une connexion TLS fermée.
|
0 |
unrecognized_name
|
Envoyés par les serveurs lorsqu'aucun serveur ne peut être identifié par le nom fourni par le client via l'extension "server_name". Consultez les définitions des extensions TLS. | 0 |
bad_certificate_status_response
|
Envoyée par les clients lorsqu'une réponse OCSP non valide ou non acceptable est fournie par le serveur via l'extension "status_request". Consultez les définitions des extensions TLS. Cette erreur entraîne une connexion TLS fermée. | 0 |
load_balancer_configured_resource_limits_reached
|
L'équilibreur de charge a atteint les limites de ressources configurées, telles que le nombre maximal de connexions. | 400, 500, 503 |
Entrées de journal de connexion TLS ayant échoué
Lorsque la connexion TLS entre le client et l'équilibreur de charge échoue avant qu'un backend ne soit sélectionné, les entrées de journal enregistrent les erreurs. Vous pouvez configurer les services de backend avec différents taux d'échantillonnage des journaux. Lorsqu'une connexion TLS échoue, le taux d'échantillonnage du journal de la connexion TLS est le plus élevé pour tous les service de backend. Par exemple, si vous avez configuré deux services de backend avec un taux d'échantillonnage de journalisation de 0.3
et 0.5
, le taux d'échantillonnage du journal de connexion TLS ayant échoué est 0.5
.
Vous pouvez identifier les échecs de connexions TLS en vérifiant les détails d'entrée de journal suivants:
- Le type d'erreur proxyStatus est
tls_alert_received
,tls_certificate_error
,tls_protocol_error
ouconnection_terminated
. - Aucune information de backend n'est disponible.
L'exemple suivant montre une entrée de journal TLS ayant échoué avec le champ proxyStatus error
:
json_payload: { @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" proxyStatus: "error="tls_alert_received"; details="server_to_client: handshake_failure"" log_name: "projects/529254013417/logs/mockservice.googleapis.com%20name" } http_request { latency { nanos: 12412000 } protocol: "HTTP/1.0" remote_ip: "127.0.0.2" } resource { type: "mock_internal_http_lb_rule" labels { backend_name: "" backend_scope: "" backend_scope_type: "UNKNOWN" backend_target_name: "" backend_target_type: "UNKNOWN" backend_type: "UNKNOWN" forwarding_rule_name: "l7-ilb-https-forwarding-rule-dev" matched_url_path_rule: "UNKNOWN" network_name: "lb-network" region: "REGION" target_proxy_name: "l7-ilb-https-proxy-dev" url_map_name: "" } } timestamp: "2023-08-15T16:49:30.850785Z"
Étiquettes de ressource
Le tableau suivant liste les libellés de ressources pour resource.type="internal_http_lb_rule"
.
Champ | Type | Description |
---|---|---|
network_name |
chaîne | Nom du réseau VPC de l'équilibreur de charge. |
project_id | chaîne | Identifiant du projet Google Cloud associé à cette ressource. |
region |
chaîne | Région dans laquelle l'équilibreur de charge est défini. |
url_map_name | chaîne | Nom de l'objet de mappage d'URL configuré pour sélectionner un service de backend. |
forwarding_rule_name |
chaîne | Nom de l'objet de règle de transfert. |
target_proxy_name | chaîne | Nom de l'objet de proxy cible référencé par la règle de transfert. |
matched_url_path_rule |
chaîne |
Règle de chemin de mappage d'URL ou règle de routage configurée dans le cadre de la clé de mappage d'URL. En cas d'absence de correspondance, ce champ peut prendre la valeur UNMATCHED ou UNKNOWN .
|
backend_target_name |
chaîne | Nom du backend sélectionné pour gérer la requête, en fonction de la règle de chemin de mappage d'URL ou de la règle de routage correspondant à la requête. |
backend_target_type | chaîne | Type de la cible de backend (BACKEND_SERVICE / UNKNOWN ). |
backend_name |
chaîne | Nom du groupe d'instances backend ou groupe de points de terminaison du réseau. |
backend_type |
chaîne | Type de backend : un groupe d'instances ou un NEG, ou inconnu. Cloud Logging consigne les requêtes lorsque |
backend_scope |
chaîne |
Champ d'application du backend : nom de la zone ou nom de la région. Peut être UNKNOWN quand backend_name est inconnu.
|
backend_scope_type |
chaîne | Champ d'application du backend (REGION /ZONE ). Peut être UNKNOWN quand backend_name est inconnu. |
backend_target_cross_project_id |
Chaîne |
ID de projet du bucket ou du service cible du backend. Ce champ n'est disponible que si la ressource cible du backend est créée dans un projet différent de celui dans lequel la ressource url_map est créée.
|
Journaux des requêtes de règles d'autorisation
L'objet authz_info
de la charge utile JSON de l'entrée de journal de l'équilibreur de charge contient des informations sur les règles d'autorisation. Vous pouvez configurer des métriques basées sur les journaux pour le trafic autorisé ou refusé par ces règles. Consultez plus d'informations sur le journal des règles d'autorisation.
Champ | Type | Description |
---|---|---|
authz_info.policies[] |
objet | Liste des règles correspondant à la requête. |
authz_info.policies[].name |
chaîne | Nom de la règle d'autorisation correspondant à la requête. Le nom est vide pour les raisons suivantes :
|
authz_info.policies[].result |
énum | Le résultat peut être ALLOWED ou DENIED . |
authz_info.policies[].details |
chaîne | Ces détails incluent les suivants :
|
authz_info.overall_result |
énum | Le résultat peut être ALLOWED ou DENIED . |
Afficher les journaux pour la validation du certificat client mTLS
Pour afficher les erreurs consignées pour les connexions fermées lors de la validation du certificat client mutuel TLS, procédez comme suit :
Console
Dans Google Cloud Console, accédez à la page Explorateur de journaux.
Cliquez sur le bouton Afficher la requête pour activer l'éditeur de requête.
Collez le texte suivant dans le champ de la requête. Remplacez
FORWARDING_RULE_NAME
par le nom de votre règle de transfert.jsonPayload.statusDetails=~"client_cert" jsonPayload.@type="type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" resource.labels.forwarding_rule_name=FORWARDING_RULE_NAME
Cliquez sur Exécuter la requête.
Surveillance
Les équilibreurs de charge d'application internes exportent les données de surveillance vers Monitoring.
Les métriques de surveillance peuvent être utilisées aux fins suivantes :
- Évaluation de la configuration, de l'utilisation et des performances d'un équilibreur de charge
- Résolution des problèmes
- Amélioration de l'utilisation des ressources et de l'expérience utilisateur
En plus des tableaux de bord prédéfinis proposés dans Monitoring, vous pouvez créer des tableaux de bord personnalisés, configurer des alertes et interroger les métriques via l'API Monitoring.
Afficher des métriques Cloud Monitoring
Console
Pour afficher les métriques d'une ressource surveillée à l'aide de l'explorateur de métriques, procédez comme suit :
-
Dans la console Google Cloud, accédez à la page leaderboardExplorateur de métriques :
Accéder à l'explorateur de métriques
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.
- Dans l'élément Métrique, développez le menu Sélectionner une métrique, saisissez
Internal Application Load Balancer Rule
dans la barre de filtre, puis utilisez les sous-menus pour sélectionner un type de ressource et des métriques spécifiques :- Dans le menu Ressources actives, sélectionnez Règle d'équilibreur de charge d'application interne.
- Pour sélectionner une métrique, utilisez les menus Catégories de métriques actives et Métriques actives.
- Cliquez sur Appliquer.
Pour supprimer des séries temporelles de l'affichage, utilisez l'élément Filtre.
Pour combiner des séries temporelles, utilisez les menus de l'élément Agrégation. Par exemple, pour afficher l'utilisation du processeur pour vos VM en fonction de leur zone, définissez le premier menu sur Moyenne et le second sur zone.
Toutes les séries temporelles sont affichées lorsque le premier menu de l'élément Agrégation est défini sur Non agrégé. Les paramètres par défaut de l'élément Aggregation (Agrégation) sont déterminés par le type de métrique que vous avez sélectionné.
- Pour le quota et les autres métriques qui indiquent un échantillon par jour, procédez comme suit :
- Dans le volet Affichage, définissez le type de widget sur Graphique à barres empilées.
- Définissez la période sur au moins une semaine.
Définir des règles d'alerte
Console
Vous pouvez créer des règles d'alerte pour surveiller les valeurs des métriques et être informé lorsqu'elles ne respectent pas une condition.
-
Dans la console Google Cloud, accédez à la page notificationsAlertes :
Accéder à l'interface des alertes
Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Monitoring.
- Si vous n'avez pas créé vos canaux de notification et que vous souhaitez être averti, cliquez sur Modifier les canaux de notification et ajoutez vos canaux de notification. Revenez à la page Alertes après avoir ajouté vos canaux.
- Sur la page Alertes, cliquez sur Créer une règle.
- Pour sélectionner la métrique, développez le menu Sélectionner une métrique, puis procédez comme suit :
- Pour limiter le menu aux entrées pertinentes, saisissez
Internal Application Load Balancer Rule
dans la barre de filtre. Si aucun résultat ne s'affiche après avoir filtré le menu, désactivez l'option Afficher seulement les ressources et les métriques actives. - Pour le champ Type de ressource, sélectionnez Règle d'équilibreur de charge d'application interne.
- Sélectionnez une Catégorie de métrique et une Métrique, puis cliquez sur Appliquer.
- Pour limiter le menu aux entrées pertinentes, saisissez
- Cliquez sur Suivant.
- Les paramètres de la page Configurer le déclencheur d'alerte déterminent le moment où l'alerte se déclenche. Sélectionnez un type de condition et, si nécessaire, spécifiez un seuil. Pour plus d'informations, consultez la page Créer des règles d'alerte basées sur un seuil de métrique.
- Cliquez sur Suivant.
- Facultatif : Pour ajouter des notifications à votre règle d'alerte, cliquez sur Canaux de notification. Dans la boîte de dialogue, sélectionnez un ou plusieurs canaux de notification dans le menu, puis cliquez sur OK.
- (Facultatif) Mettez à jour la durée de fermeture automatique de l'incident. Ce champ détermine à quel moment Monitoring ferme les incidents en l'absence de données de métriques.
- Facultatif : Cliquez sur Documentation, puis ajoutez les informations à inclure dans le message de notification.
- Cliquez sur Nom de l'alerte et saisissez un nom pour la règle d'alerte.
- Cliquez sur Créer une stratégie.
Définir des tableaux de bord Monitoring personnalisés
Console
Vous pouvez créer des tableaux de bord personnalisés Monitoring d'après des métriques d'équilibreur de charge d'application interne:
Dans la console Google Cloud, accédez à la page Monitoring.
Sélectionnez Tableaux de bord > Créer un tableau de bord.
Cliquez sur Add Chart (Ajouter un graphique).
Indiquez un titre pour le graphique.
Sélectionnez des métriques et des filtres. Pour les métriques, le type de ressource est Internal HTTP/S Load Balancer (Équilibreur de charge HTTP/S interne).
Cliquez sur Enregistrer.
Fréquence et conservation des rapports sur les métriques
Les métriques des équilibreurs de charge sont exportées vers Monitoring par lots de précision d'une minute. Les données de surveillance sont conservées pendant six semaines. Le tableau de bord fournit une analyse des données à des intervalles par défaut d'une heure, de six heures, d'un jour, d'une semaine et de six semaines. Vous pouvez demander manuellement une analyse à un intervalle compris entre une minute et six semaines.
Métriques de surveillance pour les équilibreurs de charge d'application internes
Les métriques suivantes pour les équilibreurs de charge d'application internes sont consignées dans Monitoring:
Métrique | Nom de domaine complet | Description |
---|---|---|
Nombre de requêtes | loadbalancing.googleapis.com/https/internal/request_count |
Nombre de requêtes diffusées par l'équilibreur de charge d'application interne. |
Nombre d'octets de requête | loadbalancing.googleapis.com/https/internal/request_bytes |
Nombre d'octets envoyés en tant que requêtes par les clients à l'équilibreur de charge d'application interne. |
Nombre d'octets de réponse | loadbalancing.googleapis.com/https/internal/response_bytes |
Nombre d'octets envoyés en tant que réponses au client depuis l'équilibreur de charge HTTP(S) interne. |
Total des latences | loadbalancing.googleapis.com/https/internal/total_latencies |
Distribution de la latence, en millisecondes. La latence est mesurée entre le moment où le proxy reçoit le premier octet de la requête et le moment où le proxy envoie le dernier octet de la réponse. |
Latences de backend | loadbalancing.googleapis.com/https/internal/backend_latencies |
Distribution de la latence, en millisecondes. La latence est mesurée entre le moment où le proxy envoie le premier octet de la requête au backend et le moment où le proxy reçoit le dernier octet de la réponse du backend. |
Dimensions de filtrage pour les métriques d'équilibreur de charge d'application internes
Les métriques sont agrégées pour chaque équilibreur de charge d'application interne. Vous pouvez filtrer les métriques agrégées selon les dimensions suivantes.
Propriété | Description |
---|---|
BACKEND_SCOPE | Zone ou région Google Cloud du groupe backend qui a diffusé la requête du client, ou chaîne spéciale pour les cas dans lesquels aucun groupe backend n'a été attribué.
Examples : us-central1-a , europe-west1-b , asia-east1 , UNKNOWN .
|
PROXY_REGION | Région de l'équilibreur de charge d'application interne, du client et du backend. Exemples : us-central1 , europe-west1 ou asia-east1 .
|
BACKEND | Nom du groupe d'instances backend ou groupe de points de terminaison du réseau ayant diffusé la requête du client. |
BACKEND_TARGET | Nom du service de backend qui a diffusé la requête du client. |
MATCHED_URL_RULE | Règle de chemin de mappage d'URL ou règle de routage correspondant au préfixe de la requête HTTP(S) du client (50 caractères maximum). |
La métrique Response code class fraction
est acceptée pour l'intégralité de l'équilibreur de charge. Aucune autre précision n'est acceptée.
Étapes suivantes
- Consultez la page Concepts d'équilibreurs de charge d'application internes.
- Créez un équilibreur de charge d'application interne.
- Pour les options de noms DNS disponibles que votre équilibreur de charge peut utiliser, consultez la page Équilibrage de charge interne et noms DNS.