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
En la consola de Google Cloud, ve a la página Balanceo de cargas.
Haz clic en el nombre de tu balanceador de cargas.
Haz clic en
Editar.Haga clic en Configuración de backend.
Selecciona Crear un servicio de backend.
Completa los campos de servicio de backend obligatorios.
En la sección Registro, selecciona la casilla de verificación Habilitar registro.
Configura una fracción de Tasa de muestreo. Puedes configurar un número de
0.0
a1.0
, en el que0.0
significa que no se registra ninguna solicitud, y1.0
significa que se registra el 100% de las solicitudes. El valor predeterminado es1.0
.Para terminar de editar el servicio de backend, haz clic en Actualizar.
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 entre0.0
y1.0
, en el que0.0
significa que no se registra ninguna solicitud, y1.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 en0.0
, es lo mismo que inhabilitarlo. El valor predeterminado es1.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 entre0.0
y1.0
, en el que0.0
significa que no se registra ninguna solicitud, y1.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 en0.0
, es lo mismo que inhabilitarlo. El valor predeterminado es1.0
.
Habilita el registro en un servicio de backend existente
Console
En la consola de Google Cloud, ve a la página Balanceo de cargas.
Haz clic en el nombre de tu balanceador de cargas.
Haz clic en
Editar.Haga clic en Configuración de backend.
Haz clic en
Editar junto al servicio de backend.En la sección Registro, selecciona la casilla de verificación Habilitar registro.
En el campo Tasa de muestreo, establece la probabilidad de muestreo. Puedes configurar un número de
0.0
a1.0
, en el que0.0
significa que no se registra ninguna solicitud, y1.0
significa que se registra el 100% de las solicitudes. El valor predeterminado es1.0
.Para terminar de editar el servicio de backend, haz clic en Actualizar.
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 entre0.0
y1.0
, en el que0.0
significa que no se registra ninguna solicitud, y1.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 en0.0
, es lo mismo que inhabilitarlo. El valor predeterminado es1.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 entre0.0
y1.0
, en el que0.0
significa que no se registra ninguna solicitud, y1.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 en0.0
, es lo mismo que inhabilitarlo. El valor predeterminado es1.0
.
Inhabilita o modifica el registro en un servicio de backend existente
Console
En la consola de Google Cloud, ve a la página Balanceo de cargas.
Haz clic en el nombre de tu balanceador de cargas.
Haz clic en
Editar.Haga clic en Configuración de backend.
Haz clic en
Editar junto al servicio de backend.Para inhabilitar el registro por completo, en la sección Registro, desmarca la casilla de verificación Habilitar registro.
Si dejas habilitado el registro, puedes configurar una fracción de Tasa de muestreo diferente. Puedes configurar un número de
0.0
a1.0
, en el que0.0
significa que no se registra ninguna solicitud, y1.0
significa que se registra el 100% de las solicitudes. El valor predeterminado es1.0
. Por ejemplo,0.2
significa que el 20% de las solicitudes muestreadas generan registros.Para terminar de editar el servicio de backend, haz clic en Actualizar.
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 entre0.0
y1.0
, en el que0.0
significa que no se registra ninguna solicitud, y1.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 en0.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:
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.
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 (
|
Opcional | La hora en que la primera capa de GFE recibe la solicitud. |
httpRequest | HttpRequest | Obligatorio | Un protocolo común para registrar solicitudes HTTP.
|
resource | MonitoredResource | Obligatorio | MonitoredResource es el tipo de recurso asociado con una entrada de registro. MonitoredResourceDescriptor describe el esquema de un objeto |
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:
|
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 WebSocket, haz lo siguiente:
|
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 ( 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 |
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
En la consola de Google Cloud, ve a la página Explorador de registros.
Haz clic en el botón de activar o desactivar Mostrar consulta.
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
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:
|
authz_info.policies[].result |
enum | El resultado puede ser ALLOWED o DENIED . |
authz_info.policies[].details |
string | Los detalles incluyen lo siguiente:
|
authz_info.overall_result |
enum | El resultado puede ser ALLOWED o DENIED . |
Registro para los buckets de backend
El registro está habilitado de forma automática para los balanceadores de cargas con buckets de backend. No puedes modificar ni inhabilitar el registro para los buckets de backend.
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
Además de los paneles predefinidos en Cloud Monitoring, puedes crear paneles personalizados, configurar alertas y consultar las métricas a través de la API de Cloud Monitoring.
Visualiza los paneles predefinidos de Cloud Monitoring
Cloud Monitoring proporciona paneles predefinidos para supervisar tus balanceadores de cargas. Cloud Monitoring propaga de forma automática estos paneles.
Realiza los siguientes pasos para acceder a los paneles predefinidos:
En la consola de Google Cloud, ve a Monitoring.
En el panel de navegación de Monitoring, haz clic en Paneles.
En Categorías, haz clic en GCP.
Para ver una lista de paneles de todos los balanceadores de cargas de Google Cloud, selecciona el panel llamado Balanceadores de cargas de Google Cloud. Para ver el panel de un balanceador de cargas específico, ubica el balanceador de cargas en la lista y haz clic en su nombre.
Para ver los paneles predefinidos solo de tus balanceador de cargas de aplicaciones, selecciona el panel llamado Balanceadores de cargas HTTP(S) externos. En esta página, se muestra un panel en el que aparecen las proporciones de respuesta 5XX y la latencia de backend para todos los balanceadores de cargas de aplicaciones externos en tu proyecto. También proporciona una lista de paneles para todos los balanceadores de cargas de aplicaciones externos en tu proyecto.
Puedes hacer clic en cada panel del balanceador de cargas. Cada panel incluye lo siguiente:- Grafos prepropagados que muestran desgloses para las respuestas según las clases de códigos de respuesta (5XX, 4XX, 3XX, 2XX)
- Latencia total
- Latencia de backend
- RTT de frontend
- Recuento de solicitudes
- Un vínculo a los registros del balanceador de cargas
Para ver los paneles de servicios de terceros, regresa a la página Paneles. En Categorías, haz clic en Otra.
- Para ver un panel de servicio de terceros específico, ubícalo en la lista y haz clic en su nombre.
Define las políticas de alertas
Para seguir la guía paso a paso en esta tarea directamente en la consola de Google Cloud, haz clic en Guiarme:
Puedes crear políticas de alertas para supervisar los valores de las métricas y recibir notificaciones cuando estas infrinjan una condición.
-
En la consola de Google Cloud, ve a la página notifications Alertas.
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Monitoring.
- Si aún no creas canales de notificaciones y deseas recibir notificaciones, haz clic en Edit Notification Channels y agrega tus canales de notificaciones. Regresa a la página Alertas después de agregar tus canales.
- En la página Alertas, elige Crear política.
- Para elegir la métrica, expande el menú Seleccionar una métrica y, luego, haz lo siguiente:
- Para limitar el menú a las entradas relevantes, ingresa
Global External Application Load Balancer Rule
en la barra de filtros. Si no hay resultados después de que filtres el menú, inhabilita el botón de activación Show only active resources & metrics. - Para el Tipo de recurso, selecciona Regla del balanceador de cargas de aplicaciones regional externo.
- Selecciona una Categoría de métrica y una Métrica. Luego, selecciona Aplicar.
- Para limitar el menú a las entradas relevantes, ingresa
- Haz clic en Siguiente.
- La configuración de la página Configure alert trigger determina cuándo se activa la alerta. Selecciona un tipo de condición y, si es necesario, especifica un umbral. Para obtener más información, consulta Crea políticas de alertas de límite de métrica.
- Haz clic en Siguiente.
- Para agregar notificaciones a tu política de alertas, haz clic en Canales de notificaciones (opcional). En el diálogo, elige uno o más canales de notificaciones del menú y, luego, haz clic en Aceptar.
- Opcional: Actualiza la Duración del cierre automático de incidentes. Este campo determina cuándo Monitoring cierra los incidentes ante la ausencia de datos de métricas.
- Opcional: Haz clic en Documentación y, luego, agrega la información que deseas incluir en un mensaje de notificación.
- Haz clic en Nombre de la alerta y, luego, ingresa un nombre para la política de alertas.
- Haz clic en Crear política.
Define los paneles personalizados de Cloud Monitoring
Puedes crear paneles personalizados de Cloud Monitoring para las métricas del balanceador de cargas:
En la consola de Google Cloud, ve a la página Monitoring.
Selecciona Paneles > Crear panel.
Haz clic en Agregar gráfico y, luego, asígnale un título.
Para identificar la serie temporal que se mostrará, elige un tipo de recurso y un tipo de métrica:
- En la sección Recursos y métricas, haz clic en el gráfico y, luego,
en la sección Seleccionar una métrica, elige una de las opciones disponibles:
- Para el balanceador de cargas de aplicaciones externo global, selecciona el tipo de recurso Regla de balanceador de cargas de aplicaciones externo global.
- Haz clic en Aplicar.
- En la sección Recursos y métricas, haz clic en el gráfico y, luego,
en la sección Seleccionar una métrica, elige una de las opciones disponibles:
Para especificar filtros de supervisión, haz clic en Filtros > Agregar filtro.
Haz clic en Guardar.
Frecuencia y retención de informes de métricas
Las métricas de los balanceadores de cargas de aplicaciones externos se exportan a Cloud Monitoring en lotes con un nivel de detalle de 1 minuto. Los datos de supervisión se conservan durante seis (6) semanas.
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 En el caso de 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:
|
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.
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
|
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
|
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 Se usa |
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 . |