Registro y supervisión del balanceador de cargas de aplicaciones externo regional

En este documento, se muestra cómo configurar y usar Cloud Logging y Cloud Monitoring con balanceadores de cargas de aplicaciones externos regionales.

Logging

Puedes habilitar, inhabilitar y ver registros para un servicio de backend del balanceador de cargas de aplicaciones externo.

Puedes habilitar o inhabilitar el registro para cada servicio de backend. Puedes configurar si deseas registrar todas las solicitudes o una fracción de muestra aleatoria.

Debes asegurarte de no tener una exclusión de registros que se aplique a los balanceadores de cargas HTTP(S) externo. Si deseas obtener instrucciones para verificar que se permitan los registros Cloud HTTP Load Balancer, consulta Visualiza exclusiones por tipo de recurso.

Campos opcionales

Los registros contienen campos obligatorios y opcionales. En la sección ¿Qué se registra?, se enumeran los campos opcionales y los obligatorios. Siempre se incluyen todos los campos obligatorios. Puedes personalizar qué campos de metadatos opcionales.

  • Si seleccionas Include all optional, todos los campos opcionales en el formato del registro se incluyen en los registros. Cuando se agregan campos opcionales nuevos al formato del registro, los registros incluyen automáticamente los campos nuevos.

  • Si seleccionas Exclude all optional, se omiten todos los campos opcionales.

  • Si seleccionas Personalizado, puedes especificar los campos opcionales que deseas incluir, como tls.protocol,tls.cipher.

Para obtener instrucciones para personalizar campos opcionales, consulta Habilita el registro en un nuevo servicio de backend.

Habilita el registro en un servicio de backend nuevo

Consola

  1. En la consola de Google Cloud, ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Haz clic en el nombre de tu balanceador de cargas.

  3. Haz clic en Editar.

  4. Haga clic en Configuración de backend.

  5. Selecciona Crear un servicio de backend.

  6. Completa los campos de servicio de backend obligatorios.

  7. En la sección Registro, selecciona la casilla de verificación Habilitar registro.

  8. En el campo Tasa de muestreo, establece la probabilidad de muestreo. Puedes configurar un número de 0.0 a 1.0, en el que 0.0 significa que no se registra ninguna solicitud, y 1.0 significa que se registra el 100% de las solicitudes. El valor predeterminado es 1.0.

  9. Opcional: Para incluir todos los campos opcionales en los registros, en la sección Optional fields, haz clic en Include all optional fields.

  10. Para terminar de editar el servicio de backend, haz clic en Actualizar.

  11. Para terminar de editar el balanceador de cargas, haz clic en Actualizar.

gcloud: modo regional

Crea un servicio de backend y habilita el registro mediante el comando 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

donde

  • --region indica que el servicio de backend es regional. Usa este campo para los servicios de backend que se usan con balanceadores de cargas de aplicaciones externos regionales.
  • --enable-logging habilita el registro para ese servicio de backend.
  • --logging-sample-rate te permite especificar un valor entre 0.0 y 1.0, en el que 0.0 significa que no se registra ninguna solicitud, y 1.0 significa que el 100% de las solicitudes están registradas. Solo es significativo con el parámetro --enable-logging. Si se habilita el registro, pero se configura la tasa de muestreo en 0.0, es lo mismo que inhabilitarlo. El valor predeterminado es 1.0.
  • --logging-optional te permite especificar los campos opcionales que deseas incluir en los registros:

    • INCLUDE_ALL_OPTIONAL para incluir todos los campos opcionales.

    • EXCLUDE_ALL_OPTIONAL para excluir todos los campos opcionales (opción predeterminada).

    • CUSTOM para incluir una lista personalizada de los campos opcionales que especifiques en OPTIONAL_FIELDS.

  • --logging-optional-fields te permite especificar una lista separada por comas de los campos opcionales que deseas incluir en los registros.

    Por ejemplo, tls.protocol,tls.cipher solo se puede configurar si LOGGING_OPTIONAL_MODE se establece como CUSTOM.

Habilita el registro en un servicio de backend existente

Consola

  1. En la consola de Google Cloud, ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Haz clic en el nombre de tu balanceador de cargas.

  3. Haz clic en Editar.

  4. Haga clic en Configuración de backend.

  5. Haz clic en Editar junto al servicio de backend.

  6. En la sección Registro, selecciona la casilla de verificación Habilitar registro.

  7. En el campo Tasa de muestreo, establece la probabilidad de muestreo. Puedes configurar un número de 0.0 a 1.0, en el que 0.0 significa que no se registra ninguna solicitud, y 1.0 significa que se registra el 100% de las solicitudes. El valor predeterminado es 1.0.

  8. Opcional: Para incluir todos los campos opcionales en los registros, en la sección Optional fields, haz clic en Include all optional fields.

  9. Para terminar de editar el servicio de backend, haz clic en Actualizar.

  10. Para terminar de editar el balanceador de cargas, haz clic en Actualizar.

gcloud: modo regional

Habilita el registro en un servicio de backend existente con el comando 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

