ALB es compatible con el rastreo. Cuando se habilita esta función, ALB inyecta automáticamente encabezados de rastreo al reenviar solicitudes. Esto le permite obtener datos completos de rastreo de las solicitudes, como el origen, los nodos atravesados y el tiempo de respuesta. De este modo, puede localizar y resolver rápidamente los cuellos de botella de rendimiento en arquitecturas distribuidas.
Contexto
El análisis de rastreo proporciona a los desarrolladores de aplicaciones distribuidas herramientas como la reconstrucción completa de cadenas de llamadas, estadísticas de volumen de solicitudes, visualización de topologías y análisis de dependencias entre aplicaciones. Estas herramientas facilitan el diagnóstico rápido de los cuellos de botella de rendimiento en arquitecturas distribuidas.
Un registro de rastreo corresponde a una call chain (Trace). En términos generales, una cadena de llamadas representa la ruta de ejecución de una transacción o flujo de trabajo a través de un sistema distribuido. Se trata de un grafo acíclico dirigido (DAG) compuesto por varios spans, donde cada span representa un segmento continuo de ejecución con nombre y duración dentro de la cadena de llamadas.
Cuando se habilita el rastreo de ALB, este servicio inyecta o actualiza automáticamente los encabezados HTTP de rastreo al reenviar solicitudes y reporta los datos a Alibaba Cloud Managed Service for OpenTelemetry. El rastreo de ALB admite los métodos OpenTelemetry y Zipkin.
Métodos de rastreo
OpenTelemetry
Si el rastreo de ALB está habilitado y se selecciona el tipo OpenTelemetry, ALB agrega o actualiza el campo traceparent en el encabezado HTTP antes de reenviar una solicitud a un servidor de backend. El formato del campo traceparent es {version}-{traceid}-{parentid}-{traceflags}. A continuación se describe cada parte.
|
Campo |
Descripción |
Formato |
|
|
Versión de OpenTelemetry utilizada. |
Siempre |
|
|
Identificador de este rastreo. |
Número hexadecimal de 32 dígitos. |
|
|
Identificador del nodo actual en la cadena de rastreo. |
Número hexadecimal de 16 dígitos. |
|
|
Indica si la solicitud se muestrea. |
|
Escenario 1: la solicitud no incluye traceparent
Si el encabezado de la solicitud enviada por el cliente no incluye el campo traceparent, ALB genera un campo traceparent completo y lo inserta en el encabezado HTTP.
Escenario 2: la solicitud ya incluye traceparent
Si un servicio ascendente ya incluye el campo traceparent en el encabezado de la solicitud, ALB hereda los valores de version, traceid y traceflags, y solo genera un nuevo parentid.
A continuación se comparan los valores de los campos:
|
Parte |
Valor de la solicitud ascendente |
Valor reenviado por ALB |
Procesamiento |
|
|
|
|
Heredado |
|
|
|
|
Heredado |
|
|
|
|
Generado recientemente |
|
|
|
|
Heredado |
Zipkin
Si el rastreo de ALB está habilitado y se selecciona el tipo Zipkin, ALB agrega o actualiza los campos X-B3-* en el encabezado HTTP antes de reenviar una solicitud a un servidor de backend. En la siguiente tabla se describe cada campo.
|
Campo |
Descripción |
Formato |
|
|
Identificador de este rastreo. |
Número hexadecimal de 16 dígitos. |
|
|
Identificador del nodo actual en la cadena de rastreo. |
Número hexadecimal de 16 dígitos. |
|
|
Identificador del nodo anterior en la cadena de rastreo. |
Número hexadecimal de 16 dígitos. |
|
|
Indica si la solicitud se muestrea. |
|
Escenario 1: la solicitud no incluye encabezados de rastreo
Si el encabezado de la solicitud enviada por el cliente no incluye los campos X-B3-*, ALB actúa como nodo de origen de la cadena de rastreo. Genera los campos X-B3-TraceId, X-B3-SpanId y X-B3-Sampled, y los inserta en el encabezado HTTP. Como no existe un nodo ascendente en la cadena, la solicitud reenviada no contiene el campo X-B3-ParentSpanId.
Escenario 2: la solicitud ya incluye encabezados de rastreo
Si un servicio ascendente ya incluye los campos X-B3-* completos en el encabezado de la solicitud, ALB hereda los valores de X-B3-TraceId y X-B3-Sampled, genera un nuevo X-B3-SpanId y pasa el X-B3-SpanId de la solicitud ascendente al servidor de backend como X-B3-ParentSpanId.
A continuación se comparan los valores de los campos:
|
Campo |
Valor de la solicitud ascendente |
Valor reenviado por ALB |
Procesamiento |
|
|
|
|
Heredado |
|
|
|
|
Generado recientemente |
|
|
|
|
Utiliza el SpanId ascendente |
|
|
|
|
Heredado |
Ámbito de aplicación
Solo las instancias de ALB Standard Edition y WAF Enhanced Edition admiten el rastreo. Las instancias de ALB Basic Edition no son compatibles con esta función.
Cuenta con created an ALB instance y created a server group.
Cuenta con configured a listener para la instancia y lo asoció a un grupo de servidores.
-
Cuenta con created an ECS instance como servidor de backend, deployed the Nginx service en la instancia ECS y added the ECS instance to the server group.
Paso 1: habilitar el rastreo
Inicie sesión en la consola de ALB, seleccione la región donde se encuentra su instancia, busque la instancia de destino y haga clic en su identificador.
Haga clic en la pestaña Listener, busque el listener de destino y haga clic en su identificador.
En la sección Tracing de la pestaña Listener Details, active el interruptor Tracing.
-
En el cuadro de diálogo Enable Tracing, complete las siguientes configuraciones y haga clic en Save.
-
Activate Service
Activate Managed Service for OpenTelemetry: si es la primera vez que utiliza el servicio, seleccione el acuerdo de servicio para confirmar la activación.
-
Create Access Log (si aún no se creó para la instancia ALB de destino)
-
Project: unidad de gestión de recursos en Simple Log Service que se utiliza para aislar y controlar recursos.
Select Project: seleccione un proyecto existente en la lista desplegable.
Create Project: introduzca un nombre de proyecto en el campo correspondiente.
-
Logstore: unidad de Simple Log Service para recopilar, almacenar y consultar datos de registros.
Select Logstore: seleccione un logstore existente en la lista desplegable.
Create Logstore: introduzca un nombre de logstore en el campo correspondiente. Si selecciona Create Project, también debe seleccionar Create Logstore.
-
-
Enable Tracing Analysis
Tracing Analysis Protocol: puede seleccionar OpenTelemetry(W3C) o Zipkin(B3).
Sampling Rate: valores válidos de 1 a 100. Valor predeterminado: 100. Ajuste la tasa de muestreo para controlar el volumen de datos de rastreo reportados.
Notes on Creating Service-linked Role: cuando ejecuta esta operación, el sistema crea automáticamente un rol vinculado al servicio.
-
Paso 2: consultar los datos de rastreo
Inicie sesión en una terminal cliente y compruebe la conectividad con el servidor de backend. Para obtener más información, consulte Quickly implement IPv4 load balancing with ALB.
Inicie sesión en la consola de ALB, seleccione la región donde se encuentra su instancia, busque la instancia de destino y haga clic en su identificador.
Haga clic en la pestaña Listener, busque el listener de destino y haga clic en su identificador.
-
En la sección Tracing de la pestaña Listener Details, haga clic en View junto a Trace Analysis y acceda a la consola de Managed Service for OpenTelemetry para consultar trace data.
La barra de consulta en la parte superior de la página incluye automáticamente los filtros
attributes.app_lb_idyattributes.slb_vport. El panel de filtros rápidos de la izquierda le permite filtrar por estado, rango de duración y nombre de la aplicación.
Más información
Deshabilitar el rastreo
El rastreo depende de los registros de acceso. Si deshabilita los registros de acceso, el rastreo deja de estar disponible, por lo que debe proceder con precaución. Después de deshabilitar el rastreo, los registros de acceso permanecen habilitados. Si ya no los necesita, deshabilítelos manualmente.
Cuando se deshabilita el rastreo en todos los listeners de una instancia ALB, ALB deja de enviar datos de rastreo a Managed Service for OpenTelemetry.
Facturación
Al utilizar el rastreo, Alibaba Cloud activa automáticamente Managed Service for OpenTelemetry y el servicio access log. Tras la activación, se generan cargos por el reporte de datos, el almacenamiento de rastreo y los servicios de registros.
Regiones compatibles con el rastreo de ALB
Regiones de nube pública
|
Área |
Región |
|
China |
China (Hangzhou), China (Shanghai), China (Shenzhen), China (Chengdu), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Hong Kong), China (Guangzhou) y China (Heyuan) |
|
Asia-Pacífico |
Singapore, Malaysia (Kuala Lumpur), Japan (Tokyo), Indonesia (Jakarta) |
|
Europa y América |
UK (London), Germany (Frankfurt), US (Virginia) y US (Silicon Valley) |