Registro y monitorización de balanceadores de carga de aplicación externos regionales

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

Almacenamiento de registros

Puedes habilitar, inhabilitar y ver los registros de un servicio de backend de un balanceador de carga de aplicación externo.

Puedes habilitar o inhabilitar el registro de cada servicio de backend. Puedes configurar si quieres registrar todas las solicitudes o una fracción muestreada aleatoriamente.

Debes asegurarte de que no haya ninguna exclusión de registros que se aplique a los balanceadores de carga de aplicaciones externos. Para obtener información sobre cómo verificar que se permiten los registros Cloud HTTP Load Balancer, consulte Filtros de exclusión.

Muestreo y recogida de registros

Las solicitudes (y las respuestas correspondientes) gestionadas por las instancias de máquina virtual (VM) de backend del balanceador de carga se muestrean. Estas solicitudes muestreadas se procesan para generar registros. Puede controlar la fracción de las solicitudes que se emiten como entradas de registro según el parámetro logConfig.sampleRate. Si logConfig.sampleRate es 1.0 (100%), significa que se generan registros de todas las solicitudes y se escriben en Cloud Logging.

Campos opcionales:

Los registros de registro contienen campos obligatorios y campos opcionales. En la sección Qué se registra se indica qué campos son opcionales y cuáles son obligatorios. Todos los campos obligatorios se incluyen siempre. Puedes personalizar los campos opcionales que quieras conservar.

  • Si seleccionas Incluir todos los campos opcionales, se incluirán en los registros todos los campos opcionales del formato de registro. Cuando se añaden nuevos campos opcionales al formato de registro, los registros incluyen automáticamente los nuevos campos.

  • Si selecciona Excluir todos los opcionales, se omitirán todos los campos opcionales.

  • Si seleccionas Personalizado, puedes especificar los campos opcionales que quieras incluir, como tls.protocol,tls.cipher,orca_load_report.cpu_utilization,orca_load_report.mem_utilization.

Para obtener información sobre cómo personalizar los campos opcionales, consulta Habilitar el registro en un nuevo servicio backend.

Habilitar el registro en un servicio de backend nuevo

Consola

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

    Ir a Balanceo de carga

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

  3. Haz clic en Editar.

  4. Haz clic en Configuración de backend.

  5. Selecciona Crear un servicio de backend.

  6. Rellena los campos obligatorios del servicio backend.

  7. En la sección Almacenamiento de registros, marca la casilla Habilitar el almacenamiento de registros.

  8. Define una fracción de Frecuencia de muestreo. Puedes definir un número entre 0.0 y 1.0, donde 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 Campos opcionales, haga clic en Incluir todos los campos opcionales.

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

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

gcloud: modo regional

Crea un servicio de backend y habilita el registro con el gcloud compute backend-services create comando.

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 backend es regional. Use este campo para los servicios de backend que se utilicen con balanceadores de carga de aplicaciones externos regionales.
  • --enable-logging habilita el registro de ese servicio de backend.
  • --logging-sample-rate le permite especificar un valor entre 0.0 y 1.0, donde 0.0 significa que no se registra ninguna solicitud y 1.0 significa que se registra el 100% de las solicitudes. Este campo solo tiene sentido con el parámetro --enable-logging. Habilitar el registro, pero definir la frecuencia de muestreo en 0.0 equivale a inhabilitar el registro. El valor predeterminado es 1.0.
  • --logging-optional te permite especificar los campos opcionales que quieras incluir en los registros:

    • INCLUDE_ALL_OPTIONAL para incluir todos los campos opcionales.

    • EXCLUDE_ALL_OPTIONAL (valor predeterminado) para excluir todos los campos opcionales.

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

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

    Por ejemplo, tls.protocol,tls.cipher solo se puede definir si LOGGING_OPTIONAL_MODE se define como CUSTOM. Si usa métricas personalizadas y quiere registrar elementos del informe de carga de ORCA, debe asignar el valor CUSTOM a LOGGING_OPTIONAL_MODE y especificar qué elementos se deben registrar en el campo OPTIONAL_FIELDS. Por ejemplo, orca_load_report.cpu_utilization,orca_load_report.mem_utilization.

Habilitar el registro en un servicio de backend

Consola

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

    Ir a Balanceo de carga

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

  3. Haz clic en Editar.

  4. Haz clic en Configuración de backend.

  5. Haz clic en Editar junto a tu servicio backend.

  6. En la sección Almacenamiento de registros, marca la casilla Habilitar el almacenamiento de registros.

  7. En el campo Frecuencia de muestreo, define la probabilidad de muestreo. Puedes definir un número del 0.0 al 1.0, donde 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 Campos opcionales, haga clic en Incluir todos los campos opcionales.

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

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

gcloud: modo regional

