Registros y métricas para servicios de backend

En este documento, se muestra cómo configurar y usar Cloud Logging y Cloud Monitoring con balanceadores de cargas de aplicaciones clásicos, balanceadores de cargas de aplicaciones externos globales y Cloud CDN.

Logging

Puedes habilitar, inhabilitar y ver registros para un servicio de backend del balanceador de cargas de aplicaciones externo. Para los balanceadores de cargas de aplicaciones externos con buckets de backend, el registro se habilita automáticamente y no se puede inhabilitar.

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.

Muestreo y recopilación de registros

Se toman muestras de las solicitudes (y las respuestas correspondientes) que controlan las instancias de máquina virtual (VM) de backend del balanceador de cargas. Estas solicitudes de muestra se procesan para generar registros. Puedes controlar la fracción de las solicitudes que se emiten como entradas de registro según el parámetro logConfig.sampleRate. Cuando logConfig.sampleRate es 1.0 (100%), significa que se generan registros para todas las solicitudes y se escriben en Cloud Logging.

Habilita el registro en un servicio de backend nuevo

Console

  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. Configura una fracción de 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.

  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 global

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

gcloud compute backend-services create BACKEND_SERVICE \
    --global \
    --enable-logging \
    --logging-sample-rate=VALUE \
    --load-balancing-scheme=EXTERNAL_MANAGED

donde

  • --global indica que el servicio de backend es global. Usa este campo para los servicios de backend que se usan con balanceadores de cargas de aplicaciones externos globales.
  • --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.

gcloud: modo clásico

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

gcloud compute backend-services create BACKEND_SERVICE \
 --global \
 --enable-logging \
 --logging-sample-rate=VALUE \
 --load-balancing-scheme=EXTERNAL

donde

  • --global indica que el servicio de backend es global. Usa este campo para los servicios de backend que se usan con un balanceador de cargas de aplicaciones clásico.
  • --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.

Habilita el registro en un servicio de backend existente

Console

  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. 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 global

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

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

donde

  • --global indica que el servicio de backend es global. Usa este campo para los servicios de backend que se usan con balanceadores de cargas de aplicaciones externos globales.
  • --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.

gcloud: modo clásico

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

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

donde

  • --global indica que el servicio de backend es global. Usa este campo para los servicios de backend que se usan con un balanceador de cargas de aplicaciones clásico.
  • --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.

Inhabilita o modifica el registro en un servicio de backend existente

Console

  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 fracción de Tasa de muestreo diferente. 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. 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 cargas, haz clic en Actualizar.

gcloud: modo global

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 \
    --global \
    --no-enable-logging

donde

  • --global indica que el servicio de backend es global. Usa este campo para los servicios de backend que se usan con balanceadores de cargas de aplicaciones externos globales.
  • --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 \
 --logging-sample-rate=VALUE

gcloud: modo clásico

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 \
    --global \
    --no-enable-logging

donde

  • --global indica que el servicio de backend es global. Usa este campo para los servicios de backend que se usan con un balanceador de cargas de aplicaciones clásico.
  • --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 \
 --logging-sample-rate=VALUE

donde

  • --global indica que el servicio de backend es global. Usa este campo para los servicios de backend que se usan con un balanceador de cargas de aplicaciones clásico.
  • --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.

Ver registros


Para seguir la guía paso a paso sobre esta tarea de forma directa en la consola de Google Cloud, haz clic en Guiarme:

GUIARME


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 clásicos y externos globales, puedes exportar métricas basadas en registros mediante los registros de recursos (resource.type="http_load_balancer"). Las métricas creadas se basan en el recurso “Regla de balanceador de cargas de aplicaciones (métricas basadas en registros)” (l7_lb_rule), que está disponible en los paneles de Cloud Monitoring en lugar de en el recurso https_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.

