Baggage
En OpenTelemetry, el Baggage es información contextual que viaja con el
contexto. El Baggage es un almacén de pares clave-valor, lo que significa que
te permite propagar cualquier dato que
desees junto con el contexto.
El Baggage te permite pasar datos a través de servicios y procesos,
permitiendo que se puedan añadir a trazas, métricas
o logs en esos servicios.
Ejemplo
El Baggage se usa a menudo en el trazado distribuido para propagar datos
adicionales entre servicios.
Por ejemplo, imagina que tienes un clientId al inicio de una petición, pero te
gustaría que ese ID estuviera disponible en todos los spans de una traza, en
algunas métricas en otro servicio y en algunos logs a lo largo del camino.
Debido a que la traza puede abarcar múltiples servicios, necesitas alguna forma
de propagar esos datos sin necesidad de copiar el clientId en diversos lugares
de tu código.
Al usar la propagación de contexto para pasar
el Baggage a través de estos servicios, el clientId queda disponible para
que se añada a cualquier span, métrica o log adicionales. Además, las
instrumentaciones se encargan de propagar automáticamente el Baggage por ti.
¿Para qué debes usar el Baggage de OTel?
El Baggage se usa típicamente para incluir información que sólo está
disponible al inicio de una solicitud en los servicios posteriores. Por ejemplo,
se pueden incluir la Identificación de la Cuenta, el ID del Usuario, el ID del
Producto o la IP de origen.
Propagar esta información usando Baggage permite un análisis más profundo de
la telemetría en un backend. Por ejemplo, si incluyes información como un ID de
Usuario en un span que rastrea una llamada a una base de datos, puedes responder
con mucha más facilidad a preguntas como: “¿qué usuarios están experimentando
más lentitud en las llamadas a la base de datos?”. También puedes registrar
información sobre una operación posterior adjuntando ese mismo ID de Usuario a
los logs.
Consideraciones de seguridad del Baggage
Los elementos sensibles del Baggage pueden compartirse con recursos no
deseados, como APIs de terceros. Esto se debe a que la instrumentación
automática incluye el Baggage en la mayoría de las solicitudes de red de tu
servicio. Específicamente, el Baggage y otras partes del contexto de traza se
envían en encabezados HTTP, haciéndolos visibles para cualquiera que esté
inspeccionando tu tráfico de red. Si el tráfico está restringido dentro de tu
red, este riesgo podría no aplicarse, pero ten en cuenta que los servicios
posteriores podrían propagar el Baggage fuera de tu red.
Además, no hay verificaciones de integridad embedidas que permitan asegurar que
los elementos del Baggage son tuyos, así que ten precaución al leerlos.
El Baggage no es equivalente a los atributos
Es importante notar que el Baggage es un almacén separado de pares clave-valor
y, si no se añade explícitamente, no se asocia junto con los atributos a spans,
métricas o logs.
Para añadir Baggage a los atributos, debes leer explícitamente los datos del
Baggage y añadirlos como atributos a tus spans, métricas o logs.
Dado que uno de los casos de uso comunes del Baggage es añadir datos a los
Atributos de Span a lo largo de toda una traza, varios
lenguajes tienen Baggage Span Processors que añaden datos del Baggage como
atributos al crear el span.
Para más información, consulta la especificación del
Baggage.
Comentarios
¿Fue útil esta página?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!