Habilita el registro en un servicio de backend 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 backend es regional. Use este campo para los servicios de backend que se utilicen con balanceadores de carga de aplicaciones externos regionales.
  • --enable-logging habilita el registro de ese servicio de backend.
  • --logging-sample-rate le permite especificar un valor entre 0.0 y 1.0, donde 0.0 significa que no se registra ninguna solicitud y 1.0 significa que se registra el 100% de las solicitudes. Solo tiene sentido con el parámetro --enable-logging. Habilitar el registro, pero definir la frecuencia de muestreo en 0.0 equivale a inhabilitar el registro. El valor predeterminado es 1.0.
  • --logging-optional te permite especificar los campos opcionales que quieras incluir en los registros.

    • INCLUDE_ALL_OPTIONAL para incluir todos los campos opcionales.

    • EXCLUDE_ALL_OPTIONAL (valor predeterminado) para excluir todos los campos opcionales.

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

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

    Por ejemplo, tls.protocol,tls.cipher. Solo se puede definir si LOGGING_OPTIONAL_MODE se establece en CUSTOM.

Inhabilitar o modificar el registro en un servicio de backend

Consola

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

    Ir a Balanceo de carga

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

  3. Haz clic en Editar.

  4. Haz clic en Configuración de backend.

  5. Haz clic en Editar junto a tu servicio backend.

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

  7. Si dejas el registro habilitado, puedes definir una fracción de Frecuencia de muestreo diferente. Puedes definir un número entre 0.0 y 1.0, donde 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. Por ejemplo, 0.2 significa que el 20% de las solicitudes muestreadas generan registros.

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

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

gcloud: modo regional

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

Inhabilitar el registro por completo

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

donde

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

Habilitar campos opcionales de registro en un servicio de backend

gcloud compute backend-services update BACKEND_SERVICE \
    --global \
    --enable-logging \
    --logging-sample-rate=VALUE \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=OPTIONAL_FIELDS

donde

  • --logging-sample-rate le permite especificar un valor entre 0.0 y 1.0, donde 0.0 significa que no se registra ninguna solicitud y 1.0 significa que se registra el 100% de las solicitudes. Solo tiene sentido con el parámetro --enable-logging. Habilitar el registro, pero definir la frecuencia de muestreo en 0.0 equivale a inhabilitar el registro. El valor predeterminado es 1.0.
  • --logging-optional te permite especificar los campos opcionales que quieras incluir en los registros:

    • INCLUDE_ALL_OPTIONAL para incluir todos los campos opcionales.

    • EXCLUDE_ALL_OPTIONAL (valor predeterminado) para excluir todos los campos opcionales.

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

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

    Por ejemplo, tls.protocol,tls.cipher solo se puede definir si LOGGING_OPTIONAL_MODE se define como CUSTOM. Si usa métricas personalizadas y quiere registrar elementos del informe de carga de ORCA, debe asignar el valor CUSTOM a LOGGING_OPTIONAL_MODE y especificar qué elementos se deben registrar en el campo OPTIONAL_FIELDS. Por ejemplo, orca_load_report.cpu_utilization,orca_load_report.mem_utilization.

Actualizar el modo opcional de registro de PERSONALIZADO a otro

gcloud compute backend-services update BACKEND_SERVICE \
    --global \
    --enable-logging \
    --logging-sample-rate=VALUE \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=

donde

  • --logging-optional te permite especificar los campos opcionales que quieras incluir en los registros:

    • INCLUDE_ALL_OPTIONAL para incluir todos los campos opcionales.

    • EXCLUDE_ALL_OPTIONAL (valor predeterminado) para excluir todos los campos opcionales.

  • --logging-optional-fields debe configurarse explícitamente como se muestra para borrar los campos CUSTOM. La API no permite combinar un modo que no sea CUSTOM con campos CUSTOM.

Modificar la frecuencia de muestreo de los registros

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

Ver registros

Los registros HTTP(S) se indexan primero por una regla de reenvío y, después, por un mapa de URLs.

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

Ir a Explorador de registros

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

  • Para ver los registros de una regla de reenvío, seleccione el nombre de una regla de reenvío.

  • Para ver los registros de un mapa de URLs, seleccione una regla de reenvío y, a continuación, un mapa de URLs.

Los campos de registro de tipo booleano suelen aparecer solo si tienen el valor true. Si un campo booleano tiene el valor false, 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 sustituyen por signos de interrogación. En el caso de los balanceadores de carga de aplicación externos regionales, puedes exportar métricas basadas en registros mediante registros de recursos (resource.type="http_external_regional_lb_rule").

Qué se registra

Las entradas de registro de los balanceadores de carga de aplicaciones externos contienen información útil para monitorizar y depurar el tráfico HTTP(S). Los registros de registro contienen campos obligatorios, que son los campos predeterminados de todos los registros de registro.

Los registros de registro contienen campos opcionales que añaden información adicional sobre tu tráfico HTTP(S). Los campos opcionales se pueden omitir para ahorrar costes de almacenamiento.

Algunos campos de registro tienen un formato de varios campos, con más de un dato en un campo determinado. Por ejemplo, el campo tls tiene el formato TlsInfo, que contiene el protocolo TLS y el cifrado TLS en un solo campo. Estos campos de varios campos se describen en la siguiente tabla de formato de registro.