Campo Formato del campo Tipo del campo: opcional o requerido Descripción
gravedad
insertID
logName
LogEntry Obligatorio Los campos generales, como se describe en una entrada de registro.
timestamp string (Timestamp format) Opcional La hora en que la primera capa de GFE recibe la solicitud.
httpRequest HttpRequest Obligatorio Un protocolo común para registrar solicitudes HTTP.

HttpRequest.protocol no se propaga para resource.type="http_load_balancer"

.
resource MonitoredResource Obligatorio

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) Obligatorio Indica la carga útil de la entrada de registro que se expresa como un objeto JSON. El objeto JSON contiene los siguientes campos:
  • statusDetails
  • backendTargetProjectNumber
  • overrideResponseCode
  • errorService
  • errorBackendStatusDetails
  • authzPolicyInfo
  • loadBalancingScheme
string Obligatorio El campo statusDetails contiene una string que explica por qué el balanceador de cargas mostró el estado HTTP que creó. Para obtener más información sobre estas strings de registro, consulta los mensajes de éxito HTTP de statusDetails y los mensajes de error HTTP de statusDetails.
string Obligatorio El campo backendTargetProjectNumber contiene el número del proyecto en el que se creó el destino del backend (el servicio o el bucket del backend). Este campo tiene el siguiente formato: "projects/PROJECT_NUMBER". Esta información solo está disponible para los balanceadores de cargas de aplicaciones externos globales que usan respuestas de error personalizadas.
número entero Obligatorio overrideResponseCode contiene el código de respuesta de anulación aplicado a la respuesta enviada al cliente. Esta información solo está disponible para los balanceadores de cargas de aplicaciones externos globales que usan respuestas de error personalizadas.
string Obligatorio El campo errorService contiene el servicio de backend que proporcionó la respuesta de error personalizada. Esta información solo está disponible para los balanceadores de cargas de aplicaciones externos globales que usan respuestas de error personalizadas.
string Obligatorio El campo errorBackendStatusDetails contiene el statusDetails de la respuesta final que se entrega al cliente. Esta información solo está disponible para los balanceadores de cargas de aplicaciones externos globales que usan respuestas de error personalizadas.
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 cargas de aplicaciones externos globales que tienen habilitada la Política de autorización. Para obtener más información, consulta qué se registra en la política de autorización.
string Opcional El campo loadBalancingScheme solo se propaga para los clientes que usan la función de migración del balanceador de cargas de aplicaciones clásico. Este campo contiene una cadena que describe qué esquema de balanceo de cargas se usó para enrutar la solicitud. Los valores posibles son EXTERNAL o EXTERNAL_MANAGED.

Etiquetas de recursos

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

Campo Tipo Descripción
backend_service_name string El nombre del servicio de backend.
forwarding_rule_name string El nombre del objeto de regla de reenvío.
project_id string El identificador del proyecto de Google Cloud asociado a este recurso.
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.
zone string La zona en la que se ejecuta el balanceador de cargas. La zona es global.

Mensajes de éxito HTTP de statusDetails

statusDetails (exitoso) Significado Códigos de respuesta adjuntos comunes
byte_range_caching La solicitud HTTP se entregó mediante el almacenamiento en caché de rango de bytes de Cloud CDN. Cualquier código de respuesta que se puede almacenar en caché es posible.
response_from_cache La solicitud HTTP se entregó desde una caché de Cloud CDN. Cualquier código de respuesta que se puede almacenar en caché es posible.
response_from_cache_validated El código de muestra se configuró a partir de una entrada almacenada en caché de Cloud CDN que un backend validó. Cualquier código de respuesta que se puede almacenar en caché es posible.
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.

Mensajes de error HTTP de statusDetails

statusDetails (error) Significado Códigos de respuesta adjuntos comunes
aborted_request_due_to_backend_early_response Se anuló una solicitud con cuerpo debido a que el backend envió una respuesta anticipada con un código de error. La respuesta se reenvió al cliente. La solicitud se terminó. 4XX o 5XX
backend_connection_closed_after_partial_response_sent Se cerró la conexión de backend de forma inesperada después de que se envió una respuesta parcial al cliente.

