Tracing
La pantalla Tracing proporciona datos de seguimiento con respecto a los servicios de la malla, a nivel del servicio o de una operación.
Puede seleccionar el cluster que desea operar en el campo Cluster:, situado en la esquina superior derecha de la pantalla. |
|
Seguimiento distribuido
Cuando una aplicación se compone de microservicios, una petición generalmente pasa por muchos servicios desde el momento en que ingresa a una malla hasta la conclusión de la llamada. Agregue a esto el hecho de que puede tener múltiples versiones implementadas de un servicio, ya sea como Canary Release o en prueba, y tenemos un gran sistema distribuido con múltiples puntos de falla.
En este caso, necesitamos un seguimiento también distribuido, capaz de mostrarnos la latencia en la comunicación entre los diferentes componentes de una malla y de identificar los sitios donde puede haber problemas. Cuando observamos la cadena de peticiones internas, podemos ver cómo una falla en el servicio A puede afectar al servicio B y, así, podemos tomar acciones para mejorar el desempeño de todo el sistema.
Cómo funciona
Pero, ¿cómo funciona efectivamente el seguimiento distribuido?
Nuestra solución de seguimiento se construyó sobre Jaeger y se basa en la especificación OpenTracing.
- En términos generales, así es como funciona:
-
Cuando el servicio A necesita llamar al servicio B, el sidecar del servicio A ingresa información de contexto al payload como encabezados HTTP y los envía al servicio B. A su vez, el servicio B reenvía estos encabezados — agregando su propia información de contexto — al servicio C y así sucesivamente. La información de seguimiento se almacena en una estructura de datos llamada span. El seguimiento de una llamada se compone de varios spans, cada uno de los cuales representa un acto de comunicación interna. Luego, cuando accede a un servicio en la pantalla Tracing, puede ver cada span que se generó cuando una petición pasó por ese servicio. Al unir los spans de una llamada (es decir, las diversas operaciones entre servicios internos), puede identificar todos los pasos y la latencia entre ellos, desde el principio hasta el final de una llamada.
Los proxies de Istio pueden propagar encabezados HTTP automáticamente. Sin embargo, para que la información de rastreo se genere de manera unificada, mostrando toda la ruta de una petición de un servicio a otro, las aplicaciones necesitan recibir y reenviar los encabezados. Vea más sobre esta configuración de Istio aquí.
Lista de llamadas y filtros de búsqueda
La pantalla Tracing muestra una lista de llamadas desde filtros de búsqueda:
Si elige una malla y un servicio, verá la lista de elementos de seguimiento. Estos elementos se refieren a las llamadas que han pasado por el servicio elegido en el período de tiempo considerado e incluirán los varios spans generados con la comunicación entre servicios.
Sin embargo, puede personalizar la lista devuelta basándose en otros campos:
-
Mesh: campo obligatorio.
-
Service: campo obligatorio.
-
Operations: puede seleccionar una operación específica. Si deja este campo en blanco, verá la información referente a todas las operaciones del servicio elegido.
-
Lookback: puede introducir aquí un periodo de tiempo específico para filtrar la información. Opciones: último minuto, últimos 5, 10 o 30 minutos, última hora, últimas 3 o 6 horas. El tiempo predeterminado, si no se elige ninguna opción, son las últimas 48 horas.
-
Tags: permite filtrar los elementos mediante tags asignados por Jaeger. Introduzca cada tag como un par
clave=valor
y pulse ENTER. Los valores que contienen espacios deben ir entre comillas. Ej.:error=true
,db.statement="select * from User"
,http.status_code=200
,http.method=GET
-
Min span duration: filtra los elementos por duración mínima de span (en milisegundos).
-
Max span duration: filtra los elementos por duración máxima de span (en milisegundos).
-
Limit: campo obligatorio para limitar la cantidad de artículos devueltos. De forma predeterminada, el campo contendrá el valor 20, pero puede modificarlo. Sin embargo, tenga en cuenta que un valor alto dará lugar a un mayor tiempo de carga.
La lista de elementos muestra la siguiente información (columnas):
-
RECEIVED AT: la fecha y hora en que se recibió la llamada;
-
OPERATION: si se ha seleccionado una operación en el campo de filtro correspondiente, esta columna lo indicará;
-
SPANS: la cantidad de spans que componen el seguimiento total;
-
SERVICES: los servicios involucrados en la llamada;
-
DURATION: la duración total del seguimiento (en milisegundos).
Por defecto, las llamadas aparecen en orden descendente según la fecha y hora de recepción (es decir, las llamadas más recientes aparecen al principio de la lista). Puede ordenarlas en orden ascendente/descendente según la fecha y hora de recepción haciendo clic en la cabecera de la columna RECEIVED AT o en orden ascendente/descendente según la duración total del seguimiento haciendo clic en la cabecera de la columna DURATION. |
Si hace clic en el icono en la columna OVERVIEW, será redirigido a la visualización de los spans de la llamada.
Visualización de spans
La pantalla para visualizar spans muestra dos secciones de información: datos básicos sobre el seguimiento y la línea de tiempo que contiene los spans que se refieren entre sí, contando la historia de la llamada.
Los datos básicos son:
-
Mesh: identifica la malla a la que pertenece el servicio.
-
Service: identifica el servicio que se ha seleccionado para filtrar las llamadas.
-
Operation: muestra la operación si se ha elegido en los campos de búsqueda.
-
Services: muestra la cantidad de servicios involucrados en la llamada en cuestión.
-
Total Spans: muestra el número total de spans que componen el rastreo de la llamada en su conjunto.
-
Trace Start: fecha y hora de inicio del seguimiento.
-
Duration: duración total del seguimiento.
La línea de tiempo muestra el tiempo total de seguimiento y se puede expandir para mostrar cada span, con su tiempo de duración y detalles.
Share your suggestions with us!
Click here and then [+ Submit idea]