Campo Formato de campo Tipo de campo: obligatorio u opcional Descripción
severity
insertID
timestamp
logName
LogEntry Obligatorio Los campos generales, tal como se describen en una entrada de registro.
httpRequest HttpRequest Obligatorio Un protocolo habitual para registrar solicitudes HTTP.
resource MonitoredResource Obligatorio

El MonitoredResource es el tipo de recurso asociado a una entrada de registro.

El 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) Obligatorio 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
  • authzPolicyInfo
  • backendNetworkName
  • orca_load_report
cadena Obligatorio

El campo proxyStatus contiene una cadena que especifica por qué el balanceador de carga de aplicación externo regional ha devuelto el HttpRequest.status.

El campo no se registra si el valor es una cadena vacía. Esto puede ocurrir si el proxy o el backend no devuelven un código de estado o si el código de estado devuelto no es 0, 4XX o 5XX.

El campo proxyStatus consta de dos partes:

AuthzPolicyInfo Obligatorio El campo authzPolicyInfo almacena información sobre el resultado de la política de autorización. Esta información solo está disponible para los balanceadores de carga de aplicación externos regionales que tengan habilitadas las políticas de autorización. Para obtener más información, consulta qué se registra en las políticas de autorización.
TlsInfo Opcional

El campo tls contiene el campo TlsInfo, que especifica los metadatos de TLS de la conexión entre el cliente y el balanceador de carga. Este campo solo está disponible si el cliente usa cifrado TLS/SSL.

Usa el parámetro --logging-optional-fields para especificar qué elementos se deben registrar:

  • tls.protocol
  • tls.cipher

No puedes asignar --logging-optional-fields a tls para especificar todos los elementos.

MtlsInfo Opcional

El campo mtls contiene el valor MtlsInfo, que especifica los metadatos de mTLS de la conexión entre el cliente y el balanceador de carga. Este campo solo está disponible si el balanceador de carga usa TLS mutuo (mTLS) de frontend.

cadena Opcional El campo backendNetworkName especifica la red de VPC del backend.
OrcaLoadReport Opcional

El campo orca_load_report contiene algunos o todos los elementos del informe de carga de ORCA devuelto por el backend. Este campo solo está presente si el backend devuelve un informe de carga de ORCA y has configurado el balanceador de carga para que registre el informe de carga de ORCA.

Usa el parámetro --logging-optional-fields para especificar qué elementos del informe de carga de ORCA se deben registrar:

  • orca_load_report.cpu_utilization
  • orca_load_report.mem_utilization
  • orca_load_report.request_cost
  • orca_load_report.utilization
  • orca_load_report.rps_fractional
  • orca_load_report.eps
  • orca_load_report.named_metrics
  • orca_load_report.application_utilization

También puedes definir --logging-optional-fields en orca_load_report para especificar que se deben registrar todos los elementos.

Formato del campo TlsInfo

Campo Formato de campo Tipo de campo: obligatorio u opcional Descripción
protocol cadena Opcional Protocolo TLS que usan los clientes para establecer una conexión con el balanceador de carga. Los valores posibles son TLSv1, TLSv1.1, TLSv1.2, TLSv1.3 o QUIC. Este valor se asigna a NULL si el cliente no usa el cifrado TLS/SSL.
cifrado cadena Opcional Cifrado TLS que usan los clientes para establecer una conexión con el balanceador de carga. Este valor se define como NULL si el cliente no usa HTTP(S) o si no usa el cifrado TLS/SSL.

Formato del campo MtlsInfo

Campo Formato de campo Tipo de campo: obligatorio u opcional Descripción
clientCertPresent bool Opcional

true si el cliente ha proporcionado un certificado durante el handshake TLS; de lo contrario, false.

clientCertChainVerified bool Opcional

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

clientCertError cadena Opcional

Cadenas predefinidas que representan las condiciones de error. Para obtener más información sobre las cadenas de error, consulta Modo de validación de cliente.

clientCertSha256Fingerprint cadena Opcional

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

clientCertSerialNumber cadena Opcional

Número de serie del certificado de cliente. Si el número de serie tiene más de 50 bytes, se añade la cadena client_cert_serial_number_exceeded_size_limit a client_cert_error y el número de serie se establece como una cadena vacía.

clientCertValidStartTime cadena Opcional

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

clientCertValidEndTime cadena Opcional

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

clientCertSpiffeId cadena Opcional

El ID de SPIFFE del campo de nombre alternativo del sujeto (SAN). Si el valor no es válido o supera los 2048 bytes, el ID de SPIFFE se asigna a una cadena vacía.

Si el ID de SPIFFE tiene más de 2048 bytes, se añade la cadena client_cert_spiffe_id_exceeded_size_limit a client_cert_error.

clientCertUriSans cadena Opcional

Lista separada por comas y codificada en Base64 de las extensiones SAN de tipo URI. Las extensiones SAN se extraen del certificado de cliente. El ID de SPIFFE no se incluye en el campo client_cert_uri_sans.

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

clientCertDnsnameSans cadena Opcional