donde

  • --region indica que el servicio de backend es regional. Usa este campo para los servicios de backend que se usan con balanceadores de cargas de aplicaciones externos regionales.
  • --enable-logging habilita el registro para ese servicio de backend.
  • --logging-sample-rate te permite especificar un valor entre 0.0 y 1.0, en el que 0.0 significa que no se registra ninguna solicitud, y 1.0 significa que el 100% de las solicitudes están registradas. Solo es significativo con el parámetro --enable-logging. Si se habilita el registro, pero se configura la tasa de muestreo en 0.0, es lo mismo que inhabilitarlo. El valor predeterminado es 1.0.
  • --logging-optional te permite especificar los campos opcionales que deseas incluir en los registros:

    • INCLUDE_ALL_OPTIONAL para incluir todos los campos opcionales.

    • EXCLUDE_ALL_OPTIONAL para excluir todos los campos opcionales (opción predeterminada).

    • CUSTOM para incluir una lista personalizada de los campos opcionales que especifiques en OPTIONAL_FIELDS.

  • --logging-optional-fields te permite especificar una lista separada por comas de los campos opcionales que deseas incluir en los registros.

    Por ejemplo, tls.protocol,tls.cipher. Solo se puede configurar si LOGGING_OPTIONAL_MODE se establece como CUSTOM.

Inhabilita o modifica el registro en un servicio de backend existente

Consola

  1. En la consola de Google Cloud, ve a la página Balanceo de cargas.

    Ir a Balanceo de cargas

  2. Haz clic en el nombre de tu balanceador de cargas.

  3. Haz clic en Editar.

  4. Haga clic en Configuración de backend.

  5. Haz clic en Editar junto al servicio de backend.

  6. Para inhabilitar el registro por completo, en la sección Registro, desmarca la casilla de verificación Habilitar registro.

  7. Si dejas habilitado el registro, puedes configurar una probabilidad de muestreo diferente en el campo Tasa de muestreo. Puedes configurar un número de 0.0 a 1.0, en el que 0.0 significa que no se registra ninguna solicitud, y 1.0 significa que se registra el 100% de las solicitudes. El valor predeterminado es 1.0. Para reducir la cantidad de registros almacenados al 20%, configura el valor en 0.2.

  8. Para terminar de editar el servicio de backend, haz clic en Actualizar.

  9. Para terminar de editar el balanceador de cargas, haz clic en Actualizar.

gcloud: modo regional

Inhabilita el registro en un servicio de backend con el comando gcloud compute backend-services update.

Inhabilita el registro por completo

gcloud compute backend-services update BACKEND_SERVICE \
    --region=REGION \
    --no-enable-logging

donde

  • --region indica que el servicio de backend es regional. Usa este campo para los servicios de backend que se usan con balanceadores de cargas de aplicaciones externos regionales.
  • --no-enable-logging inhabilita el registro para ese servicio de backend.

Modifica la tasa de muestreo de registro

gcloud compute backend-services update BACKEND_SERVICE \
 --global | --region=REGION \
 --logging-sample-rate=VALUE

Ver registros

Los registros HTTP(S) se indexan primero mediante una regla de reenvío y, a continuación, mediante el mapa de URL.

Para ver los registros, ve a la página Explorador de registros.

Ir al Explorador de registros

  • Para ver todos los registros en el menú de filtro Recurso, selecciona Balanceador de cargas de HTTP de Cloud > Todas las reglas de reenvío.

  • Para ver los registros de una regla de reenvío, selecciona un solo nombre de regla de reenvío.

  • Para ver los registros de un mapa de URL, selecciona una regla de reenvío y, luego, selecciona un mapa de URL.

Los campos de registro de tipo booleano suelen aparecer solo si tienen el valor true. Si un campo booleano tiene un valor false, ese campo se omite del registro.

La codificación UTF-8 se aplica a los campos de registro. Los caracteres que no son caracteres UTF-8 se reemplazan con signos de interrogación. En el caso de los balanceadores de cargas de aplicaciones externos regionales, puedes exportar métricas basadas en registros mediante los registros de recursos (resource.type="http_external_regional_lb_rule").

¿Qué se registra?

Las entradas de registro del balanceador de cargas de aplicaciones externo contienen información útil para supervisar y depurar el tráfico HTTP(S). Los registros contienen campos obligatorios, que son los campos predeterminados de cada registro. Los registros contienen campos opcionales que agregan información adicional sobre tu tráfico HTTP(S). Los campos opcionales se pueden omitir para ahorrar costos de almacenamiento.

Algunos campos de registro se encuentran en formato de varios campos y poseen más de un dato en un campo específico. Por ejemplo, el campo tls tiene el formato TlsDetails, que contiene el protocolo TLS y el algoritmo de cifrado TLS en un solo campo. En la siguiente tabla de formato de registros, se describen estos campos múltiples.

Campo Formato del campo Tipo del campo: opcional o requerido Descripción
gravedad
ID de inserción
marca de tiempo
Nombre del registro
LogEntry Requeridos Los campos generales, como se describe en una entrada de registro.
httpRequest HttpRequest Requeridos Un protocolo común para registrar solicitudes HTTP.
resource MonitoredResource Requeridos

MonitoredResource es el tipo de recurso asociado con una entrada de registro.

MonitoredResourceDescriptor describe el esquema de un objeto MonitoredResource mediante un nombre de tipo y un conjunto de etiquetas. Para obtener más información, consulta Etiquetas de recursos.

