Journalisation
Vous pouvez activer, désactiver et afficher les journaux d'un service de backend d'équilibreur de charge d'application externe.
Vous activez ou désactivez la journalisation pour chaque service de backend. Vous pouvez configurer la journalisation pour toutes les requêtes ou seulement pour une fraction échantillonnée de manière aléatoire.
Vous devez vérifier qu'aucune exclusion de journaux ne s'applique aux équilibreurs de charge d'application externes. Pour savoir comment vérifier si les journaux Cloud HTTP Load
Balancer
sont autorisés, consultez la section Filtres d'exclusion.
Échantillonnage et collecte des journaux
Les requêtes (et les réponses correspondantes) traitées par les instances de machine virtuelle (VM) de backend d'équilibreur de charge sont échantillonnées. Ces demandes é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é permet de savoir quels champs sont facultatifs et lesquels sont obligatoires. Tous les champs obligatoires sont toujours inclus. Vous pouvez personnaliser 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. Lorsque de nouveaux champs facultatifs sont ajoutés au format d'enregistrement, les journaux 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,orca_load_report.cpu_utilization,orca_load_report.mem_utilization
.
Pour savoir comment personnaliser les champs facultatifs, consultez Activer la journalisation sur un nouveau service de backend.
Activer la journalisation sur un nouveau service de backend
Console
Dans la console Trusted Cloud , accédez à la page Équilibrage de charge.
Cliquez sur le nom de votre équilibreur de charge.
Cliquez sur Modifier (
).Cliquez sur Configuration du backend.
Sélectionnez Créer un service backend.
Renseignez les champs obligatoires du service de backend.
Dans la section Journalisation, cochez la case 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: mode régional
Créez un service de backend et activez la journalisation à l'aide de la commande gcloud compute backend-services create
.
gcloud compute backend-services create BACKEND_SERVICE \ --region=REGION \ --enable-logging \ --logging-sample-rate=VALUE \ --load-balancing-scheme=EXTERNAL_MANAGED \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=OPTIONAL_FIELDS
Où :
--region
indique que le service de backend est régional. Utilisez ce champ pour les services de backend utilisés avec les équilibreurs de charge d'application externes régionaux.--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 champ 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
. Si vous utilisez des métriques personnalisées et que vous souhaitez consigner des éléments du rapport de charge ORCA, définissezLOGGING_OPTIONAL_MODE
surCUSTOM
et spécifiez les éléments à consigner dans le champOPTIONAL_FIELDS
. Par exemple,orca_load_report.cpu_utilization,orca_load_report.mem_utilization
.
Activer la journalisation sur un service de backend existant
Console
Dans la console Trusted Cloud , 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.Dans la section Journalisation, cochez la case Activer la journalisation.
Dans le champ Taux d'échantillonnage, définissez la probabilité 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 : mode régional
Activez la journalisation sur un service de backend existant à l'aide de la commande gcloud compute backend-services update
.
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --enable-logging \ --logging-sample-rate=VALUE \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=OPTIONAL_FIELDS
Où :
--region
indique que le service de backend est régional. Utilisez ce champ pour les services de backend utilisés avec les équilibreurs de charge d'application externes régionaux.--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
.
Désactiver ou modifier la journalisation sur un service de backend existant
Console
Dans la console Trusted Cloud , 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.Pour désactiver complètement la journalisation, décochez la case Activer la journalisation dans la section Journalisation.
Si vous laissez la journalisation activée, vous pouvez définir un autre 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
. Par exemple,0.2
signifie que 20 % des requêtes échantillonnées génèrent des journaux.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: mode régional
Désactivez la journalisation sur un service de backend à l'aide de la commande gcloud compute backend-services update
.
Désactiver complètement la journalisation
gcloud compute backend-services update BACKEND_SERVICE \ --region=REGION \ --no-enable-logging
Où :
--region
indique que le service de backend est régional. Utilisez ce champ pour les services de backend utilisés avec les équilibreurs de charge d'application externes régionaux.--no-enable-logging
désactive la journalisation pour ce service de backend.
Activer les champs facultatifs de journalisation sur un service de backend existant
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=OPTIONAL_FIELDS
Où :
--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
. Si vous utilisez des métriques personnalisées et que vous souhaitez consigner des éléments du rapport de charge ORCA, définissezLOGGING_OPTIONAL_MODE
surCUSTOM
et spécifiez les éléments à consigner dans le champOPTIONAL_FIELDS
. Par exemple,orca_load_report.cpu_utilization,orca_load_report.mem_utilization
.
Mise à jour du mode de journalisation facultatif de CUSTOM vers un autre mode
gcloud compute backend-services update BACKEND_SERVICE \ --global \ --enable-logging \ --logging-sample-rate=VALUE \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=
Où :
--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.
--logging-optional-fields
doit être explicitement configuré comme indiqué pour effacer tous les champsCUSTOM
existants. L'API ne vous permet pas de combiner un mode non-CUSTOM
avec des champsCUSTOM
.
Modifier le taux d'échantillonnage des journaux
gcloud compute backend-services update BACKEND_SERVICE \ --global | --region=REGION \ --logging-sample-rate=VALUE
Afficher les journaux
Les journaux HTTP(S) sont d'abord indexés par une règle de transfert, puis par un mappage d'URL.
Pour afficher les journaux, accédez à la page Explorateur de journaux :
Accéder à l'explorateur de journaux
Pour afficher tous les journaux, dans le menu de filtre Ressource, sélectionnez Équilibreur de charge HTTP Cloud > Toutes les règles de transfert.
Pour afficher les journaux d'une seule règle de transfert, sélectionnez un nom de règle de transfert.
Pour afficher les journaux d'un seul mappage d'URL, sélectionnez une règle de transfert, puis un mappage d'URL.
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.
Pour les équilibreurs de charge d'application externes régionaux, vous pouvez exporter des métriques basées sur les journaux à l'aide des journaux de ressources (resource.type="http_external_regional_lb_rule"
).
Contenu consigné
Les entrées des journaux d'équilibreur de charge d'application externe 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.
Les enregistrements de journal contiennent 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.
Le format "multi-champs" de certains champs affiche plusieurs données dans un même champ. Par exemple, le champtls
est au format TlsInfo
, 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 | Format du champ | Type de champ : obligatoire ou facultatif | Description |
---|---|---|---|
gravité ID d'insertion code temporel Nom du journal |
LogEntry | Obligatoire | Champs généraux décrits dans une entrée de journal. |
httpRequest | HttpRequest | Obligatoire | Protocole courant pour la journalisation des requêtes HTTP. |
resource | MonitoredResource | Obligatoire | MonitoredResource est le type de ressource associé à une entrée de journal. MonitoredResourceDescriptor décrit le schéma d'un objet |
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 | Obligatoire | 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 renvoient pas de code d'état, ou si le code d'état renvoyé n'est pas Le champ
|
|
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 externes régionaux pour lesquels les
règles d'autorisation sont activées. Pour en savoir plus, consultez
Informations consignées pour les règles d'autorisation. |
|
TlsInfo | Facultatif | Le champ Utilisez le paramètre
Vous ne pouvez pas définir |
|
MtlsInfo | Facultatif | Le champ |
|
chaîne | Facultatif | Le champ backendNetworkName spécifie le réseau VPC du backend.
|
|
OrcaLoadReport | Facultatif | Le champ Utilisez le paramètre
Vous pouvez également définir |
Format du champ TlsInfo
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 TLSv1 , TLSv1.1 , TLSv1.2 , TLSv1.3 ou 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 du champ MtlsInfo
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 Mode de validation du client. |
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.
Exemple : |
clientCertValidEndTime | chaîne | Facultatif | Horodatage (format de chaîne de date RFC 3339) après lequel le certificat client n'est pas valide.
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 |
Étiquettes de ressource
Le tableau suivant liste les libellés de ressources pour resource.type="http_external_regional_lb_rule"
.
Champ | Type | Description |
---|---|---|
backend_name |
chaîne | Nom du groupe d'instances backend ou groupe de points de terminaison du réseau. Toutefois, le libellé est vide pour une connexion TLS ayant échoué. |
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_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. Peut être BACKEND_SERVICE ou UNKNOWN si le backend n'a pas été attribué.
|
backend_type |
chaîne |
Type du groupe de backend. Peut être INSTANCE_GROUP , NETWORK_ENDPOINT_GROUP ou UNKNOWN si le backend n'a pas été attribué.
|
forwarding_rule_name |
chaîne | Nom de l'objet de 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 .
|
network_name |
chaîne | Nom du réseau VPC de l'équilibreur de charge. |
project_id |
chaîne | Identifiant du projet Trusted Cloud associé à cette ressource. |
region |
chaîne | Région dans laquelle l'équilibreur de charge est défini. |
target_proxy_name |
chaîne | Nom de l'objet de proxy cible référencé par la règle de transfert. |
url_map_name |
chaîne | Nom de l'objet de mappage d'URL configuré pour sélectionner un service de backend.
Pour une connexion TLS ayant échoué, url_map_name est vide. |
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
se compose de 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 peut avoir échoué. | 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 n'est peut-être pas 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. Cette erreur peut être due à un redémarrage planifié du proxy gérant les connexions. | 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 d'état en fonction du type de problème. Par exemple, le code d'état 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, indiquant 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 "Détails du 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
se compose de 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 d'état 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 d'état 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. Seuls les protocoles HTTP 1.1 et 2.0 sont acceptés. | 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 de l'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 champs d'en-tête qui incluent un guillemet ( Pour en savoir plus, consultez les pages suivantes : |
400 , 404
|
ip_detection_failed
|
Impossible de détecter l'adresse IP d'origine. | Tout code d'état 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
|
Le délai d'attente de l'en-en-tête de requête a expiré, car l'équilibreur de charge n'a pas reçu la requête complète dans un délai de 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 Cloud Armor. | 429
|
client_cert_chain_invalid_eku
|
Le certificat client ou son émetteur ne dispose pas de l'utilisation de clé étendue 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 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 pas acceptée. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
unknown_psk_identity
|
Les serveurs envoient cette erreur lorsque l'établissement de la clé PSK est requis, mais que le client ne fournit pas d'identité PSK acceptable. L'erreur entraîne la fermeture de la connexion TLS. | 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 Extension de négociation de protocole de couche application TLS. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
no_certificate
|
Aucun certificat n'a été trouvé. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
bad_certificate
|
Un certificat n'est pas valide ou contient des signatures qui n'ont pas pu être vérifiées. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
unsupported_certificate
|
Le type de certificat n'est pas accepté. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
certificate_revoked
|
Un certificat a été révoqué par son signataire. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
certificate_expired
|
Un certificat a expiré ou n'est pas valide. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
certificate_unknown
|
Des problèmes non spécifiés sont survenus lors du traitement du certificat, le rendant inacceptable. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
unknown_ca
|
Une chaîne de certificats valide ou une chaîne partielle a été reçue, mais le certificat ne peut pas être accepté, car il n'a pas pu être localisé ni mis en correspondance avec une ancre de confiance connue. L'erreur entraîne la fermeture d'une connexion TLS. | 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. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
bad_record_mac
|
La protection d'un enregistrement reçu ne peut pas être annulée. L'erreur entraîne la fermeture de la connexion TLS. | 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 la fermeture d'une connexion TLS.
|
0
|
handshake_failure
|
Impossible de négocier un ensemble acceptable de paramètres de sécurité compte tenu des options disponibles. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
illegal_parameter
|
Un champ du handshake était incorrect ou incohérent avec les autres champs. L'erreur entraîne la fermeture de la connexion TLS. | 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é. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
decode_error
|
Un message n'a pas pu être décodé, car certains champs sont hors de la plage spécifiée ou la longueur du message est incorrecte. L'erreur entraîne la fermeture de la connexion TLS. | 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. L'erreur entraîne la fermeture de la connexion TLS. | 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. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
inappropriate_fallback
|
Envoyé par un serveur en réponse à une tentative de nouvelle connexion non valide d'un client. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
user_cancelled
|
L'utilisateur a annulé le handshake pour une raison sans rapport avec un échec du protocole. L'erreur entraîne la fermeture de la connexion TLS. | 0
|
missing_extension
|
Envoyés par les points de terminaison qui reçoivent un message de handshake ne contenant pas d'extension obligatoire pour la version TLS proposée ou d'autres paramètres négociés. L'erreur entraîne la fermeture de la connexion TLS. | 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.
L'erreur entraîne la fermeture de la connexion TLS.
|
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 Définitions des extensions TLS. | 0
|
bad_certificate_status_response
|
Envoyé par les clients lorsqu'une réponse OCSP non valide ou inacceptable est fournie par le serveur via l'extension "status_request". Consultez Définitions des extensions TLS. L'erreur entraîne la fermeture de la connexion TLS. | 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. | 0
|
Entrées de journal des échecs de connexion TLS
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 des connexions TLS ayant échoué est le taux d'échantillonnage le plus élevé pour tous les service de backend. Par exemple, si vous avez configuré deux services de backend avec des taux d'échantillonnage des journaux de 0.3
et 0.5
, le taux d'échantillonnage des journaux de connexion TLS ayant échoué est de 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"
Journaux des demandes 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 de détails du 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 . |
Interagir avec les journaux
Vous pouvez interagir avec les journaux de l'équilibreur de charge d'application externe à l'aide de l'API Cloud Logging. L'API Logging permet de filtrer de manière interactive les journaux pour lesquels des champs spécifiques sont définis. Il exporte les journaux correspondants vers Cloud Logging, Cloud Storage, BigQuery ou Pub/Sub. Pour en savoir plus sur l'API Logging, consultez la présentation de l'API Cloud Logging.
Surveillance
L'équilibreur de charge exporte les données de surveillance vers Monitoring.
Vous pouvez utiliser des métriques de surveillance pour effectuer les opérations suivantes :
- Évaluer la configuration, l'utilisation et les performances d'un équilibreur de charge
- Dépannage
- Améliorer l'utilisation des ressources et l'expérience utilisateur
Fréquence et conservation des rapports sur les métriques
Les métriques des équilibreurs de charge d'application externes sont exportées vers Cloud 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
Vous pouvez surveiller les métriques suivantes pour les équilibreurs de charge d'application externes.
Les métriques suivantes pour les équilibreurs de charge d'application externes régionaux sont consignées dans Cloud Monitoring.
Ces métriques sont précédées du préfixe loadbalancing.googleapis.com/
.
Métrique | Nom | Description |
---|---|---|
Nombre de requêtes | https/external/regional/request_count |
Nombre de requêtes diffusées par l'équilibreur de charge d'application externe régional. |
Nombre d'octets de requête | https/external/regional/request_bytes |
Nombre d'octets envoyés en tant que requêtes par les clients à l'équilibreur de charge d'application externe régional. |
Nombre d'octets de réponse | https/external/regional/response_bytes |
Nombre d'octets envoyés en tant que réponses au client depuis l'équilibreur de charge d'application externe régional. |
Total des latences | https/external/regional/total_latencies |
Distribution de la latence totale. La latence totale correspond au temps en millisecondes entre le premier octet de la requête reçu par le proxy et le dernier octet de la réponse envoyée par le proxy. Elle inclut le temps nécessaire au proxy pour traiter la requête, le temps nécessaire pour que la requête soit envoyée du proxy au backend, le temps nécessaire au backend pour traiter la requête, le temps nécessaire pour que la réponse soit renvoyée au proxy et le temps nécessaire au proxy pour traiter la réponse et l'envoyer au client. Il n'inclut pas le DAR entre le client et le proxy. De plus, les pauses entre les requêtes sur la même connexion à l'aide de |
Latences de backend | https/external/regional/backend_latencies |
Distribution de la latence du backend. La latence du backend correspond au temps, en millisecondes, écoulé entre le dernier octet de la requête envoyé au backend et le dernier octet de la réponse reçue par le proxy. Il inclut le temps nécessaire au backend pour traiter la requête et le temps nécessaire pour que la réponse soit renvoyée au proxy. |
Filtrer les dimensions pour les métriques
Vous pouvez appliquer des filtres de métriques pour les équilibreurs de charge d'application externes.
Les métriques sont agrégées pour chaque équilibreur de charge d'application externe régional. Vous pouvez filtrer les métriques agrégées à l'aide des dimensions suivantes pour resource.type="http_external_regional_lb_rule"
.
Propriété | Description |
---|---|
backend_name |
Nom du groupe d'instances backend ou groupe de points de terminaison du réseau. |
backend_scope |
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 |
Champ d'application du backend (REGION /ZONE ). Peut être UNKNOWN quand backend_name est inconnu.
|
backend_target_name |
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 |
Type de la cible de backend. Peut être BACKEND_SERVICE ou UNKNOWN si le backend n'a pas été attribué.
|
backend_type |
Type du groupe de backend. Peut être INSTANCE_GROUP , NETWORK_ENDPOINT_GROUP ou UNKNOWN si le backend n'a pas été attribué.
|
forwarding_rule_name |
Nom de l'objet de règle de transfert. |
matched_url_path_rule |
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 .
|
network_name |
Nom du réseau VPC de l'équilibreur de charge. |
project_id |
Identifiant du projet Trusted Cloud associé à cette ressource. |
region |
Région dans laquelle l'équilibreur de charge est défini. |
target_proxy_name |
Nom de l'objet de proxy cible référencé par la règle de transfert. |
url_map_name |
Nom de l'objet de mappage d'URL configuré pour sélectionner un service de backend. |