OpenTelemetry dall'interno: Componenti e Funzionamento

Alessandro Mengoli

WIP

OpenTelemetry è un framework open source progettato per standardizzare la raccolta e la gestione dei dati telemetrici in maniera vendor-neutral. In particolare nasce per l’instrumentazione, generazione, collezionamento ed esportazione di dati di telemetria. I dati di telemetria sono chiamati signals e ne fanno parte: tracce, metriche e log. Nella sezione apposita vedremo nel dettaglio cosa sono e gli altri tipi di signali.

Architettura

Signals

I Signals in OpenTelemetry sono unità fondamentali di telemetria che forniscono informazioni sullo stato e il comportamento di un sistema software e sistema operativo. Rappresentano diversi tipi di dati osservabili che possono essere raccolti, processati e analizzati per comprendere il funzionamento delle applicazioni.

Tracce

Metriche

Log

Baggage

Il Baggage è documentato in OpenTelemetry insieme ai segnali, ma non è un vero e proprio segnale. Si tratta di un meccanismo per immagazzinare coppie chiave-valore che vengono propagate tra servizi e processi, fornendo contesto aggiuntivo utile per traces, metriche e log.

Per comprendere il funzionamento del Baggage, immaginiamo un esempio: Supponiamo di avere un servizio Ordini e un servizio Magazzino. Nel servizio Ordini, una chiamata API come /orders/{Id} genera un trace con un Parent Span e, se necessario, dei Child Span. Durante questa operazione, il servizio Ordini effettua una chiamata al servizio Magazzino. Se nel servizio Magazzino servono informazioni di contesto per l’osservabilità, come ClientId, OrderId o ClientRegion, queste possono essere trasportate utilizzando il Baggage.

Importante: il Baggage è pensato esclusivamente per dati di telemetria legati all’osservabilità. Non deve mai essere usato per trasportare dati critici o necessari alla logica di business.

Sicurezza

Quando si aggiungono informazioni al Baggage, queste diventano accessibili a tutti i segnali di telemetria, inclusi quelli inviati a servizi di terze parti. Inoltre, il Baggage viene propagato come header HTTP, rendendolo visibile a chiunque nella rete. Per questo motivo, è fondamentale inserire solo informazioni non sensibili ed applicare policy chiare su quali dati possono essere inclusi nel Baggage.

Profiles

Al momento della scrittura di questo articolo il segnale Profiles è in fase di studio da parte del Profiling Working Group.

Collector

Pipeline

#opentelemetry
#architettura
#monitoring