jsonPayload objeto (formato Struct) Requeridos Indica la carga útil de la entrada de registro que se expresa como un objeto JSON. El objeto JSON contiene los siguientes campos:
  • proxyStatus
  • tls
  • backendTargetProjectNumber
  • mtls
string Requeridos

El campo proxyStatus contiene una string que especifica por qué el balanceador de cargas de aplicaciones externo regional mostró el HttpRequest.status.

El campo no se registra si el valor es una cadena vacía. Esto puede suceder si el proxy o el backend no muestran un error o el código de error no es 0, 4XX ni 5XX.

El campo proxyStatus tiene dos partes:

TlsDetails Opcional El campo tls contiene los TlsDetails que especifican los metadatos TLS para la conexión entre el cliente y el balanceador de cargas de aplicaciones externo regional. Este campo solo está disponible si el cliente usa la encriptación TLS/SSL.
MtlsDetails Opcional El campo mtls contiene el valor MtlsDetails que especifica los metadatos de mTLS para la conexión entre el cliente y el balanceador de cargas de aplicaciones externo regional. Este campo solo está disponible si el balanceador de cargas usa TLS mutua (mTLS) de frontend.

Formato del campo TlsDetails

Campo Formato del campo Tipo del campo: opcional o requerido Descripción
protocol string Opcional El protocolo TLS que los clientes usan para establecer una conexión con el balanceador de cargas. Los valores posibles pueden ser TLS 1.0, 1.1, 1.2, 1.3 o QUIC. Este valor se establece en NULL si el cliente no usa la encriptación TLS/SSL.
algoritmo de cifrado string Opcional El algoritmo de cifrado TLS que los clientes usan para establecer una conexión con el balanceador de cargas. Este valor se establece como NULL si el cliente no usa HTTP(S) o el cliente no usa la encriptación TLS/SSL.

Formato del campo MtlsDetails

Campo Formato del campo Tipo del campo: opcional o requerido Descripción
clientCertPresent bool Opcional

true si el cliente proporcionó un certificado durante el protocolo de enlace TLS, de lo contrario, es false.

clientCertChainVerified bool Opcional

true si la cadena de certificados de cliente se verifica con un TrustStore configurado, de lo contrario, es false.

clientCertError string Opcional

Strings predefinidas que representan las condiciones de error. Para obtener más información sobre las strings de error, consulta los modos de validación de cliente mTLS.

clientCertSha256Fingerprint string Opcional

Huella digital SHA-256 codificada en base64 del certificado de cliente.

clientCertSerialNumber string Opcional

El número de serie del certificado de cliente. Si el número de serie supera los 50 bytes, se agrega la cadena client_cert_serial_number_exceeded_size_limit a client_cert_error, y el número de serie se establece en una cadena vacía.

clientCertValidStartTime string Opcional

Marca de tiempo (string con formato de fecha RFC 3339) antes de la cual el certificado de cliente no es válido. Por ejemplo, 2022-07-01T18:05:09+00:00

clientCertValidEndTime string Opcional

Marca de tiempo (formato de string de fecha RFC 3339) después de la cual el certificado de cliente no es válido. Por ejemplo, 2022-07-01T18:05:09+00:00

clientCertSpiffeId string Opcional

El ID de SPIFFE del campo de nombre alternativo del sujeto (SAN). Si el valor no es válido o supera los 2,048 bytes, el ID de SPIFFE se establece en una string vacía.

Si el ID de SPIFFE supera los 2,048 bytes, la cadena client_cert_spiffe_id_exceeded_size_limit se agrega a client_cert_error.

clientCertUriSans string Opcional

Lista codificada en Base64 de comas de las extensiones de SAN de URI de tipo. Las extensiones SAN se extraen del certificado de cliente. El ID de SPIFFE no está incluido en el campo client_cert_uri_sans.

Si el campo client_cert_uri_sans tiene más de 512 bytes, se agrega la cadena client_cert_uri_sans_exceeded_size_limit en client_cert_error y la lista separada por comas se establece en una cadena vacía.

clientCertDnsnameSans string Opcional

Lista codificada en Base64 de comas de las extensiones de SAN de tipo DNSName. Las extensiones SAN se extraen del certificado de cliente.

Si el campo client_cert_dnsname_sans tiene más de 512 bytes, se agrega la cadena client_cert_dnsname_sans_exceeded_size_limit en client_cert_error y la lista separada por comas se establece en una cadena vacía.

clientCertIssuerDn string Opcional

Campo completo de la entidad emisora codificado en Base64 del certificado.

Si el campo client_cert_issuer_dn tiene más de 512 bytes, la cadena client_cert_issuer_dn_exceeded_size_limit se agrega a client_cert_error y client_cert_issuer_dn se establece en una cadena vacía.

clientCertSubjectDn string Opcional

Campo completo del asunto codificado en base64 del certificado.

Si el campo client_cert_subject_dn tiene más de 512 bytes, la cadena client_cert_subject_dn_exceeded_size_limit se agrega a client_cert_error y client_cert_subject_dn se establece en una cadena vacía.

clientCertLeaf string Opcional