Lista separada por comas y codificada en Base64 de las extensiones 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 añade la cadena client_cert_dnsname_sans_exceeded_size_limit a client_cert_error y la lista separada por comas se asigna a una cadena vacía.

clientCertIssuerDn cadena Opcional

Campo Issuer completo codificado en Base64 del certificado.

Si el campo client_cert_issuer_dn tiene más de 512 bytes, se añade la cadena client_cert_issuer_dn_exceeded_size_limit a client_cert_error y se asigna una cadena vacía a client_cert_issuer_dn.

clientCertSubjectDn cadena Opcional

Campo Subject completo del certificado codificado en Base64.

Si el campo client_cert_subject_dn tiene más de 512 bytes, se añade la cadena client_cert_subject_dn_exceeded_size_limit a client_cert_error y se asigna una cadena vacía a client_cert_subject_dn.

clientCertLeaf cadena Opcional

El certificado de hoja de cliente de una conexión mTLS establecida en la que el certificado ha superado la validación. La codificación del certificado cumple el estándar RFC 9440: el certificado DER binario se codifica con Base64 (sin saltos de línea, espacios ni otros caracteres que no pertenezcan al alfabeto Base64) y se delimita con dos puntos a cada lado.

Si client_cert_leaf supera los 16 KB sin codificar, la cadena client_cert_validated_leaf_exceeded_size_limit se añade a client_cert_error y client_cert_leaf se asigna a una cadena vacía.

clientCertChain cadena Opcional

Lista de certificados separados por comas, en orden TLS estándar, de la cadena de certificados de cliente de una conexión mTLS establecida en la que el certificado de cliente ha superado la validación, sin incluir el certificado de hoja. La codificación de certificados cumple el estándar RFC 9440.

Si el tamaño combinado de client_cert_leaf y client_cert_chain antes de la codificación Base64 supera los 16 KB, la cadena client_cert_validated_chain_exceeded_size_limit se añade a client_cert_error y client_cert_chain se asigna a una cadena vacía.

Etiquetas de recurso

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

Campo Tipo Descripción
backend_name cadena Nombre del grupo de instancias o del NEG de backend. Sin embargo, la etiqueta está vacía en el caso de una conexión TLS fallida.
backend_scope cadena El ámbito del backend (el nombre de una zona o de una región). Puede ser UNKNOWN siempre que backend_name sea desconocido.
backend_scope_type cadena El ámbito del backend (REGION/ZONE). Puede ser UNKNOWN cuando backend_name sea desconocido.
backend_target_name cadena Nombre del backend seleccionado para gestionar la solicitud, en función de la regla de ruta del mapa de URLs o de la regla de ruta que coincida con la solicitud.
backend_target_type cadena El tipo de destino de backend. Puede ser BACKEND_SERVICE o UNKNOWN si no se ha asignado el backend.
backend_type cadena El tipo de grupo de backend. Puede ser INSTANCE_GROUP, NETWORK_ENDPOINT_GROUP o UNKNOWN si no se ha asignado ningún backend.
forwarding_rule_name cadena Nombre del objeto de regla de reenvío.
matched_url_path_rule cadena La regla de ruta o de ruta de acceso del mapa de URLs configurada como parte de la clave del mapa de URLs. Puede ser UNMATCHED o UNKNOWN como alternativas.
  • UNMATCHED hace referencia a una solicitud que no coincide con ninguna regla de ruta de URL, por lo que utiliza la regla de ruta predeterminada.
  • UNKNOWN indica un error interno o una conexión TLS fallida.
network_name cadena Nombre de la red VPC del balanceador de carga.
project_id cadena Identificador del proyecto asociado a este recurso. Google Cloud
region cadena La región en la que se define el balanceador de carga.
target_proxy_name cadena Nombre del objeto proxy de destino al que hace referencia la regla de reenvío.
url_map_name cadena Nombre del objeto de mapa de URLs configurado para seleccionar un servicio de backend. En el caso de una conexión TLS fallida, url_map_name está vacío.

Campo de error proxyStatus

El campo proxyStatus contiene una cadena que especifica por qué el balanceador de carga ha devuelto un error. El campo proxyStatus se compone de dos partes: proxyStatus error y proxyStatus details. En esta sección se describen las cadenas que se admiten en el campo proxyStatus error.

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

  • Balanceador de carga de aplicación externo regional
  • Balanceador de carga de aplicación interno entre regiones
  • Balanceador de carga de aplicación interno regional
Error de proxyStatus Descripción Códigos de respuesta habituales
destination_unavailable El balanceador de carga considera que el backend no está disponible. Por ejemplo, si se han producido errores en los intentos recientes de comunicarse con el backend o si una comprobación de estado ha dado como resultado un error. 500, 503
connection_timeout El balanceador de carga ha agotado el tiempo de espera al intentar abrir una conexión con el backend. 504
connection_terminated

La conexión del balanceador de carga con el backend ha finalizado antes de que se recibiera una respuesta completa.

Este proxyStatus error se devuelve en cualquiera de los siguientes casos:

  • La conexión del balanceador de carga con el backend ha finalizado antes de que se haya recibido una respuesta completa.
  • La conexión TLS ha fallado en el handshake de SSL y el cliente no ha establecido una conexión con el balanceador de carga.

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