El software que se ejecuta en el backend establece el código de respuesta HTTP. El código de respuesta HTTP 0 (cero) significa que el backend envió encabezados HTTP incompletos.

El código de respuesta HTTP es 101 si la conexión HTTP(S) se actualizó a una conexión websocket.

backend_connection_closed_before_data_sent_to_client El backend cerró su conexión con el balanceador de cargas de forma inesperada antes de que la respuesta se enviara al cliente mediante proxy.

502, 503

El código de respuesta HTTP es 101 si la conexión HTTP(S) se actualizó a una conexión websocket.

backend_early_response_with_non_error_status El backend envió una respuesta sin errores (1XX o 2XX) a una solicitud antes de recibir todo el cuerpo de la solicitud. 502, 503
backend_interim_response_not_supported El backend envió una respuesta provisional 1XX a la solicitud en un contexto en que las respuestas provisionales no son compatibles.

502, 503

backend_response_corrupted El cuerpo de la respuesta HTTP que envió el backend tiene una codificación de transferencia fragmentada no válida o está dañado. Cualquier código de respuesta posible según la naturaleza del daño A menudo, 502, 503.
backend_response_headers_too_long Los encabezados de respuesta HTTP que envió el backend superaron el límite permitido. Consulta la sección Tamaño del encabezado para balanceadores de cargas de aplicaciones externos para obtener más información. 502, 503
backend_timeout

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

Para una conexión de websocket, sigue estos pasos:

  • Para el balanceador de cargas de aplicaciones externo global, se genera un error cuando GFE cierra la conexión de WebSocket en estado inactivo después de que vence el tiempo de espera del servicio de backend.
  • En el balanceador de cargas de aplicaciones clásico, se genera un error cuando el GFE cierra la conexión de websocket en estado inactivo o activo, después de que el tiempo de espera del servicio de backend.

502, 503

El código de respuesta HTTP es 101 si la conexión HTTP(S) se actualizó a una conexión websocket.

banned_by_security_policy La solicitud se prohibió mediante una regla de bloqueo basada en tarifas de Google Cloud Armor. 429
body_not_allowed El cliente envió una solicitud HTTP con un cuerpo, pero el método HTTP usado no permite un cuerpo. 400
byte_range_caching_aborted El balanceador de cargas recibió con anterioridad una respuesta que indica que el recurso se podía almacenar en caché y admitir rangos de bytes. Cloud CDN recibió una respuesta incoherente (por ejemplo, una con un código de respuesta distinto del 206 Partial Content esperado). Esto ocurrió cuando se intentó realizar el llenado de caché mediante una solicitud de rango de bytes. Como resultado, el balanceador de cargas anuló la respuesta al cliente. 2XX
byte_range_caching_forwarded_backend_response El balanceador de cargas recibió con anterioridad una respuesta que indica que el recurso se podía almacenar en caché y admitir rangos de bytes. Cloud CDN recibió una respuesta incoherente (por ejemplo, una con un código de respuesta distinto del 206 Partial Content esperado). Esto ocurrió cuando se intentó realizar el llenado de caché mediante una solicitud de rango de bytes. El balanceador de cargas reenvió la respuesta incoherente al cliente.

Se muestran desde el backend: cualquier código de respuesta es posible.

byte_range_caching_retrieval_abandoned El cliente canceló una solicitud de rango de bytes o una solicitud de validación que inició Cloud CDN.

Se muestran desde el backend: cualquier código de respuesta es posible.