El certificado de hoja del cliente para una conexión mTLS establecida en la que el certificado pasó la validación. La codificación del certificado cumple con el RFC 9440: el certificado binario DER está codificado con Base64 (sin saltos de línea, espacios ni otros caracteres fuera del alfabeto Base64) y delimitado por dos puntos en ambos lados.

Si client_cert_leaf excede los 16 KB sin codificación, la string client_cert_validated_leaf_exceeded_size_limit se agrega a client_cert_error y client_cert_leaf se configura como una string vacía.

clientCertChain string Opcional

La lista delimitada por comas de certificados, en orden TLS estándar, de la cadena de certificados de cliente para una conexión mTLS establecida en la que el certificado de cliente pasó la validación, sin incluir el certificado de hoja. La codificación del certificado cumple con RFC 9440.

Si el tamaño combinado de client_cert_leaf y client_cert_chain antes de que la codificación en base64 supere los 16 KB, la string client_cert_validated_chain_exceeded_size_limit se agrega a client_cert_error y client_cert_chain se configura como una string vacía.

Etiquetas de recursos

En la siguiente tabla, se enumeran las etiquetas de recursos de resource.type="http_external_regional_lb_rule".

Campo Tipo Descripción
backend_name string El nombre del grupo de instancias de backend o NEG. Sin embargo, la etiqueta está vacía para una conexión TLS con errores.
backend_scope string El alcance del backend (ya sea un nombre de zona o de región). Puede ser UNKNOWN siempre que se desconozca backend_name.
backend_scope_type string El alcance del backend (REGION/ZONE). Puede ser UNKNOWN siempre que se desconozca backend_name.
backend_target_name string El nombre del backend seleccionado para controlar la solicitud, en función de la regla de ruta de acceso del mapa de URL o la regla de ruta que coincide con la solicitud.
backend_target_type string El tipo de destino de backend. Puede ser BACKEND_SERVICE o se muestra UNKNOWN si no se asignó el backend.
backend_type string El tipo del grupo de backend. Puede ser INSTANCE_GROUP, NETWORK_ENDPOINT_GROUP, o se muestra UNKNOWN si no se asignó el backend.
forwarding_rule_name string El nombre del objeto de regla de reenvío.
matched_url_path_rule string La regla de ruta de acceso del mapa de URL o la regla de ruta configurada como parte de la clave del mapa de URL. Puede ser UNMATCHED o UNKNOWN como resguardos.
  • UNMATCHED hace referencia a una solicitud que no coincide con ninguna regla de ruta de URL, por lo que usa la regla de ruta de acceso predeterminada.
  • UNKNOWN indica un error interno o una conexión TLS con errores.
network_name string El nombre de la red de VPC del balanceador de cargas.
project_id string El identificador del proyecto de Google Cloud asociado a este recurso.
region string La región en la que se define el balanceador de cargas.
target_proxy_name string El nombre del objeto proxy de destino al que hace referencia la regla de reenvío.
url_map_name string El nombre del objeto del mapa de URL configurado para seleccionar un servicio de backend. Está vacío para una conexión TLS con errores.

Campo de error de proxyStatus

El campo proxyStatus contiene una cadena que especifica por qué el balanceador de cargas mostró un error. Hay dos partes en el campo proxyStatus: proxyStatus error y proxyStatus details. En esta sección, se describen las cadenas compatibles con el campo proxyStatus error.

El campo de error de proxyStatus se aplica a los siguientes balanceadores de cargas:

  • Balanceador de cargas de aplicaciones externo regional
  • Balanceador de cargas de aplicaciones interno entre regiones
  • Balanceador de cargas de aplicaciones interno regional
Error de proxyStatus Descripción Códigos de respuesta adjuntos comunes
destination_unavailable El balanceador de cargas considera que el backend no está disponible. Por ejemplo, los intentos recientes de comunicarse con el backend fallaron, o una verificación de estado podría provocar un error. 500, 503
connection_timeout Se agotó el tiempo de espera del intento del balanceador de cargas para abrir una conexión con el backend. 504
connection_terminated

La conexión del balanceador de cargas al backend finalizó antes de que se recibiera una respuesta completa.

Este proxyStatus error se muestra en cualquiera de las siguientes situaciones:

  • La conexión del balanceador de cargas al backend finalizó antes de que se recibiera una respuesta completa.
  • La conexión TLS falló en el protocolo de enlace SSL y el cliente no estableció una conexión con el balanceador de cargas.

0, 502, 503
connection_refused Se rechaza la conexión del balanceador de cargas al backend. 502, 503
connection_limit_reached

El balanceador de cargas está configurado para limitar la cantidad de conexiones que tiene al backend y se superó ese límite.

Este proxyStatus error se muestra en cualquiera de las siguientes situaciones:

  • Si algún backend está en modo de mantenimiento, el tráfico no se puede enrutar al backend.
  • Si la solicitud está limitada por una frecuencia de manera local.
  • Envoy maneja las condiciones de error, como la falta de memoria.
