En este documento, se explica cómo configurar el seguimiento distribuido para los balanceadores de cargas de aplicaciones con Cloud Trace. Creas una política de telemetría que se orienta a la regla de reenvío de tu balanceador de cargas y, luego, ves los seguimientos resultantes en Cloud Trace.
En los ejemplos de este documento, se usa una aplicación de comercio electrónico que tiene la siguiente arquitectura:
- Un balanceador de cargas de aplicaciones externo global que recibe el tráfico de los clientes para una tienda web.
- Un balanceador de cargas de aplicaciones interno regional que enruta las solicitudes de confirmación de la compra desde la tienda hasta los servicios internos de carrito, inventario y pago.
Para obtener información sobre cómo funciona el seguimiento distribuido, incluidos los modos de muestreo y el manejo de encabezados de contexto de seguimiento, consulta Descripción general del seguimiento distribuido.
Antes de comenzar
Habilita la API de Cloud Trace y la API de Network Services en tu proyecto:
gcloud services enable \ cloudtrace.googleapis.com \ networkservices.googleapis.comAsegúrate de tener implementado un balanceador de cargas compatible. Para obtener más información, consulta lo siguiente:
Toma nota del nombre y el alcance de la regla de reenvío de tu balanceador de cargas. El permiso de la regla de reenvío depende del tipo de balanceador de cargas:
- Regla de reenvío global: Se usa en los balanceadores de cargas de aplicaciones externos globales y en los balanceadores de cargas de aplicaciones internos entre regiones.
- Regla de reenvío regional: la usan los balanceadores de cargas de aplicaciones externos regionales y los balanceadores de cargas de aplicaciones internos regionales.
Para enumerar las reglas de reenvío en tu proyecto, usa el comando
gcloud compute forwarding-rules list:gcloud compute forwarding-rules list
Roles obligatorios
Para obtener los permisos que necesitas para configurar las políticas de telemetría y ver los seguimientos, pídele a tu administrador que te otorgue los siguientes roles de Identity and Access Management (IAM) en tu proyecto:
- Para crear, actualizar o borrar políticas de telemetría:
Administrador de red de Compute
(
roles/compute.networkAdmin) o Administrador de Compute (roles/compute.admin) - Para ver seguimientos en la consola de Google Cloud :
Usuario de Cloud Trace
(
roles/cloudtrace.user)
Para permitir que el balanceador de cargas escriba intervalos de seguimiento en Cloud Trace, otorga el
rol de agente de Cloud Trace
(roles/cloudtrace.agent) en tu proyecto a las siguientes cuentas de servicio:
- Agente de servicio de Compute Engine:
service-PROJECT_NUMBER@compute-system.iam.gserviceaccount.com - Agente de servicio de seguridad de redes:
service-PROJECT_NUMBER@gcp-sa-networksecurity.iam.gserviceaccount.com - Las cuentas de servicio de tus cargas de trabajo de backend, si tus backends exportan sus propios intervalos a Cloud Trace. Sin este rol, Cloud Trace solo muestra el intervalo del balanceador de cargas, y el seguimiento no contiene intervalos de backend.
Reemplaza PROJECT_NUMBER por el número
del proyecto deGoogle Cloud .
Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso a proyectos, carpetas y organizaciones.
Configuración de la política de telemetría
Define una política de telemetría en un archivo YAML que use el siguiente formato:
name: "projects/PROJECT_ID/locations/LOCATION/telemetryPolicies/POLICY_NAME"
displayName: "DISPLAY_NAME"
telemetryTarget:
resources:
- "FORWARDING_RULE_URI"
tracingConfiguration:
samplingRate: SAMPLING_RATE
parentBasedSampling:
enabled: ENABLE_PARENT_BASED_SAMPLING
samplingRate: PARENT_BASED_SAMPLING_RATE
En la siguiente tabla, se describen los campos de una política de telemetría:
| Campo | Descripción |
|---|---|
name |
Es el nombre del recurso de la política de telemetría. Reemplaza lo siguiente:
|
displayName |
Es opcional. Un nombre legible por humanos
(DISPLAY_NAME) para la política de telemetría. |
telemetryTarget.resources |
Es una lista de los nombres de recursos completos
(
|
tracingConfiguration.samplingRate |
Es la proporción de solicitudes que se deben rastrear
(SAMPLING_RATE), especificada como un valor de
0.0 (0%) a 1.0 (100%). Por ejemplo,
0.01 toma muestras del 1% de las solicitudes. El valor predeterminado es
0.0. |
tracingConfiguration.parentBasedSampling.enabled |
Es opcional. Si el balanceador de cargas respeta la marca de muestreo en el
encabezado traceparent de W3C entrante
(ENABLE_PARENT_BASED_SAMPLING) es true
o false. El valor predeterminado es false. Solo se admite
en balanceadores de cargas de aplicaciones internos. |
tracingConfiguration.parentBasedSampling.samplingRate |
Es opcional. Es la proporción de solicitudes de muestreo ascendente para realizar un seguimiento
(PARENT_BASED_SAMPLING_RATE),
especificada como un valor de 0.0 a 1.0. Por
ejemplo, 1.0 realiza un seguimiento de todas las solicitudes que un cliente o
servicio upstream ya muestreó. |
Configura el seguimiento para un balanceador de cargas externo
En este ejemplo, se configura el muestreo probabilístico en la regla de reenvío de un
balanceador de cargas de aplicaciones externo global para una tienda de comercio electrónico. Una tasa de muestreo de 0.01
realiza un seguimiento del 1% de las solicitudes, lo que captura la latencia y los errores perimetrales, a la vez que mantiene
predecibles los costos de transferencia de Cloud Trace durante el tráfico alto.
Crea un archivo YAML llamado
storefront-tracing-policy.yaml:cat <<EOF > storefront-tracing-policy.yaml name: "projects/PROJECT_ID/locations/global/telemetryPolicies/storefront-tracing-policy" displayName: "Tracing policy for the storefront load balancer" telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/FORWARDING_RULE_NAME" tracingConfiguration: samplingRate: 0.01 EOFReemplaza lo siguiente:
PROJECT_ID: Es el ID de tu proyecto deGoogle Cloud .FORWARDING_RULE_NAME: el nombre de la regla de reenvío global de tu balanceador de cargas
Para un balanceador de cargas de aplicaciones externo regional, reemplaza
globalen el nombre de la política por la región de la regla de reenvío y usa el formato de regla de reenvío regional.Importa la política de telemetría con el comando
gcloud beta network-services telemetry-policies import:gcloud beta network-services telemetry-policies import storefront-tracing-policy \ --source=storefront-tracing-policy.yaml \ --location=global
Configura el seguimiento para un balanceador de cargas interno
En este ejemplo, se configura un balanceador de cargas de aplicaciones interno regional para los servicios de pago y confirmación de la compra internos. La política usa la siguiente configuración de muestreo:
- Una
samplingRatede referencia del0.01(1%) para las solicitudes que no tienen una decisión de muestreo ascendente. - Muestreo basado en el elemento superior con un
samplingRatede1.0(100%), de modo que cada solicitud de confirmación de la compra que ya se muestreó en la tienda o por cualquier servicio ascendente se rastree en el balanceador de cargas interno.
Para configurar la política, haz lo siguiente:
Crea un archivo YAML llamado
checkout-tracing-policy.yaml:cat <<EOF > checkout-tracing-policy.yaml name: "projects/PROJECT_ID/locations/REGION/telemetryPolicies/checkout-tracing-policy" displayName: "Tracing policy for the internal checkout load balancer" telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/regions/REGION/forwardingRules/FORWARDING_RULE_NAME" tracingConfiguration: samplingRate: 0.01 parentBasedSampling: enabled: true samplingRate: 1.0 EOFReemplaza lo siguiente:
PROJECT_ID: Es el ID de tu proyecto deGoogle Cloud .REGION: Es la región de la regla de reenvío, comous-central1.FORWARDING_RULE_NAME: el nombre de la regla de reenvío regional de tu balanceador de cargas
Para un balanceador de cargas de aplicaciones interno entre regiones, usa
globalcomo la ubicación en el nombre de la política y el formato de regla de reenvío global.Importa la política de telemetría:
gcloud beta network-services telemetry-policies import checkout-tracing-policy \ --source=checkout-tracing-policy.yaml \ --location=REGION
Verifica la política de telemetría
Para verificar que la política de telemetría exista y se oriente a las reglas de reenvío
correctas, usa el
comando
gcloud beta network-services telemetry-policies describe:
gcloud beta network-services telemetry-policies describe POLICY_NAME \
--location=LOCATION
Reemplaza lo siguiente:
POLICY_NAME: Es el nombre de la política de telemetría.LOCATION:globalo la región de la política de telemetría
Para enumerar todas las políticas de telemetría en una ubicación, usa el
comando
gcloud beta network-services telemetry-policies list:
gcloud beta network-services telemetry-policies list \
--location=LOCATION
Actualiza una política de telemetría
Para cambiar la configuración de muestreo o aplicar la misma política a reglas de reenvío adicionales, haz lo siguiente:
Edita el archivo YAML de la política. Por ejemplo, para aplicar la política de Storefront a varias reglas de reenvío globales, agrega cada regla de reenvío a la lista
telemetryTarget.resources:telemetryTarget: resources: - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/storefront-https-fr" - "//compute.googleapis.com/projects/PROJECT_ID/global/forwardingRules/cart-https-fr"Importa la política actualizada:
gcloud beta network-services telemetry-policies import POLICY_NAME \ --source=POLICY_FILE \ --location=LOCATIONReemplaza
POLICY_FILEpor la ruta de acceso al archivo YAML de la política.
Ver seguimientos
Después de configurar el seguimiento y enviar tráfico a través del balanceador de cargas, consulta los seguimientos en la consola de Google Cloud :
En la consola de Google Cloud , ve a la página Explorador de seguimiento.
Seleccionar tu Google Cloud proyecto.
En el campo Filtro, ingresa un filtro para encontrar los seguimientos que deseas inspeccionar. Por ejemplo, el ID del atributo o el umbral de latencia.
De manera opcional, para explorar un seguimiento específico, ve a la barra de herramientas, haz clic en ID de seguimiento y, luego, ingresa el ID de seguimiento.
Haz clic en un seguimiento para ver sus intervalos en las vistas de cronograma y gráfico.
Inspecciona el intervalo del balanceador de cargas para ver detalles, como la duración total y el backend que entregó la solicitud.
Para obtener más información sobre el uso del Explorador de seguimiento, consulta Busca y explora seguimientos.
Correlaciona los seguimientos con los registros y las métricas
Puedes correlacionar los intervalos de seguimiento del balanceador de cargas con los registros y las métricas de solicitudes para aislar el origen de la latencia o los errores.
Correlaciona seguimientos con registros
Si habilitas el registro
en tu servicio de backend, el balanceador de cargas agrega un campo trace a cada entrada de registro
de solicitud para una solicitud de muestra. El campo usa el siguiente formato:
projects/PROJECT_ID/traces/TRACE_ID
Visualiza un seguimiento desde una entrada de registro del balanceador de cargas
En la consola de Google Cloud , accede a la página Explorador de registros.
Expande una entrada de registro del balanceador de cargas.
En el resumen de la entrada de registro, haz clic en el ícono de seguimiento.
Selecciona Ver detalles de seguimiento.
El seguimiento se abre en la página Explorador de seguimiento.
Visualiza los registros del balanceador de cargas desde un seguimiento
En la consola de Google Cloud , ve a la página Explorador de seguimiento.
Haz clic en un seguimiento para abrir el panel Detalles.
Haz clic en View Logs (Ver registros).
Aparecerán las entradas de registro del balanceador de cargas para la solicitud.
Correlaciona los seguimientos con las métricas
Compara los picos de latencia en las métricas del balanceador de cargas con los desgloses de intervalos de seguimiento para determinar si la latencia se origina en el balanceador de cargas o en el backend. Puedes ver y consultar estas métricas en el Explorador de métricas en Cloud Monitoring. Usa las siguientes métricas:
- Balanceador de cargas de aplicaciones externo global:
loadbalancing.googleapis.com/https/total_latenciesyloadbalancing.googleapis.com/https/backend_latencies - Balanceador de cargas de aplicaciones externo regional:
loadbalancing.googleapis.com/https/external/regional/total_latencies - Balanceador de cargas de aplicaciones interno:
loadbalancing.googleapis.com/https/internal/total_latencies
Inhabilita el seguimiento
Para dejar de realizar un seguimiento de las solicitudes de un balanceador de cargas, haz lo siguiente:
- Quita la regla de reenvío de la lista
telemetryTarget.resourcesde la política y, luego, importa la política actualizada. Borra la política de telemetría con el comando
gcloud beta network-services telemetry-policies delete:gcloud beta network-services telemetry-policies delete POLICY_NAME \ --location=LOCATION
Prácticas recomendadas
Ten en cuenta las siguientes prácticas recomendadas cuando configures el seguimiento distribuido:
- Ajusta las tasas de muestreo para tu volumen de tráfico: En el caso de las cargas de trabajo de producción con mucho tráfico, usa un
samplingRatede0.01(1%) o0.001(0.1%) para equilibrar la observabilidad con los costos de transferencia de Cloud Trace. - Usa el muestreo basado en el elemento superior para arquitecturas de varios niveles: En los balanceadores de cargas de aplicaciones internos, habilita el muestreo basado en el elemento superior para que las solicitudes muestreadas upstream se rastreen en cada salto interno.
- Instrumenta tus backends: Usa un SDK de OpenTelemetry con el propagador de contexto de seguimiento de W3C en tus servicios de backend para que los intervalos de backend se unan al seguimiento que inicia el balanceador de cargas.
Solucionar problemas
En esta sección, se describen los problemas comunes y sus soluciones.
Los seguimientos no aparecen en Cloud Trace
Si los seguimientos no aparecen en Cloud Trace, haz lo siguiente:
Asegúrate de que la API de Cloud Trace esté habilitada en tu proyecto:
gcloud services enable cloudtrace.googleapis.com \ --project=PROJECT_IDVerifica que el rol de agente de Cloud Trace (
roles/cloudtrace.agent) se otorgue a las cuentas de servicio que se indican en Roles obligatorios.Verifica que la política de telemetría exista en la ubicación correcta y que esté orientada a la regla de reenvío correcta. Para obtener más información, consulta Verifica la política de telemetría.
Verifica el
samplingRateconfigurado. Si el volumen de tráfico o la tasa de muestreo son bajos, es posible que el balanceador de cargas no capture los seguimientos de inmediato. Para confirmar que el seguimiento funciona, configura temporalmentesamplingRatecomo1.0y, luego, restablece tu tasa de producción cuando termines de realizar las pruebas.
Los intervalos de seguimiento están desconectados o incompletos
Si los intervalos del balanceador de cargas aparecen como seguimientos raíz independientes en lugar de como parte de los seguimientos de tu aplicación, haz lo siguiente:
En el caso de los balanceadores de cargas de aplicaciones internos, verifica que el muestreo basado en el elemento superior esté habilitado (
parentBasedSampling.enabled: true) en la política de telemetría.Verifica que las cuentas de servicio de tus cargas de trabajo de cliente y de backend tengan el rol de agente de Cloud Trace (
roles/cloudtrace.agent) para que sus intervalos se puedan exportar a Cloud Trace.Verifica que tus aplicaciones usen un SDK de OpenTelemetry con la propagación del contexto de seguimiento de W3C habilitada, de modo que el encabezado
traceparentse propague entre los límites del servicio. Para obtener más información, consulta la documentación de propagación de contexto de OpenTelemetry.
¿Qué sigue?
- Descripción general del seguimiento distribuido
- Busca y explora seguimientos
- Registro y supervisión del balanceador de cargas de aplicaciones externo global
- Registro y supervisión del balanceador de cargas de aplicaciones externo regional
- Registro y supervisión del balanceador de cargas de aplicaciones interno