Container Service for Kubernetes (ACK) ofrece una función de rastreo que permite enviar trazas desde el componente NGINX Ingress Controller de su clúster ACK hacia Managed Service for OpenTelemetry. Managed Service for OpenTelemetry
Requisitos previos
Ha activado Managed Service for OpenTelemetry and granted the required permissions.
El controlador NGINX Ingress está instalado. Para obtener más información, consulte Manage the NGINX Ingress controller.
Compatibilidad de versiones
La compatibilidad con el rastreo varía según la versión del componente NGINX Ingress controller, por lo que debe seleccionar el método de configuración adecuado para su versión.
|
Versión del controlador NGINX Ingress |
OpenTelemetry |
OpenTracing |
|
≥ v1.10.2-aliyun.1 |
Compatible |
No compatible |
|
v1.9.3-aliyun.1 |
Compatible |
Compatible |
|
v1.8.2-aliyun.1 |
Compatible |
Compatible |
|
< v1.8.2-aliyun.1 |
No compatible |
Compatible |
Procedimiento
OpenTelemetry
Paso 1: Obtener la información del endpoint
Inicie sesión en la consola de ARMS. En el panel de navegación izquierdo, haga clic en Integration Center.
En el área Server-side Applications, haga clic en la tarjeta OpenTelemetry.
En el panel OpenTelemetry que aparece, seleccione la región donde desea reportar los datos.
-
Registre la información del endpoint. En la sección Parameters, establezca Connection Method en Alibaba Cloud Intranet y Report Method en gRPC. Luego, en la sección Endpoint Information, copie la dirección del endpoint gRPC (por ejemplo,
http://tracing-analysis-dc-hz-internal.aliyuncs.com:8090) y el token de autenticación.NotaUtilice el endpoint de red VPC si su NGINX Ingress Controller está desplegado en la misma región de Alibaba Cloud que Managed Service for OpenTelemetry. De lo contrario, utilice el endpoint público.
Paso 2: Habilitar OpenTelemetry en NGINX Ingress ControllerManaged Service for OpenTelemetry
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en .
En la página Deployments, establezca el Namespace en kube-system. Busque el despliegue
nginx-ingress-controllery haga clic en Edit en la columna Actions.-
En la página Edit, seleccione el contenedor nginx-ingress-controller. En la pestaña Environment Variable, haga clic en Add para agregar la siguiente variable de entorno.
Type
Variable name
Value
Descripción
Custom
OTEL_EXPORTER_OTLP_HEADERS
authentication=<authentication token>Utilice el token de autenticación que obtuvo en Step 1: Obtain endpoint information. Ejemplo:
authentication=bfXXXXXXXe@7bXXXXXXX1_bXXXXXe@XXXXXXX1.Una vez completada la adición, haga clic en Update en el lado derecho de la página Edit y, a continuación, haga clic en OK en el cuadro de diálogo que aparece.
En el panel de navegación izquierdo, elija Configuration > ConfigMaps.
En la página ConfigMaps, establezca el Namespace en kube-system. Busque el ConfigMap
nginx-configurationy haga clic en Edit en la columna Actions.-
En el panel Edit, haga clic en Add para agregar los siguientes pares clave-valor y, a continuación, haga clic en OK.
Parámetro
Descripción
Valor
Ejemplo
enable-opentelemetry
Especifica si se habilita el rastreo de OpenTelemetry.
-
true: Habilita el rastreo.
-
false: Deshabilita el rastreo.
truemain-snippet
-
env OTEL_EXPORTER_OTLP_HEADERS;env OTEL_EXPORTER_OTLP_HEADERS;otel-service-name
El nombre del servicio.
Un nombre personalizado.
nginx-ingress
otlp-collector-host
El nombre de dominio del endpoint de reporte gRPC.
Utilice el endpoint de red VPC que obtuvo en Step 1: Obtain endpoint information. Elimine el prefijo
http://y el número de puerto. Ejemplo:tracing-analysis-XX-XX-XXXXX.aliyuncs.com.tracing-analysis-XX-XX-XXXXX.aliyuncs.comotlp-collector-port
El puerto del endpoint de reporte gRPC.
El número de puerto real.
8090opentelemetry-trust-incoming-span
Especifica si se confía en las trazas entrantes de otros servicios o sistemas.
-
true: Confía en las trazas entrantes.
-
false: No confía en las trazas entrantes.
trueopentelemetry-operation-name
El formato del span de la traza.
HTTP $request_method $service_name $uriHTTP $request_method $service_name $uriotel-sampler
La regla de muestreo.
Para obtener más información, consulte la documentación de NGINX Ingress Controller.
TraceIdRatioBased
otel-sampler-ratio
La tasa de muestreo.
Un valor de 0.0 a 1.0, con hasta dos decimales. Un valor de 0.0 deshabilita el muestreo, mientras que 1.0 muestrea cada traza.
Para obtener más información, consulte la documentación de NGINX Ingress Controller.
0.1
otel-sampler-parent-based
Especifica si se hereda la decisión de muestreo del servicio ascendente.
-
false: (Predeterminado) No hereda la decisión de muestreo ascendente. Los parámetros
otel-sampleryotel-sampler-ratiosurten efecto. -
true: Hereda y reutiliza la decisión de muestreo ascendente. Los parámetros
otel-sampleryotel-sampler-rationo surten efecto.
Para obtener más información, consulte la documentación de NGINX Ingress Controller.
false
-
Paso 3: Consultar las trazas en la consola de ARMS
Inicie sesión en la consola de ARMS. En el panel de navegación izquierdo, elija .
En la página Application List, seleccione una región en la lista desplegable de la parte superior. A continuación, haga clic en el nombre de la aplicación nginx-ingress.
-
Explore la información de las trazas en la página de detalles de la aplicación.
En la pestaña Application Overview, consulte métricas como el número de solicitudes y errores.

En la pestaña Trace Explorer, puede consultar gráficos sobre el número de llamadas, errores y duración en la parte superior de la página. Debajo de los gráficos, se muestra una lista de trazas con columnas como TraceId, nombre del span, nombre de la aplicación, Duration y Status (por ejemplo,
200o404).En la lista de trazas de la pestaña Trace Explorer, haga clic en un TraceId para abrir su página de detalles. Esta página muestra una vista de línea de tiempo e información detallada de cada span, incluido el nombre de la aplicación (por ejemplo, nginx-ingress), el nombre de la operación (por ejemplo, HTTP GET my-nginx-svc /), las horas de inicio y fin, y la duración. La pestaña Attributes muestra atributos HTTP como
http.method,http.status_code,http.hostyhttp.user_agent, así como información de red comonet.host.port.
OpenTracing
Paso 1: Obtener la información del endpoint
Inicie sesión en la consola de ARMS. En el panel de navegación izquierdo, haga clic en Integration Center.
-
En el área Server-side Applications, haga clic en la tarjeta Zipkin.
NotaEste ejemplo utiliza Zipkin.
En el panel Zipkin que aparece, seleccione la región donde desea reportar los datos.
-
Registre la información del endpoint. Para Connection Method, seleccione Alibaba Cloud Intranet. La página muestra dos URL de endpoints de red VPC: un v2 endpoint y un v1 endpoint. Copie la URL del v1 endpoint para usarla más adelante.
NotaUtilice el endpoint de red VPC si su NGINX Ingress Controller está desplegado en la misma región de Alibaba Cloud que Managed Service for OpenTelemetry. De lo contrario, utilice el endpoint público.
Paso 2: Habilitar OpenTracing en NGINX Ingress ControllerManaged Service for OpenTelemetry
Inicie sesión en la consola de ACK. En el panel de navegación izquierdo, haga clic en Clusters.
En la página Clusters, haga clic en el nombre de su clúster. En el panel de navegación izquierdo, haga clic en .
En la página ConfigMaps, establezca el Namespace en kube-system. Busque el ConfigMap
nginx-configurationy haga clic en Actions en la columna Edit.-
En el panel Edit, haga clic en Add para agregar los siguientes pares clave-valor y, a continuación, haga clic en OK.
Parámetro
Descripción
Valor
Ejemplo
enable-opentracing
Especifica si se habilita el rastreo.
-
true: Habilita el rastreo.
-
false: Deshabilita el rastreo.
true
zipkin-service-name
El nombre del servicio.
Un nombre personalizado.
nginx-ingress
zipkin-collector-host
El nombre de dominio del endpoint de reporte.
Modifique la URL del endpoint que obtuvo en Step 1: Obtain endpoint information. Elimine el prefijo
http://y agregue un signo de interrogación (?) al final. Por ejemplo:-
Endpoint original:
http://tracing-analysis-dc-hz-internal.aliyuncs.com/adapt__/api/v1/spans. -
Valor modificado:
tracing-analysis-dc-hz-internal.aliyuncs.com/adapt__/api/v1/spans?.
tracing-analysis-dc-hz-internal.aliyuncs.com/adapt__/api/v1/spans?opentracing-trust-incoming-span
Especifica si se confía en las trazas entrantes de otros servicios o sistemas.
-
true: Confía en las trazas entrantes.
-
false: No confía en las trazas entrantes.
true
zipkin-sample-rate
La tasa de muestreo.
Un valor de 0 a 1, con hasta dos decimales. Un valor de 0 significa que no hay muestreo, y 1 significa que se muestrean todos los datos.
0.1
-
Paso 3: Consultar las trazas en la consola de ARMS
Inicie sesión en la consola de ARMS. En el panel de navegación izquierdo, haga clic en .
En la página Application List, seleccione una región en la lista desplegable de la parte superior. A continuación, haga clic en el nombre de la aplicación nginx.
-
En el panel de navegación izquierdo de la página de detalles de la aplicación, haga clic en Interface Invocation.
La pestaña Overview muestra la topología del servicio y las relaciones de llamadas de la aplicación actual. Otras pestañas disponibles incluyen Upstream, Downstream y Traces.
La pestaña Traces enumera hasta 100 de las trazas de mayor duración de la aplicación. Para obtener más información sobre los datos de las trazas, consulte Interface Invocation. La tabla incluye columnas como Time, span name, Host/IP, Duration, Status, TraceId y Actions. Puede filtrar los resultados por Duration greater than y Exception.
En la pestaña Traces, haga clic en un TraceId para ver los detalles de la traza. La página Trace Details muestra el TraceId, la hora de inicio y la duración total. También presenta un gráfico de cascada que visualiza la jerarquía y la duración relativa de cada span. Por ejemplo, una solicitud a
/api/currencypodría pasar por servicios comonginx-otlp,frontendproxy,frontendycurrencyservice, con una duración total aproximada de 15 ms. Cada span se representa mediante una barra horizontal que indica su duración en relación con la traza completa.
(Opcional) Cambiar el propagador de OpenTelemetry
De forma predeterminada, al utilizar OpenTelemetry method, el NGINX Ingress Controller propaga el contexto de la traza en formato W3C Trace Context. Si sus aplicaciones frontend y backend utilizan otros formatos de contexto, como B3 (usado por Zipkin) o Jaeger, debe cambiar el propagador para garantizar que las trazas se vinculen correctamente en todos los servicios. Esta sección describe cómo cambiar el propagador para el NGINX Ingress Controller.
-
Agregue la variable de entorno
OTEL_PROPAGATORSmediante el mismo método descrito en Step 2.4 of the OpenTelemetry procedure. A continuación, guarde la configuración y vuelva a desplegar elnginx-ingress-controller.Environment variable
Value
Descripción
OTEL_PROPAGATORS
tracecontext,baggage,b3,jaeger
Una lista separada por comas de los propagadores que se deben utilizar. Para obtener más información, consulte Specify the format of propagation headers for OpenTelemetry.
-
A continuación, modifique la configuración de
main-snippetcomo se describe en Step 2.7 of the OpenTelemetry procedure para aplicar la variable de entornoOTEL_PROPAGATORS.Parámetro
Valor
Descripción
main-snippet
env OTEL_EXPORTER_OTLP_HEADERS; env OTEL_PROPAGATORS;
Carga las variables de entorno.
Referencias
Para obtener más información sobre Managed Service for OpenTelemetry, consulte What is Managed Service for OpenTelemetry?.
Para obtener más información sobre ACK, consulte What is Container Service for Kubernetes (ACK)?.
Las claves requeridas en el ConfigMap
nginx-configurationvarían según la herramienta de rastreo utilizada (por ejemplo, Zipkin, Jaeger o SkyWalking). Para obtener más información sobre cómo conectarse a Managed Service for OpenTelemetry, consulte Preparations.