byte_range_caching_retrieval_from_backend_failed_after_partial_response Se produjo un error con una solicitud de rango de bytes o una solicitud de validación que inició Cloud CDN. Consulta la entrada de registro de Cloud Logging correspondiente a la solicitud que inició Cloud CDN para el estado del backend detallado. 2XX
cache_lookup_failed_after_partial_response El balanceador de cargas no pudo entregar una respuesta completa desde la caché de Cloud CDN debido a un error interno. 2XX
cache_lookup_timeout_after_partial_response Se agotó el tiempo de espera de la transmisión de búsqueda de caché de Cloud CDN porque el cliente no recuperó el contenido de manera oportuna. 2XX
client_disconnected_after_partial_response La conexión con el cliente se interrumpió después de que el balanceador de cargas enviara una respuesta parcial.

Se muestran desde el backend: cualquier código de respuesta es posible.

El código de respuesta HTTP es 101 si la conexión HTTP(S) se actualizó a una conexión websocket.

client_disconnected_before_any_response La conexión con el cliente se interrumpió antes de que el balanceador de cargas enviara cualquier respuesta.

0

El código de respuesta HTTP es 101 si la conexión HTTP(S) se actualizó a una conexión websocket.

client_timed_out Google Front End (GFE) dejó inactiva la conexión del cliente debido a la falta de progreso cuando se enviaba la solicitud o la respuesta mediante proxy. 0 o 408
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_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_pki_too_large La PKI que se usará para la validación tiene más de tres certificados intermedios que comparten la misma información de clave pública del sujeto. 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_chain_invalid_eku El certificado de cliente o su entidad emisora no tiene Extended Key Usage (EKU) que incluya clientAuth. Para obtener más información, consulta Errores registrados para conexiones cerradas. 0
client_cert_validation_timed_out Se superó el límite de tiempo durante la validación de la cadena de certificados. 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_not_performed Configuraste mTLS sin configurar un TrustConfig. 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_validation_failed El certificado de cliente falla la validación con TrustConfig cuando se usan algoritmos de hash como MD4, MD5 y SHA-1. Para obtener más información, consulta Errores registrados para conexiones cerradas. 0
config_not_found

Falta la configuración del proyecto en el balanceador de cargas. Esto puede ocurrir de forma intermitente, en especial después de realizar cambios en la configuración que agregan un recurso nuevo.

Como hay dos capas de proxies, a veces, es posible que el GFE de la primera capa no alcance el GFE de la segunda. Esto podría deberse a un error interno, como un lanzamiento en curso, una sobrecarga del balanceador de cargas o problemas de configuración intermitente.

404, 502, 503
direct_response El balanceador de cargas anuló esta solicitud y mostró una respuesta fija. Es posible que veas cualquier código de respuesta HTTP según la naturaleza del problema. Por ejemplo, el código de respuesta HTTP 410 significa que el backend no está disponible debido a mora de pago.
denied_by_security_policy El balanceador de cargas rechazó esta solicitud debido a una política de seguridad de Google Cloud Armor. Se configuran en la política de seguridad.
error_uncompressing_gzipped_body Se produjo un error cuando se descomprimía una respuesta HTTP comprimida. 502, 503
failed_to_connect_to_backend No se pudo conectar el balanceador de cargas al backend. Esto incluye los tiempos de espera durante la fase de conexión. 502, 503
failed_to_pick_backend El balanceador de cargas no pudo elegir un backend en buen estado para manejar la solicitud. 502, 503
failed_to_negotiate_alpn El balanceador de cargas y el backend no pudieron negociar un protocolo de capa de aplicación (como HTTP/2) para comunicarse entre sí a través de TLS. 502, 503
headers_too_long Los encabezados de solicitud eran mayores que el máximo permitido. 413
http_version_not_supported No se admite la versión HTTP. Por el momento, solo son compatibles HTTP 0.9, 1.0, 1.1 y 2.0. 400
internal_error Error interno en el balanceador de cargas. Por lo general, representa un error transitorio en la infraestructura del balanceador de cargas. Vuelve a intentar la consulta. 4XX
invalid_external_origin_endpoint La configuración del backend externo no es válida. Revisa la configuración de NEG de Internet y asegúrate de que especifique un puerto y una dirección FQDN/IP válidos. 4XX
invalid_request_headers