El balanceador de carga está configurado para limitar el número de conexiones que tiene con el backend y se ha superado ese límite.

Este proxyStatus error se devuelve en cualquiera de los siguientes casos:

  • Si algún backend está en modo de mantenimiento, el tráfico no se puede enrutar al backend.
  • Si la solicitud tiene un límite de frecuencia local.
  • Envoy gestiona las condiciones de error, como la falta de memoria.
502, 503
destination_not_found El balanceador de carga no puede determinar el backend adecuado para esta solicitud. Por ejemplo, es posible que el backend no esté configurado. 500, 404
dns_error El balanceador de carga ha detectado un error de DNS al intentar encontrar una dirección IP para el nombre de host del backend. 502, 503
proxy_configuration_error El balanceador de carga ha detectado un error de configuración interno. 500
proxy_internal_error El balanceador de carga ha detectado un error interno. El error puede deberse a un reinicio programado del proxy que gestiona las conexiones. 0, 500, 502
proxy_internal_response El balanceador de carga ha generado la respuesta sin intentar conectarse al backend. Cualquier código de estado en función del tipo de problema. Por ejemplo, el código de estado 410 significa que el backend no está disponible debido a un impago.
http_response_timeout El balanceador de carga ha alcanzado el límite de tiempo de espera configurado del servicio de backend mientras esperaba la respuesta completa del backend. 504, 408
http_request_error El balanceador de carga ha detectado un error HTTP 4xx, lo que indica que hay problemas con la solicitud del cliente. 400, 403, 405, 406, 408, 411, 413, 414, 415, 416, 417 o 429
http_protocol_error El balanceador de carga ha detectado un error de protocolo HTTP al comunicarse con el backend. 502
tls_protocol_error El balanceador de carga ha detectado un error de TLS durante la negociación de TLS. 0
tls_certificate_error El balanceador de carga ha detectado un error al verificar el certificado presentado por el servidor o por el cliente cuando se ha habilitado mTLS. 0
tls_alert_received El balanceador de carga ha detectado una alerta TLS fatal durante el handshake TLS. 0

Campo de detalles de proxyStatus

El campo proxyStatus contiene una cadena que especifica por qué el balanceador de carga ha devuelto un error. El campo proxyStatus se compone de dos partes: proxyStatus error y proxyStatus details. El campo proxyStatus details es opcional y solo se muestra cuando hay información adicional disponible. En esta sección se describen las cadenas que se admiten en el campo proxyStatus details.

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

  • Balanceador de carga de aplicación externo regional
  • Balanceador de carga de aplicación interno regional
  • Balanceador de carga de aplicación interno entre regiones
Detalles de proxyStatus Descripción Códigos de estado de respuesta habituales
client_disconnected_before_any_response La conexión con el cliente se ha interrumpido antes de que el balanceador de carga enviara ninguna respuesta. 0
backend_connection_closed El backend ha cerrado inesperadamente su conexión con el balanceador de carga. Esto puede ocurrir si el balanceador de carga envía tráfico a otra entidad, como una aplicación de terceros que tiene un tiempo de espera de TCP inferior al tiempo de espera de 10 minutos (600 segundos) del balanceador de carga. 502
failed_to_connect_to_backend El balanceador de carga no ha podido conectarse al backend. Este error incluye tiempos de espera durante la fase de conexión. 503
failed_to_pick_backend El balanceador de carga no ha podido elegir un backend en buen estado para gestionar la solicitud. 502
response_sent_by_backend La solicitud HTTP se ha enviado correctamente al backend a través de un proxy y el backend ha devuelto la respuesta. El código de estado HTTP lo define el software que se ejecuta en el backend.
client_timed_out

La conexión entre el balanceador de carga y el cliente ha superado el tiempo de espera inactivo.

Para obtener más información sobre el balanceador de carga de aplicaciones externo regional, consulta Tiempo de espera de keep-alive HTTP de cliente. Para obtener más información sobre el balanceador de carga de aplicaciones interno, consulta Tiempo de espera de keep-alive HTTP del cliente.
0, 408
backend_timeout

El backend ha agotado el tiempo de espera al generar 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 se admiten las versiones 1.1 y 2.0 de HTTP. 400
handled_by_identity_aware_proxy Esta respuesta la ha generado Identity-Aware Proxy (IAP) 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 solicitud HTTP recibidos de un cliente contienen al menos un carácter que no está permitido según una especificación HTTP aplicable.