502, 503
destination_not_found El balanceador de cargas no puede determinar el backend adecuado para usar en esta solicitud. Por ejemplo, es posible que el backend no esté configurado. 500, 404
dns_error El balanceador de cargas encontró un error de DNS cuando intentó encontrar una dirección IP para el nombre de host del backend. 502, 503
proxy_configuration_error El balanceador de cargas encontró un error de configuración interno. 500
proxy_internal_error El balanceador de cargas encontró un error interno. 0, 500, 502
proxy_internal_response El balanceador de cargas generó la respuesta sin intentar conectarse al backend. Cualquier código de respuesta según el tipo de problema. Por ejemplo, el código de respuesta 410 significa que el backend no está disponible debido a mora de pago.
http_response_timeout El balanceador de cargas alcanzó un límite de tiempo de espera del servicio de backend configurado mientras esperaba la respuesta completa del backend. 504, 408
http_request_error El balanceador de cargas genera una respuesta de cliente (4xx) en nombre del cliente. 400, 403, 405, 406, 408, 411, 413, 414, 415, 416, 417 o 429
http_protocol_error El balanceador de cargas encontró un error de protocolo HTTP durante la comunicación con el backend. 502
tls_protocol_error El balanceador de cargas encontró un error de TLS durante el protocolo de enlace TLS. 0
tls_certificate_error El balanceador de cargas encontró un error en el momento de verificar el certificado que presentó el servidor o el cliente cuando mTLS está habilitada. 0
tls_alert_received El balanceador de cargas encontró una alerta TLS irrecuperable durante el protocolo de enlace TLS. 0

Campo de detalles de proxyStatus

El campo proxyStatus contiene una cadena que especifica por qué el balanceador de cargas mostró un error. Hay dos partes en el campo proxyStatus: proxyStatus error y proxyStatus details. El campo proxyStatus details es opcional y se muestra solo cuando hay información adicional disponible. En esta sección, se describen las cadenas compatibles con el campo proxyStatus details.

El campo de detalles del proxyStatus se aplica a los siguientes balanceadores de cargas:

  • Balanceador de cargas de aplicaciones externo regional
  • Balanceador de cargas de aplicaciones interno regional
  • Balanceador de cargas de aplicaciones interno entre regiones
Detalles de proxyStatus Descripción Códigos de respuesta adjuntos comunes
client_disconnected_before_any_response La conexión con el cliente se interrumpió antes de que el balanceador de cargas enviara cualquier respuesta. 0
backend_connection_closed El backend cerró su conexión con el balanceador de cargas de forma inesperada. Esto puede suceder si el balanceador de cargas envía tráfico a otra entidad, como una aplicación de terceros con un tiempo de espera de TCP menor que el de 10 minutos (600 segundos) del balanceador de cargas. 502
failed_to_connect_to_backend No se pudo conectar el balanceador de cargas al backend. Esta falla incluye los tiempos de espera durante la fase de conexión. 503
failed_to_pick_backend El balanceador de cargas no pudo elegir un backend en buen estado para manejar la solicitud. 502
response_sent_by_backend La solicitud HTTP se envió mediante proxy al backend de forma correcta, y el backend mostró la respuesta. El software que se ejecuta en el backend establece el código de respuesta HTTP.
client_timed_out

La conexión entre el balanceador de cargas y el cliente superó el tiempo de espera de inactividad.

Para obtener más información acerca del balanceador de cargas de aplicaciones externo regional, consulta Tiempo de espera de keepalive de HTTP del cliente. Para obtener más información acerca del balanceador de cargas de aplicaciones interno, consulta Tiempo de espera de keepalive de HTTP del cliente.
0, 408
backend_timeout

Se agotó el tiempo de espera del backend mientras se generaba una respuesta.