Los encabezados de la solicitud HTTP recibidos de un cliente contienen al menos un carácter que no se permite según una especificación HTTP aplicable.

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

Para obtener más información, consulte:

400
invalid_http2_client_header_format Los encabezados HTTP/2 de un cliente no son válidos. Para obtener más información, consulta invalid_request_headers. 400
invalid_http2_client_request_path

La ruta de la solicitud HTTP/2 de un cliente contiene al menos un carácter que no se permite según la especificación del URI.

Para obtener más información, consulta el artículo 3.3. Ruta de acceso" de la RFC 3986.

400
multiple_iap_policies No se pueden combinar varias políticas de Identity-Aware Proxy (IAP). Si tienes una política de IAP adjunta a un servicio de backend y otra política adjunta a un objeto sin servidores, quita una de ellas y vuelve a intentarlo. Los objetos sin servidores incluyen App Engine, Cloud Run y funciones de Cloud Run. 500
malformed_chunked_body El cuerpo de la solicitud estaba codificado en un fragmento de forma incorrecta. 411
request_loop_detected El balanceador de cargas detectó un bucle de solicitud. Este bucle podría deberse a una configuración incorrecta en la que el backend reenvió la solicitud de regreso al balanceador de cargas. 502, 503
required_body_but_no_content_length La solicitud HTTP requiere un cuerpo, pero los encabezados de solicitud no incluían una longitud de contenido ni un encabezado fragmentado de codificación de transferencia. 400 o 403
secure_url_rejected Se recibió una solicitud con una URL https:// a través de una conexión HTTP/1.1 de texto simple. 400
ssl_certificate_san_verification_failed El balanceador de cargas no pudo encontrar un SAN (Nombre alternativo de la entidad) en el certificado SSL que presentó el backend que coincida con el nombre de host configurado. 502, 503
ssl_certificate_chain_verification_failed El certificado SSL que presentó el backend no pasó la verificación del certificado SSL. 502, 503
throttled_by_security_policy La regla de limitación de Google Cloud Armor bloqueó la solicitud. 429
unsupported_method El cliente proporcionó un método de solicitud HTTP no compatible. 400
unsupported_100_continue La solicitud del cliente incluía el encabezado “Expect: 100-continue” en un protocolo que no lo admite. 400
upgrade_header_rejected La solicitud HTTP del cliente contenía el encabezado Actualizar y se rechazó. 400
websocket_closed Se cerró la conexión de Websocket. 101
websocket_handshake_failed Se produjo un error en el protocolo de enlace de Websocket. Cualquier código de respuesta posible según la naturaleza de la falla del protocolo de enlace.
request_body_too_large El cuerpo de la solicitud HTTP superó el máximo que admite el backend. No aplicable para backends de VM. 413
handled_by_identity_aware_proxy Identity-Aware Proxy generó esta respuesta durante la verificación de identidad del cliente antes de permitir el acceso.

200, 302, 400, 401, 403, 500, 502, 503

429 (limitado por la IAP)

serverless_neg_routing_failed No se puede enviar la solicitud del NEG sin servidores. Esto puede ocurrir cuando no se puede acceder a la región especificada en el NEG o cuando no se puede encontrar el nombre del recurso (por ejemplo, el nombre de las funciones de Cloud Run). 404, 502, 503
fault_filter_abort Este error puede ocurrir si el cliente configuró un filtro de fallas y el filtro de fallas se activó para la solicitud determinada. El valor debe ser de 200 a 599.

Visualiza los registros para la validación del certificado de cliente de mTLS

Para ver los errores registrados para conexiones cerradas durante la validación mutua del certificado de cliente de TLS, completa los siguientes pasos.