Por ejemplo, los nombres de los campos de encabezado que incluyen comillas dobles (") o cualquier carácter que no esté incluido en el conjunto ASCII estándar (es decir, cualquier byte >= 0x80) no son válidos.

Para obtener más información, consulta estos artículos:

400, 404
ip_detection_failed No se ha podido detectar la dirección IP original. Cualquier código de estado posible en función de la naturaleza del error. El valor debe estar entre 400 y 599.
request_body_too_large El cuerpo de la solicitud HTTP ha superado la longitud máxima admitida por el balanceador de carga. 413, 507
request_header_timeout Se ha agotado el tiempo de espera del encabezado de la solicitud porque el balanceador de carga no ha recibido la solicitud completa en un plazo de 5 segundos. 408, 504
denied_by_security_policy El balanceador de carga ha denegado esta solicitud debido a una política de seguridad de Google Cloud Armor. 403
throttled_by_security_policy La solicitud se ha bloqueado por una regla de limitación de Cloud Armor. 429
client_cert_chain_invalid_eku El certificado de cliente o su emisor no tiene un uso de clave extendido que incluya clientAuth. Para obtener más información, consulta la sección Errores registrados de 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 de conexiones cerradas. 0
client_cert_invalid_rsa_key_size Un certificado de hoja o intermedio de cliente tenía un tamaño de clave RSA no válido. Para obtener más información, consulta Errores registrados de conexiones cerradas. 0
client_cert_not_provided El cliente no ha proporcionado el certificado solicitado durante la negociación. Para obtener más información, consulta Errores registrados de conexiones cerradas. 0
client_cert_pki_too_large La PKI que se va a usar para la validación tiene más de tres certificados intermedios que comparten el mismo Subject y Subject Public Key Info. Para obtener más información, consulta Errores registrados de conexiones cerradas. 0
client_cert_unsupported_elliptic_curve_key Un certificado de cliente o intermedio usa una curva elíptica no admitida. Para obtener más información, consulta Errores registrados de conexiones cerradas. 0
client_cert_unsupported_key_algorithm Un certificado de cliente o intermedio usa un algoritmo que no es RSA ni ECDSA. Para obtener más información, consulta Errores registrados de conexiones cerradas. 0
client_cert_validation_failed El certificado de cliente no supera la validación con TrustConfig. Para obtener más información, consulta Errores registrados de conexiones cerradas. 0
client_cert_validation_not_performed Has configurado TLS mutuo sin configurar un TrustConfig. Para obtener más información, consulta Errores registrados de conexiones cerradas. 0
client_cert_validation_search_limit_exceeded Se ha alcanzado el límite de profundidad o de iteración al intentar validar la cadena de certificados. Para obtener más información, consulta Errores registrados de conexiones cerradas. 0
client_cert_validation_timed_out Se ha superado el tiempo límite (200 ms) al validar la cadena de certificados. Para obtener más información, consulta Errores registrados de conexiones cerradas. 0
tls_version_not_supported Se reconoce la versión del protocolo TLS, pero no se admite. El error provoca que se cierre la conexión TLS. 0
unknown_psk_identity Los servidores envían este error cuando se requiere el establecimiento de una clave PSK, pero el cliente no proporciona una identidad PSK aceptable. El error provoca que se cierre la conexión TLS. 0
no_application_protocol Enviado por los servidores cuando una extensión "application_layer_protocol_negotiation" de un cliente anuncia solo protocolos que el servidor no admite. Consulta la extensión de negociación de protocolo de capa de aplicación de TLS. El error provoca que se cierre la conexión TLS. 0
no_certificate No se ha encontrado ningún certificado. El error provoca que se cierre la conexión TLS. 0
bad_certificate Un certificado no es válido o contiene firmas que no se han podido verificar. El error provoca que se cierre la conexión TLS. 0
unsupported_certificate Un certificado es de un tipo no admitido. El error provoca que se cierre la conexión TLS. 0
certificate_revoked El firmante ha revocado un certificado. El error provoca que se cierre la conexión TLS. 0
certificate_expired Un certificado ha caducado o no es válido. El error provoca que se cierre la conexión TLS. 0
certificate_unknown Se han detectado algunos problemas sin especificar al procesar el certificado, por lo que no se puede aceptar. El error provoca que se cierre la conexión TLS. 0
unknown_ca Se ha recibido una cadena de certificados válida o una cadena parcial, pero no se puede aceptar el certificado porque no se encuentra el certificado de CA o no coincide con una raíz de confianza conocida. El error provoca que se cierre la conexión TLS. 0
unexpected_message Se ha recibido un mensaje inapropiado, como un mensaje de handshake incorrecto o datos de aplicación prematuros. El error provoca que se cierre la conexión TLS. 0
bad_record_mac Se recibe un registro que no se puede desproteger. El error provoca que se cierre la conexión TLS. 0
record_overflow Se ha recibido un registro TLSCiphertext con una longitud superior a 214+256 bytes, o bien se ha descifrado un registro TLSPlaintext con más de 214 bytes (u otro límite negociado). El error provoca que se cierre la conexión TLS. 0
handshake_failure No se ha podido negociar un conjunto aceptable de parámetros de seguridad con las opciones disponibles. El error provoca que se cierre la conexión TLS. 0
illegal_parameter Un campo del handshake era incorrecto o no coincidía con otros campos. El error provoca que se cierre la conexión TLS. 0
access_denied Se ha recibido un certificado o una PSK válidos, pero cuando se ha aplicado el control de acceso, el cliente no ha continuado con la negociación. El error provoca que se cierre la conexión TLS. 0
decode_error No se ha podido decodificar un mensaje porque algunos campos están fuera del intervalo especificado o la longitud del mensaje es incorrecta. El error provoca que se cierre la conexión TLS. 0
decrypt_error Ha fallado una operación criptográfica de handshake (no de capa de registro), como no poder verificar correctamente una firma o validar un mensaje finalizado o un enlace PSK. El error provoca que se cierre la conexión TLS. 0
insufficient_security Se ha producido un error en una negociación porque el servidor requiere parámetros más seguros que los que admite el cliente. El error provoca que se cierre la conexión TLS. 0
inappropriate_fallback Enviada por un servidor en respuesta a un intento de reintento de conexión no válido de un cliente. El error provoca que se cierre la conexión TLS. 0
user_cancelled El usuario ha cancelado el handshake por algún motivo ajeno a un fallo del protocolo. El error provoca que se cierre la conexión TLS. 0
missing_extension Enviado por los endpoints que reciben un mensaje de handshake que no contiene una extensión obligatoria para enviar la versión de TLS ofrecida u otros parámetros negociados. El error provoca que se cierre la conexión TLS. 0
unsupported_extension Enviado por los endpoints que reciben cualquier mensaje de handshake que contenga una extensión que se sabe que está prohibida para incluirla en el mensaje de handshake en cuestión, o que incluya cualquier extensión en ServerHello o Certificate que no se haya ofrecido primero en el ClientHello o CertificateRequest correspondiente. El error provoca que se cierre la conexión TLS. 0
unrecognized_name Enviado por los servidores cuando no hay ningún servidor que se pueda identificar por el nombre proporcionado por el cliente a través de la extensión "server_name". Consulta las definiciones de extensiones TLS. 0
bad_certificate_status_response Enviada por los clientes cuando el servidor proporciona una respuesta OCSP no válida o inaceptable a través de la extensión "status_request". Consulta las definiciones de extensiones TLS. El error provoca que se cierre la conexión TLS. 0
load_balancer_configured_resource_limits_reached El balanceador de carga ha alcanzado los límites de recursos configurados, como el número máximo de conexiones. 0

Entradas de registro de conexiones TLS fallidas

Cuando falla la conexión TLS entre el cliente y el balanceador de carga antes de que se seleccione ningún backend, las entradas de registro registran los errores. Puedes configurar los servicios backend con diferentes frecuencias de muestreo de registros. Cuando falla una conexión TLS, la frecuencia de muestreo de los registros de conexiones TLS fallidas es la frecuencia de muestreo más alta de cualquier servicio backend. Por ejemplo, si has configurado dos servicios de backend con una frecuencia de muestreo de registros de 0.3 y 0.5, la frecuencia de muestreo de registros de conexión TLS fallida es 0.5.

Para identificar las conexiones TLS fallidas, comprueba los detalles de estas entradas de registro:

  • El tipo de error 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 fallida 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"
  

Registros de solicitudes de políticas de autorización

El objeto authz_info de la carga útil JSON de la entrada de registro del balanceador de carga contiene información sobre las políticas de autorización. Puedes configurar métricas basadas en registros para el tráfico permitido o denegado por estas políticas. Consulta más detalles del registro de políticas de autorización.

Campo Tipo Descripción
authz_info.policies[] objeto Lista de políticas que coinciden con la solicitud.
authz_info.policies[].name cadena El nombre de la política de autorización que coincide con la solicitud.

El nombre está vacío por los siguientes motivos:

  • Ninguna política de ALLOW coincide con la solicitud y esta se rechaza.
  • Ninguna política de DENY coincide con la solicitud y esta se permite.
authz_info.policies[].result enum El resultado puede ser ALLOWED o DENIED.
authz_info.policies[].details cadena Los detalles incluyen lo siguiente:
  • allowed_as_no_deny_policies_matched_request
  • denied_as_no_allow_policies_matched_request
  • denied_by_authz_extension
  • denied_by_cloud_iap
authz_info.overall_result enum El resultado puede ser ALLOWED o DENIED.

Interactuar con los registros

Puedes interactuar con los registros del balanceador de carga de aplicaciones externo mediante la API Cloud Logging. La API Logging ofrece formas de filtrar de forma interactiva los registros que tienen campos específicos definidos. Exporta los registros coincidentes a Cloud Logging, Cloud Storage, BigQuery o Pub/Sub. Para obtener más información sobre la API Logging, consulta la descripción general de la API Logging.

Supervisión

El balanceador de carga exporta datos de monitorización a Monitoring.

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

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

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

Definir políticas de alertas

Puedes crear políticas de alertas para monitorizar los valores de las métricas y recibir notificaciones cuando esas métricas incumplan una condición.

  1. En la Google Cloud consola, ve a la página  Alertas:

    Ve a Alertas.

    Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.

  2. Si no has creado tus canales de notificación y quieres recibir notificaciones, haz clic en Editar canales de notificación y añade tus canales de notificación. Vuelve a la página Alertas después de añadir tus canales.
  3. En la página Alertas, selecciona Crear política.
  4. Para seleccionar la métrica, despliega el menú Seleccionar una métrica y, a continuación, haz lo siguiente:
    1. Para limitar el menú a las entradas relevantes, introduce Regional External Application Load Balancer Rule en la barra de filtro. Si no hay resultados después de filtrar el menú, desactive el interruptor Mostrar solo recursos y métricas activos.
    2. En Tipo de recurso, selecciona Regla de balanceador de carga de aplicación externo regional.
    3. Seleccione una Categoría de métrica y una Métrica y, a continuación, Aplicar.
  5. Haz clic en Siguiente.
  6. Los ajustes de la página Configurar activador de alerta determinan cuándo se activa la alerta. Seleccione un tipo de condición y, si es necesario, especifique un umbral. Para obtener más información, consulta el artículo Crear políticas de alertas de umbral de métricas.
  7. Haz clic en Siguiente.
  8. Opcional: Para añadir notificaciones a tu política de alertas, haz clic en Canales de notificación. En el cuadro de diálogo, selecciona uno o más canales de notificación y, luego, haz clic en Aceptar.
  9. Opcional: Actualiza la duración del cierre automático de incidentes. Este campo determina cuándo cierra Monitoring los incidentes si no hay datos de métricas.
  10. Opcional: Haz clic en Documentación y añade la información que quieras incluir en las notificaciones.
  11. Haz clic en Nombre de la alerta y escribe el que quieras asignar a la política de alertas.
  12. Haz clic enCreate Policy (Crear política).
Para obtener más información, consulta el resumen de alertas.

Definir paneles de control personalizados de Cloud Monitoring

Puede crear paneles de control personalizados de Cloud Monitoring para las métricas del balanceador de carga:

  1. En la Google Cloud consola, ve a la página Monitorización.

    Ir a Monitoring

  2. Selecciona Paneles > Crear panel.

  3. Haz clic en Añadir gráfico y, a continuación, ponle un título.

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

    1. En la sección Recurso y métrica, haga clic en el gráfico y, a continuación, en la sección Seleccionar una métrica, elija una de las opciones disponibles:
    2. En el caso de un balanceador de carga de aplicación externo regional, selecciona el tipo de recurso Regla de balanceador de carga de aplicación externo regional.
    3. Haz clic en Aplicar.
  5. Para especificar filtros de monitorización, haga clic en Filtros > Añadir filtro.

  6. Haz clic en Guardar.

Frecuencia de los informes de métricas y retención

Las métricas de los balanceadores de carga de aplicaciones externos se exportan a Cloud Monitoring en lotes con una granularidad de 1 minuto. Los datos de monitorización se conservan durante seis (6) semanas.

El panel de control proporciona análisis de datos en intervalos predeterminados de 1H (una hora), 6H (seis horas), 1D (un día), 1W (una semana) y 6W (seis semanas). Puedes solicitar un análisis manualmente en cualquier intervalo de entre 6 semanas y 1 minuto.

Monitorizar métricas

Puede monitorizar las siguientes métricas de los balanceadores de carga de aplicación externos.

Las siguientes métricas de los balanceadores de carga de aplicaciones externos regionales se registran en Cloud Monitoring. Estas métricas empiezan por loadbalancing.googleapis.com/.

Métrica Nombre Descripción
Número de solicitudes https/external/regional/request_count Número de solicitudes atendidas por el balanceador de carga de aplicación externo regional.
Número de bytes de solicitudes https/external/regional/request_bytes Número de bytes enviados como solicitudes de clientes al balanceador de carga de aplicaciones externo regional.
Número de bytes de respuesta https/external/regional/response_bytes Número de bytes enviados como respuestas desde el balanceador de carga de aplicaciones externo regional al cliente.
Latencias totales https/external/regional/total_latencies

Distribución de la latencia total. La latencia total es el tiempo en milisegundos que transcurre entre el primer byte de la solicitud recibida por el proxy y el último byte de la respuesta enviada por el proxy. Incluye el tiempo que tarda el proxy en procesar la solicitud, el tiempo que tarda la solicitud en enviarse del proxy al backend, el tiempo que tarda el backend en procesar la solicitud, el tiempo que tarda la respuesta en enviarse de vuelta al proxy y el tiempo que tarda el proxy en procesar la respuesta y enviarla al cliente.

No incluye el tiempo de ida y vuelta entre el cliente y el proxy. Además, las pausas entre solicitudes en la misma conexión que usan Connection: keep-alive no afectan a la medición. Esta medición suele reducirse al percentil 95 en las vistas de Cloud Monitoring.

Latencias de backend https/external/regional/backend_latencies

Distribución de la latencia del backend. La latencia del backend es el tiempo en milisegundos que transcurre entre el último byte de la solicitud enviada al backend y el último byte de la respuesta recibida por el proxy. Incluye el tiempo que tarda el backend en procesar la solicitud y el tiempo que tarda en enviar la respuesta al proxy.

Dimensiones de filtro de métricas

Puede aplicar filtros a las métricas de los balanceadores de carga de aplicaciones externos.

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

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

Siguientes pasos