502
http_protocol_error_from_backend_response La respuesta del backend contiene un error de protocolo HTTP. 501, 502
http_protocol_error_from_request La solicitud del cliente contiene un error de protocolo HTTP. 400, 503
http_version_not_supported No se admite la versión del protocolo HTTP. Solo son compatibles HTTP 0.9, 1.0, 1.1 y 2.0. 400
handled_by_identity_aware_proxy Identity-Aware Proxy (IAP) generó esta respuesta durante la verificación de la identidad del cliente antes de permitir el acceso. 200, 302, 400, 401, 403, 500, 502
invalid_request_headers Los encabezados de la solicitud HTTP recibidos del cliente no son válidos. 400, 404
ip_detection_failed No se pudo detectar la dirección IP original. Cualquier código de respuesta posible según la naturaleza de la falla. El valor debe ser de 400 a 599.
request_body_too_large El cuerpo de la solicitud HTTP superó la longitud máxima que admite el balanceador de cargas. 413, 507
request_header_timeout Se superó el tiempo de espera del encabezado de la solicitud. El valor del tiempo de espera es de 5 segundos. 408, 504
denied_by_security_policy El balanceador de cargas rechazó esta solicitud debido a una política de seguridad de Google Cloud Armor. 403
throttled_by_security_policy La regla de limitación de Google Cloud Armor bloqueó la solicitud. 429
client_cert_chain_invalid_eku El certificado de cliente o su entidad emisora no tienen un uso de clave extendido que incluya clientAuth. Para obtener más información, consulta Errores registrados para conexiones cerradas. 0
client_cert_chain_max_name_constraints_exceeded Un certificado intermedio proporcionado para la validación tenía más de 10 restricciones de nombres. Para obtener más información, consulta Errores registrados para conexiones cerradas. 0
client_cert_invalid_rsa_key_size Una hoja de cliente o un certificado intermedio tenía un tamaño de clave RSA no válido. Para obtener más información, consulta Errores registrados para conexiones cerradas. 0
client_cert_not_provided El cliente no proporcionó el certificado solicitado durante el protocolo de enlace. Para obtener más información, consulta Errores registrados para conexiones cerradas. 0
client_cert_pki_too_large La PKI que se usará para la validación tiene más de tres certificados intermedios que comparten la misma Subject y Subject Public Key Info. Para obtener más información, consulta Errores registrados para conexiones cerradas. 0
client_cert_unsupported_elliptic_curve_key Un cliente o un certificado intermedio usa una curva elíptica no compatible. Para obtener más información, consulta Errores registrados para conexiones cerradas. 0
client_cert_unsupported_key_algorithm Un cliente o un certificado intermedio usa un algoritmo que no es de RSA ni ECEC. Para obtener más información, consulta Errores registrados para conexiones cerradas. 0
client_cert_validation_failed El certificado de cliente falla la validación con TrustConfig. Para obtener más información, consulta Errores registrados para conexiones cerradas. 0
client_cert_validation_not_performed Configuraste la TLS mutua sin configurar TrustConfig. Para obtener más información, consulta Errores registrados para conexiones cerradas. 0
client_cert_validation_search_limit_exceeded Se alcanza el límite de iteración o profundidad mientras se intenta validar la cadena de certificados. Para obtener más información, consulta Errores registrados para conexiones cerradas. 0
client_cert_validation_timed_out El límite de tiempo excedido (200 ms) durante la validación de la cadena de certificados. Para obtener más información, consulta Errores registrados para conexiones cerradas. 0
tls_version_not_supported Se reconoce la versión del protocolo TLS, pero no se admite. El error da como resultado una conexión TLS cerrada. 0
unknown_psk_identity Los servidores envían este error cuando se requiere el establecimiento de la clave PSK, pero el cliente no proporciona una identidad de PSK aceptable. El error da como resultado una conexión TLS cerrada. 0
no_application_protocol Enviado por los servidores cuando una extensión "application_layer_protocol_negotiation" del cliente anuncia solo protocolos que el servidor no admite. Consulta Extensión de negociación de protocolo de la capa de aplicación TLS. El error da como resultado una conexión TLS cerrada. 0
no_certificate No se encontró ningún certificado. El error da como resultado una conexión TLS cerrada. 0
bad_certificate Un certificado no es válido o contiene firmas que no se pudieron verificar. El error da como resultado una conexión TLS cerrada. 0
unsupported_certificate Un certificado es de un tipo no compatible. El error da como resultado una conexión TLS cerrada. 0
certificate_revoked El firmante revocó un certificado. El error da como resultado una conexión TLS cerrada. 0
certificate_expired Un certificado caducó o no es válido. El error da como resultado una conexión TLS cerrada. 0
certificate_unknown Surgieron algunos problemas no especificados mientras se procesaba el certificado, por lo que es inaceptable. El error da como resultado una conexión TLS cerrada. 0
unknown_ca Se recibió una cadena de certificados válida o una cadena parcial, pero no se aceptó el certificado porque no se pudo ubicar el certificado de la AC o no coincidió con un ancla de confianza conocida. El error da como resultado una conexión TLS cerrada. 0
unexpected_message Se recibió un mensaje inapropiado, como un mensaje de protocolo de enlace incorrecto o datos de aplicaciones prematuros. El error da como resultado una conexión TLS cerrada. 0
bad_record_mac Se recibe un registro que no se puede desproteger. El error da como resultado una conexión TLS cerrada. 0
record_overflow Se recibió un registro TLSCiphertext con una longitud mayor que 2 14 +256 bytes, o se desencriptó un registro en un registro TLSPlaintext con más de 2 14 bytes (o algún otro límite negociado). El error da como resultado una conexión TLS cerrada. 0
handshake_failure No se puede negociar un conjunto aceptable de parámetros de seguridad dadas las opciones disponibles. El error da como resultado una conexión TLS cerrada. 0
illegal_parameter Un campo del protocolo de enlace era incorrecto o no era coherente con otros campos. El error da como resultado una conexión TLS cerrada. 0
access_denied Se recibió un certificado o PSK válido, pero cuando se aplicó el control de acceso, el cliente no procedió con la negociación. El error da como resultado una conexión TLS cerrada. 0
decode_error No se pudo decodificar un mensaje porque algunos campos estaban fuera del rango especificado o la longitud del mensaje era incorrecta. El error da como resultado una conexión TLS cerrada. 0
decrypt_error Falló una operación criptográfica de protocolo de enlace (sin capa de registro), lo que incluye la imposibilidad de verificar correctamente una firma o validar un mensaje finalizado o un vinculador PSK. El error da como resultado una conexión TLS cerrada. 0
insufficient_security Una negociación falló específicamente porque el servidor requiere parámetros más seguros que los que admite el cliente. El error da como resultado una conexión TLS cerrada. 0
inappropriate_fallback Enviado por un servidor en respuesta a un reintento de conexión no válido de un cliente. El error da como resultado una conexión TLS cerrada. 0
user_cancelled El usuario cancela el protocolo de enlace por algún motivo no relacionado con una falla del protocolo. El error da como resultado una conexión TLS cerrada. 0
missing_extension Enviado por extremos que reciben un mensaje de protocolo de enlace que no contiene una extensión que es obligatorio enviar para la versión TLS ofrecida o para otros parámetros negociados. El error da como resultado una conexión TLS cerrada. 0
unsupported_extension Enviado por extremos que reciben cualquier mensaje de protocolo de enlace que contenga una extensión cuya inclusión se sabe que está prohibida en el mensaje de protocolo de enlace determinado, o que incluya cualquier extensión en ServerHello o Certificate que no se ofreció primero en el ClientHello o la CertificateRequest correspondiente. El error da como resultado una conexión TLS cerrada. 0
unrecognized_name Enviado por los servidores cuando no existe un servidor que pueda identificarse con el nombre que proporciona el cliente a través de la extensión “server_name”. Consulta Definiciones de la extensión TLS. 0
bad_certificate_status_response Enviado por clientes cuando el servidor proporciona una respuesta de OCSP no válida o inaceptable a través de la extensión "status_request". Consulta Definiciones de la extensión TLS. El error da como resultado una conexión TLS cerrada. 0
load_balancer_configured_resource_limits_reached El balanceador de cargas alcanzó los límites de recursos configurados, como la cantidad máxima de conexiones. 400, 500, 503