Consulta de consola

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

    Ir al Explorador de registros

  2. Haz clic en el botón de activar o desactivar Mostrar consulta.

  3. Pega lo siguiente en el campo de la consulta. Reemplaza FORWARDING_RULE_NAME por el nombre de la regla de reenvío.

    jsonPayload.statusDetails=~"client_cert"
    jsonPayload.@type="type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
    resource.labels.forwarding_rule_name=FORWARDING_RULE_NAME
    
  4. Haz clic en Ejecutar consulta.

Registros de solicitudes de la política de autorización

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

Campo Tipo Descripción
authz_info.policies[] objeto Es la lista de políticas que coinciden con la solicitud.
authz_info.policies[].name string Es el nombre de la política de autorización que coincide con la solicitud.
El nombre está vacío por los siguientes motivos:
  • No hay ninguna política de ALLOW que coincida con la solicitud, por lo que se rechaza.
  • No hay ninguna política de DENY que coincida con la solicitud, y esta se permite.
authz_info.policies[].result enum El resultado puede ser ALLOWED o DENIED.
authz_info.policies[].details string 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.

Logging para Google Cloud Armor

La tabla de mensajes de error de HTTP statusDetail contiene algunos mensajes que se aplican a Google Cloud Armor. Para obtener más información sobre qué registra Google Cloud Armor, consulta Usa el registro de solicitudes.

Registro para implementaciones de VPC compartida

Por lo general, los registros y las métricas del balanceador de cargas de la aplicación se exportan al proyecto que tiene la regla de reenvío. Por lo tanto, los administradores de servicios (propietarios o usuarios de proyectos en los que se crea el servicio de backend) no tendrán acceso a los registros y las métricas del balanceador de cargas de forma predeterminada. Puedes usar roles de IAM para otorgar estos permisos a los administradores de servicios. Para obtener más información sobre los roles de IAM que están disponibles y los pasos que debes seguir para proporcionar acceso, consulta Otorga acceso a Monitoring.

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
  • Soluciona problemas
  • Mejorar el uso de recursos y la experiencia del usuario

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.

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 globales se informan en Cloud Monitoring. Estas métricas están precedidas por loadbalancing.googleapis.com/.

Métrica Nombre Descripción
Recuento de solicitudes https/request_count La cantidad de solicitudes que entregó el balanceador de cargas de aplicaciones externo
Recuento de bytes de solicitud https/request_bytes_count La cantidad de bytes enviados como solicitudes de clientes al balanceador de cargas de aplicaciones externo
Recuento de bytes de respuesta https/response_bytes_count La cantidad de bytes enviados como respuestas del balanceador de cargas de aplicaciones externo a los clientes
Latencias totales https/total_latencies

Una distribución de la latencia. La latencia es el tiempo entre el primer byte de la solicitud recibida hasta el último byte de la respuesta que envía GFE.

Las latencias totales se miden por solicitud o respuesta. Las pausas entre solicitudes en la misma conexión que usan Connection: keep-alive no afectan la medición. Por lo general, esta medición se reduce al percentil 95 en las vistas de Cloud Monitoring.

Para las conexiones WebSocket, este campo hace referencia a toda la duración de la conexión.

Ejemplo: Un balanceador de cargas tiene 1 solicitud por segundo del Reino Unido, todas con una latencia de 100 ms, y 9 solicitudes por segundo de los EE.UU., todas con una latencia de 50 ms. En un determinado momento, hubo 60 solicitudes del Reino Unido y 540 solicitudes de los EE.UU. Las métricas de Monitoring conservan la distribución en todas las dimensiones. Puedes solicitar información como la siguiente:

  • latencia general mediana (300/600): 50 ms
  • latencia mediana del Reino Unido (30/60): 100 ms
  • latencia general del percentil 95 (570/600): 100 ms
RTT de frontend* https/frontend_tcp_rtt Una distribución del tiempo de ida y vuelta suavizado (RTT) medida para cada conexión entre el cliente y el GFE (se mide por la pila TCP de GFE) El RTT suavizado es un algoritmo que se ocupa de las variaciones y las anomalías que pueden ocurrir en las mediciones de RTT.
Latencias de backend* https/backend_latencies