Entradas de registro de la conexión TLS con errores

Cuando la conexión TLS entre el cliente y el balanceador de cargas falla antes de que se seleccione cualquier backend, las entradas de registro registran los errores. Puedes configurar los servicios de backend con diferentes tasas de muestreo de registro. Cuando falla una conexión TLS, la tasa de muestreo de registro de la conexión TLS con errores es la tasa de muestreo más alta para cualquier servicio de backend. Por ejemplo, si configuraste dos servicios de backend con una tasa de muestreo de registro como 0.3 y 0.5, la tasa de muestreo de registro de conexión TLS con errores es 0.5.

Puedes identificar las conexiones TLS con errores si verificas estos detalles de la entrada de registro:

  • El tipo de error de proxyStatus es tls_alert_received, tls_certificate_error, tls_protocol_error o connection_terminated.
  • No hay información de backend.

En el siguiente ejemplo, se muestra una entrada de registro de TLS con errores con el campo 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"
  

Interactúa con los registros

Puedes interactuar con los registros externos del balanceador de cargas de aplicaciones mediante la API de Cloud Logging. La API de Logging proporciona maneras de filtrar de forma interactiva registros que tienen configurados campos específicos. Exporta los registros que coinciden a Cloud Logging, Cloud Storage, BigQuery o Pub/Sub. Para obtener más información sobre la API de Logging, consulta Descripción general de la API de Cloud Logging.

Supervisión

El balanceador de cargas exporta datos de supervisión a Cloud Monitoring.

Puedes usar métricas de supervisión para hacer lo siguiente:

  • Evaluar la configuración, el uso y el rendimiento de un balanceador de cargas
  • Solucionar problemas
  • Mejorar el uso de recursos y la experiencia del usuario

Además de los paneles predefinidos en Cloud Monitoring, puedes crear paneles personalizados, configurar alertas y consultar las métricas a través de la API de Cloud Monitoring.

Define las políticas de alertas

Puedes crear políticas de alertas para supervisar los valores de las métricas y recibir notificaciones cuando estas infrinjan una condición.

  1. En el panel de navegación de la consola de Google Cloud, elige Monitoring y, luego,  Alertas:

    Ir a las Alertas

  2. Si aún no creas canales de notificaciones y deseas recibir notificaciones, haz clic en Edit Notification Channels y agrega tus canales de notificaciones. Regresa a la página Alertas después de agregar tus canales.
  3. En la página Alertas, elige Crear política.
  4. Para elegir la métrica, expande el menú Seleccionar una métrica y, luego, haz lo siguiente:
    1. Para limitar el menú a las entradas relevantes, ingresa Regional External Application Load Balancer Rule en la barra de filtros. Si no hay resultados después de que filtres el menú, inhabilita el botón de activación Show only active resources & metrics.
    2. Para el Tipo de recurso, selecciona Regla de balanceador de cargas de aplicaciones regional externo.
    3. Selecciona una Categoría de métrica y una Métrica. Luego, selecciona Aplicar.
  5. Haz clic en Siguiente.
  6. La configuración de la página Configure alert trigger determina cuándo se activa la alerta. Selecciona un tipo de condición y, si es necesario, especifica un umbral. Para obtener más información, consulta Crea políticas de alertas de límite de métrica.
  7. Haz clic en Siguiente.
  8. Para agregar notificaciones a tu política de alertas, haz clic en Canales de notificaciones (opcional). En el diálogo, elige uno o más canales de notificaciones del menú y, luego, haz clic en Aceptar.
  9. Opcional: Actualiza la Duración del cierre automático de incidentes. Este campo determina cuándo Monitoring cierra los incidentes ante la ausencia de datos de métricas.
  10. Opcional: Haz clic en Documentación y, luego, agrega la información que deseas incluir en un mensaje de notificación.
  11. Haz clic en Nombre de la alerta y, luego, ingresa un nombre para la política de alertas.
  12. Haz clic en Crear política.