Una distribución de la latencia que se mide desde el momento en que GFE envió el primer byte de la solicitud al backend hasta que GFE recibió el último byte de respuesta del backend

Para las conexiones WebSocket, las latencias de backend se aplican a toda la duración de la sesión de WebSocket.

Fracción de clase de código de respuesta Fracción de las respuestas totales del balanceador de cargas de aplicaciones externo que se encuentran en cada clase de código de respuesta (2XX, 4XX, …). En Cloud Monitoring, este valor solo está disponible en los paneles predeterminados. No está disponible para los paneles personalizados. Puedes usar la API para configurar alertas.
Recuento de solicitudes de backend https/backend_request_count La cantidad de solicitudes enviadas desde el balanceador de cargas de aplicaciones externo a los backends.
Recuento de bytes de solicitudes de backend https/backend_request_bytes_count La cantidad de bytes enviados como solicitudes del balanceador de cargas de aplicaciones externo a los backends.
Recuento de bytes de respuesta de backend https/backend_response_bytes_count La cantidad de bytes enviados como respuestas de los backends (incluida la caché) al balanceador de cargas de aplicaciones externo.

* No se garantiza que la suma del RTT de frontend y las latencias de backend sea menor o igual que las latencias totales. Esto se debe a que, aunque sondeamos el RTT a través del socket de GFE al cliente en el momento en que se confirma la respuesta HTTP, confiamos en el informe del kernel en algunas de estas mediciones y no podemos garantizar que el kernel tenga una medición del RTT para una respuesta HTTP determinada. El resultado final es un valor suavizado de RTT que también se ve afectado por las respuestas HTTP anteriores, SYN/ACK y los protocolos de enlace SSL que no afectan los tiempos reales de las solicitudes HTTP actuales.

A fin de supervisar las conexiones de WebSockets, crea un servicio de backend específico para WebSockets.

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 clásico y balanceador de cargas de aplicaciones externo global. Puedes filtrar métricas agregadas por las siguientes dimensiones para resource.type="http_load_balancer" o resource.type="https_lb_rule". Ten en cuenta que no todas las dimensiones están disponibles en todas las métricas.

Propiedad Descripción
backend_scope El alcance de Google Cloud (región o zona) del grupo de instancias del servicio de backend que entregó la conexión.

Si ningún grupo de instancias se encontraba disponible o si otra entidad entregó la solicitud, verás uno de los siguientes valores en lugar de la región o la zona del grupo de instancias del servicio de backend.

  • FRONTEND_5XX: Se produjo un error interno antes de que GFE pudiera seleccionar un backend. GFE mostró "5XX" al cliente.
  • INVALID_BACKEND: GFE no pudo encontrar un backend en buen estado para asignarle la solicitud, por lo que mostró una respuesta "5XX" al solicitante.
  • NO_BACKEND_SELECTED: Se produjo un error o una interrupción antes de que se pudiera seleccionar un backend o se produzca un redireccionamiento de la URL.
  • MULTIPLE_BACKENDS: Varios potenciales backends entregaron la solicitud. Esto puede suceder cuando Cloud CDN entregó la solicitud de forma parcial desde su caché y también envió una o más solicitudes de rango de bytes al backend. Usa el desglose de backend_scope para visualizar cada solicitud de balanceador de cargas a backend.

Cuando se elige este desglose, los gráficos muestran las métricas de backend (balanceador de cargas a backends) y no las métricas de frontend (cliente a balanceador de cargas).
backend_type