Para obtener más información, consulta Políticas de alertas.

Define los paneles personalizados de Cloud Monitoring

Puedes crear paneles personalizados de Cloud Monitoring para las métricas del balanceador de cargas:

  1. En la consola de Google Cloud, ve a la página Monitoring.

    Ir a Monitoring

  2. Selecciona Paneles > Crear panel.

  3. Haz clic en Agregar gráfico y, luego, asígnale un título.

  4. Para identificar la serie temporal que se mostrará, elige un tipo de recurso y un tipo de métrica:

    1. En la sección Recursos y métricas, haz clic en el gráfico y, luego, en la sección Seleccionar una métrica, elige una de las opciones disponibles:
    2. Para el balanceador de cargas de aplicaciones externo regional, selecciona el tipo de recurso Regla de balanceador de cargas de aplicaciones externo regional.
    3. Haz clic en Aplicar.
  5. Para especificar filtros de supervisión, haz clic en Filtros > Agregar filtro.

  6. Haz clic en Guardar.

Frecuencia y retención de informes de métricas

Las métricas de los balanceadores de cargas de aplicaciones externos se exportan a Cloud Monitoring en lotes con un nivel de detalle de 1 minuto. Los datos de supervisión se conservan durante seis (6) semanas. Las métricas se basan en el tráfico muestreado (la tasa de muestreo es dinámica y no se puede ajustar). El panel proporciona un análisis de datos en intervalos predeterminados de 1 hora (una hora), 6 horas (seis horas), 1 día (un día), 1 semana (una semana) y 6 semanas (seis semanas). Puedes solicitar un análisis de forma manual en cualquier intervalo de 6 semanas a 1 minuto.

Métricas de supervisión

Puedes supervisar las siguientes métricas para los balanceadores de cargas de aplicaciones externos.

Las siguientes métricas para balanceadores de cargas de aplicaciones externos regionales se informan en Cloud Monitoring: Estas métricas están precedidas por loadbalancing.googleapis.com/.

Métrica Nombre Descripción
Recuento de solicitudes https/external/regional/request_count La cantidad de solicitudes que entregó el balanceador de cargas de aplicaciones externo regional.
Recuento de bytes de solicitud https/external/regional/request_bytes La cantidad de bytes enviados como solicitudes de clientes al balanceador de cargas de aplicaciones externo regional.
Recuento de bytes de respuesta https/external/regional/response_bytes La cantidad de bytes enviados como respuestas del balanceador de cargas de aplicaciones externo regional al cliente.
Latencias totales https/external/regional/total_latencies Una distribución de la latencia, en milisegundos. La latencia se mide desde el momento en que el proxy recibe el primer byte de la solicitud hasta el momento en que el proxy envía el último byte de la respuesta.
Latencias de backend https/external/regional/backend_latencies Una distribución de la latencia, en milisegundos. La latencia se mide desde el momento en el que el proxy envía el primer byte de la solicitud al backend hasta el momento en que el proxy recibe el último byte de la respuesta del backend.

Filtra las dimensiones de las métricas

Puedes aplicar filtros para las métricas de los balanceadores de cargas de aplicaciones externos.

Las métricas se agregan para cada balanceador de cargas de aplicaciones externo regional. Puedes filtrar métricas agregadas mediante las siguientes dimensiones resource.type="http_external_regional_lb_rule".

Propiedad Descripción
backend_name El nombre del grupo de instancias de backend o NEG.
backend_scope El alcance del backend (ya sea un nombre de zona o de región). Puede ser UNKNOWN siempre que se desconozca backend_name.
backend_scope_type El alcance del backend (REGION/ZONE). Puede ser UNKNOWN siempre que se desconozca backend_name.
backend_target_name El nombre del backend seleccionado para controlar la solicitud, en función de la regla de ruta de acceso del mapa de URL o la regla de ruta que coincide con la solicitud.
backend_target_type El tipo de destino de backend. Puede ser BACKEND_SERVICE o se muestra UNKNOWN si no se asignó el backend.
backend_type El tipo del grupo de backend. Puede ser INSTANCE_GROUP, NETWORK_ENDPOINT_GROUP, o se muestra UNKNOWN si no se asignó el backend.
forwarding_rule_name El nombre del objeto de regla de reenvío.
matched_url_path_rule La regla de ruta de acceso del mapa de URL o la regla de ruta configurada como parte de la clave del mapa de URL. Puede ser UNMATCHED o UNKNOWN como resguardos.
  • UNMATCHED hace referencia a una solicitud que no coincide con ninguna regla de ruta de URL, por lo que usa la regla de ruta de acceso predeterminada.
  • UNKNOWN indica un error interno.
network_name El nombre de la red de VPC del balanceador de cargas.
project_id El identificador del proyecto de Google Cloud asociado a este recurso.
region La región en la que se define el balanceador de cargas.
target_proxy_name El nombre del objeto proxy de destino al que hace referencia la regla de reenvío.
url_map_name El nombre del objeto del mapa de URL configurado para seleccionar un servicio de backend.

¿Qué sigue?