El nombre del grupo de backend que entregó la solicitud del cliente. Puede ser INSTANCE GROUP, NETWORK_ENDPOINT_GROUP o se muestra UNKNOWN si no se asignó el backend. Si ningún grupo de backend se encontraba disponible o si otra entidad entregó la solicitud, se muestra uno de los siguientes valores en lugar de un grupo de backend.

  • FRONTEND_5XX: Se produjo un error interno antes de que GFE pudiera seleccionar un backend. GFE mostró "5XX" al cliente.
  • INVALID_BACKEND: GFE no pudo encontrar un backend en buen estado para asignarle la solicitud, por lo que mostró una respuesta "5XX" al solicitante.
  • NO_BACKEND_SELECTED: Se produjo un error o una interrupción antes de que se pudiera seleccionar el backend o se produzca un redireccionamiento de la URL.
  • MULTIPLE_BACKENDS: Varios potenciales backends entregaron la solicitud. Esto puede suceder cuando Cloud CDN entregó la solicitud de forma parcial desde su caché y también envió una o más solicitudes de rango de bytes al backend. Usa el desglose de backend_scope para visualizar cada solicitud de balanceador de cargas a backend.
backend_target_type El nombre del servicio de backend que entregó la solicitud. Puede ser BACKEND_SERVICE, BACKEND_BUCKET, UNKNOWN si no se asignó el backend, o NO_BACKEND_SELECTED si se produjo un error o alguna otra interrupción antes de que se pudiera seleccionar el backend o se produzca un redireccionamiento de la URL.
matched_url_path_rule La regla de ruta del mapa de URL que coincide con el prefijo de la solicitud HTTP(S) (hasta 50 caracteres).
forwarding_rule_name El nombre de la regla de reenvío que utiliza el cliente para enviar la solicitud.
url_map_name

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 url_map_name usa la regla de ruta de acceso predeterminada.
  • UNKNOWN indica un error interno.
target_proxy_name El nombre del objeto de proxy HTTP(S) de destino al que hace referencia la regla de reenvío.
backend_target_name El nombre del destino de backend. El destino puede ser un servicio de backend o un bucket de backend. Se muestra UNKNOWN si no se asignó un backend.
backend_name El nombre del grupo de instancias de backend, el bucket o NEG. Se muestra UNKNOWN si no se asignó el backend, o NO_BACKEND_SELECTED si se produjo otra interrupción o un error antes de que se pudiera seleccionar un backend o se produzca un redireccionamiento de la URL.
backend_scope_type

El tipo de permiso del grupo de backend. Puede ser GLOBAL, REGION, ZONE, MULTIPLE_BACKENDS o NO_BACKEND_SELECTED si se produjo un error o alguna otra interrupción antes de que se pudiera seleccionar un backend, se produzca un redireccionamiento de la URL o cualquier otro resultado posible de backend_type.

Se usa MULTIPLE_BACKENDS cuando se utiliza el almacenamiento en caché de fragmentos. Se envían varias consultas al mismo backend para diferentes fragmentos de datos para admitir una sola solicitud del cliente.

proxy_continent El continente de GFE HTTP(S) que finalizó la conexión HTTP(S). Ejemplos: America, Europe, Asia.
protocol El protocolo que usa el cliente, uno como HTTP/1.0, HTTP/1.1, HTTP/2.0, QUIC/HTTP/2.0 o UNKNOWN.
response_code El código de respuesta HTTP de la solicitud.
response_code_class La clase de código de respuesta HTTP de la solicitud: 200, 300, 400, 500 o 0 para ninguno.
cache_result Resultado de la caché para entregar la solicitud HTTP mediante el proxy: HIT, MISS, DISABLED, PARTIAL_HIT (para una solicitud entregada parcialmente desde la caché y parcialmente desde el backend) o UNKNOWN.
client_country País del cliente que emitió la solicitud HTTP (por ejemplo, United States o Germany)
load_balancing_scheme El esquema de balanceo de cargas usado. Si se usa el balanceador de cargas de aplicaciones clásico, el valor es EXTERNAL. Si se usa el balanceador de cargas de aplicaciones externo global, el valor es EXTERNAL_MANAGED.

¿Qué sigue?