OpenTelemetry consente di tracciare le richieste distribuite attraverso proxy, applicazioni, database, cache e API esterne quando Contesto di tracciamento, identità del servizio e percorso di esportazione integrarsi tra loro. Per le piattaforme di hosting non è determinante la quantità massima di dati, bensì un’architettura controllata: le applicazioni generano dati di telemetria, un backend li analizza, mentre il collector e i filtri limitano i rischi. La fattibilità di tale implementazione dipende in larga misura dal modello di hosting, dai diritti di esecuzione, dalle autorizzazioni di rete e dai requisiti in materia di protezione dei dati.
Distinguere chiaramente tra OpenTelemetry, i segnali e il backend
OpenTelemetry, spesso denominato OTel, non è un portale di monitoraggio e non memorizza in modo permanente i dati di telemetria. Si tratta di un insieme indipendente dal produttore composto da specifiche, API, SDK, strumentazioni, il protocollo OpenTelemetry (OTLP) e il Collector. Le applicazioni generano, elaborano ed esportano i dati; la ricerca, l’archiviazione, le autorizzazioni e gli avvisi rimangono compiti del backend scelto.
I tre Segnali rispondono a diverse domande operative. Le tracce ordinano i singoli passaggi di una richiesta in ordine temporale e logico, le metriche sintetizzano gli stati in serie di misurazioni, mentre i log registrano i singoli eventi. Una pratica di osservabilità efficace li combina: una traccia individua una richiesta anomala, le metriche ne mostrano la frequenza nel tempo e i log associati forniscono messaggi di errore o ulteriori dettagli.
| Segnale | Domanda tipica sull'azienda | Limiti della significatività |
|---|---|---|
| Tracce | Dove è stato impiegato il tempo da una singola richiesta? | Mostrano l'andamento strumentale, ma non dimostrano alcuna causa. |
| Metriche | Come si evolvono il tasso di errore e la distribuzione della latenza? | Gli aggregati non spiegano automaticamente un singolo errore. |
| Registri | Quale messaggio di dettaglio è associato a un’operazione sospetta? | Senza Trace ID e Span ID, l'associazione a una richiesta è limitata. |
Per le piattaforme di hosting ne deriva una chiara divisione dei compiti: OTel standardizza la generazione e la trasmissione dei dati di telemetria, ma non sostituisce alcun sistema di destinazione. Prima di procedere alla strumentazione, i team dovrebbero quindi stabilire quale backend accetti quali dati, per quanto tempo siano necessari e chi sia autorizzato a consultarli. Solo queste decisioni rendono gestibili i percorsi tecnici di esportazione e i volumi di dati.
Trasmettere il contesto di tracciamento oltre i confini dell'hosting
Il tracciamento distribuito collega le fasi di una transazione logica oltre i confini dei processi e della rete. Un Contesto di tracciamento contiene, tra le altre cose, un ID di traccia per l'intero processo e ID di span per le singole operazioni. Gli span possono formare relazioni padre-figlio; insieme descrivono un grafo aciclico orientato del lavoro osservato.
Nel protocollo HTTP, questo contesto viene solitamente trasmesso secondo lo standard W3C Trace Context, in particolare nell'intestazione traceparent. Un servizio rileva il contesto in entrata e genera uno span corrispondente per la propria parte. In caso di chiamate in uscita, deve ritrasmettere il contesto. Se ciò non avviene in un punto di transizione controllabile, la richiesta nel backend si frammenta in tracce separate.
Durante il processo di checkout, un proxy inverso può inoltrare la richiesta all’applicazione. Quest’ultima, ad esempio, controlla la cache, interroga il database e richiama un servizio di pagamento e un’API di posta elettronica. Se i passaggi vengono strumentati e il contesto viene propagato, è possibile ricostruire la sequenza di queste operazioni in una traccia. Lo stesso principio vale per i lavori in coda o in background, a condizione che il contesto venga trasmesso insieme al messaggio e ripristinato presso il destinatario.
Tuttavia, un intervallo HTTP esterno prolungato mostra solo la durata osservata di tale operazione strumentata. Non dimostra se la causa sia da ricercarsi nel DNS, nella rete, nei tentativi di ripetizione, nella controparte o nel carico di lavoro del proprio sistema. Le tracce rappresentano quindi un punto di partenza per la diagnosi; per individuare la causa è necessario ricorrere a metriche adeguate, log e alla verifica tecnica dei componenti coinvolti.
I modelli di hosting determinano il margine di manovra di OTel
La fattibilità di OpenTelemetry dipende innanzitutto dal modello di hosting. Il requisito minimo è il controllo sulla configurazione dell'applicazione o, quantomeno, sulle variabili d'ambiente. A seconda dell'implementazione del linguaggio, gli SDK possono essere configurati a livello di codice o tramite l'ambiente; è necessario verificare l'effettivo livello di supporto per il linguaggio e la versione utilizzati.
| Modello di hosting | Possibili strumenti | Opzione Collector | Limitazione tipica | Un approccio sensato |
|---|---|---|---|---|
| hosting condiviso | Configurazione dell'SDK orientata all'applicazione, ove consentito | Spesso si tratta solo di un endpoint esterno o fornito dal provider | Nessun processo proprio permanente né porte di ricezione locali | Verificare le opzioni di esportazione e le variabili d'ambiente presso il fornitore |
| hosting gestito | A seconda delle approvazioni e della durata | È possibile utilizzare un collector del fornitore o un collector esterno | Controllo limitato dei processi e della rete | Iniziare con la strumentazione di runtime supportata |
| VPS o server dedicato | SDK e strumentazione automatica in fase di esecuzione | È possibile avere un collector locale per ogni host | La gestione, la sicurezza e gli aggiornamenti sono di competenza del team | Inizialmente, collegare pochi servizi a un collector protetto |
| Kubernetes | SDK, opzioni zero-code e implementazione supportata dagli operatori | Collector come carico di lavoro o gateway | Tenere conto dei ruoli, delle linee guida sulla rete e della configurazione del carico di lavoro | Instrumentare uno spazio dei nomi o un servizio delimitato |
Su VPS, server propri e container, è solitamente possibile gestire autonomamente il Collector, i percorsi di rete e l'ambiente di processo. Gli esempi ufficiali indicano, per i destinatari OTLP locali, le porte 4317 per gRPC e 4318 per HTTP. Ciò non implica una raccomandazione generale di abilitazione: l'accessibilità in produzione, le regole del firewall e l'autenticazione devono essere adeguate alla rispettiva piattaforma.
Nell’hosting condiviso classico, invece, spesso mancano i permessi necessari per un collector in esecuzione continua o per l’iniezione di processi finalizzata all’auto-strumentazione. Esistono soluzioni zero-code per diversi ecosistemi linguistici, ma la loro utilizzabilità dipende dal tempo di esecuzione, dal metodo di distribuzione e dalle autorizzazioni della piattaforma. Pertanto, non pianificare partendo dalla funzionalità OTel, ma dal percorso di configurazione ed esportazione consentito dall’ambiente di hosting specifico.
Pianificare in modo mirato la strumentazione e l’identità del servizio
All'inizio c'è una spiegazione chiara Identità di servizio. Le risorse descrivono l'entità che genera i dati di telemetria, ad esempio un servizio o il suo ambiente di esecuzione. Definisci gli attributi delle risorse utilizzati a tale scopo in modo controllato e coerente. Quali attributi specifici siano disponibili automaticamente o debbano essere configurati separatamente dipende dall'implementazione del linguaggio, dalla strumentazione e dalla versione.
Verifica quindi la strumentazione zero-code o automatica del runtime del linguaggio effettivamente utilizzato e della relativa versione. La documentazione di OpenTelemetry elenca approcci di questo tipo, tra l’altro, per Java, JavaScript, .NET, PHP, Python e Go. Spesso rilevano i confini relativi a HTTP, database o librerie client, ma la portata, il livello di maturità e le librerie supportate variano a seconda dell’implementazione.
I trace generati automaticamente mostrano soprattutto le transizioni tecniche. Per le fasi specifiche come „Ordine approvato“ o „Fattura generata“, è necessario integrare nel codice una strumentazione mirata, purché tali fasi siano rilevanti ai fini della diagnosi. In questo modo è possibile individuare in quale operazione si verifica un errore, senza sovraccaricare ogni chiamata di funzione con dati telemetrici.
Altri attributi delle risorse possono contenere, ad esempio, informazioni relative all’host, al processo, al container o all’ambiente Kubernetes. È necessario verificare separatamente, per ciascun SDK, strumentazione e versione, quali attributi vengono impostati automaticamente da un’implementazione linguistica e quali convenzioni semantiche si applicano. I valori dovrebbero provenire da metadati di distribuzione controllati, affinché l’identificazione dello stesso ambiente di esecuzione rimanga tracciabile.
In molti progetti dei clienti, la denominazione rientra nel concetto di client e di implementazione. La telemetria non deve unire inavvertitamente i progetti né facilitare l’accesso tramite attributi comuni. Il contributo su spiega inoltre come l’architettura applicativa, l’isolamento e la scalabilità siano correlati tra loro Hosting SaaS multi-cliente. Per quanto riguarda la telemetria in sé, vale quanto segue: registrare gli identificativi relativi ai clienti solo se sono tecnicamente necessari e se ne è stata verificata la conformità alle norme sulla protezione dei dati.
Architetture di raccolta e esportazione sicura
Nell'esportazione diretta, ogni applicazione invia i propri dati OTLP direttamente al backend selezionato. Ciò consente di evitare un componente aggiuntivo, ma distribuisce l'indirizzo di destinazione, le credenziali di accesso e la configurazione di esportazione su più distribuzioni. Questa variante è più adatta a un'installazione di piccole dimensioni e ben definita, il cui backend sia accessibile in modo sicuro e che non richieda un'elaborazione centrale prima dell'esportazione.
Un locale Collezionista Per ogni host o pod, la telemetria viene raccolta a livello di applicazione. Le applicazioni esportano i dati verso un endpoint locale; il collector raggruppa i dati e può occuparsi dei tentativi di ripetizione, dell’elaborazione e dell’inoltro. Per gli host Linux, la documentazione descrive questo modello come un’opzione per consentire alle applicazioni di localhost far spedire.
Un gateway-collector centrale, invece, concentra il collegamento al backend, il routing e le regole di elaborazione uniformi. Ciò crea tuttavia un’ulteriore dipendenza operativa, che deve essere protetta e pianificata in base alle capacità disponibili. In ambienti di grandi dimensioni è possibile combinare un collector locale con un gateway, anziché collegare tutte le applicazioni direttamente a un’istanza centrale.
In un esempio non produttivo, un ricevitore (Receiver) acquisisce i dati OTLP, la pipeline configurata elabora la telemetria e un esportatore (Exporter) la inoltra al backend. La panoramica OTel descrive fondamentalmente anche l’arricchimento, la trasformazione e la pulizia delle informazioni personali come attività del Collector. Tuttavia, è necessario verificare separatamente, per la distribuzione e la versione del Collector selezionate, quali componenti specifici supportano un segnale e quale livello di maturità presentano.
Le porte OTLP spesso utilizzate negli esempi locali 4317 per gRPC e 4318 Per HTTP non è prevista un'autorizzazione generica per l'ambiente di produzione. Definire l'accessibilità tramite zone di sicurezza, regole del firewall e specifiche della piattaforma. S14 raccomanda connessioni sicure e autenticate e un funzionamento senza diritti di root o di amministratore, a meno che un componente non richieda diritti aggiuntivi. Poiché S14 utilizza il ramo di sviluppo mobile main Come indicato nella documentazione, prima dell’utilizzo è necessario verificare la corrispondenza di tali specifiche con la documentazione relativa alla versione di Collector effettivamente utilizzata.
Selezionare il campionamento per carico e configurazioni di guasto
Il campionamento determina quali tracce vengono salvate o elaborate ulteriormente quando una raccolta completa genera una quantità eccessiva di dati telemetrici. Inizia con una quota ridotta, testata in precedenza, e verifica se le richieste tipiche, gli errori e i picchi di latenza nel backend siano ancora sufficientemente visibili. La quota adeguata non è un valore universale, ma dipende dal traffico, dall’obiettivo diagnostico e dal periodo di conservazione.
| Approccio | Decisione | La forza | Confine | Idoneità |
|---|---|---|---|---|
| Registrazione completa | Ogni traccia viene esportata | Massimo livello di dettaglio | È possibile raggiungere un elevato volume di dati | Ambienti diagnostici di piccole dimensioni o a durata limitata |
| Campionamento della testa basato sui genitori e sui rapporti | All'avvio della traccia | Pianificabile e decidibile in anticipo | I segni di errore successivi non influenzano la selezione | Inizio con una quota ridotta già testata |
| Campionamento di coda | Sulla base dei dati di tracciamento ricevuti nel Collector | È possibile, ad esempio, conservare in modo mirato gli errori o le tracce lente | Le strategie, il comportamento della memoria e la scalabilità dipendono dalla versione | Solo dopo aver definito e verificato una versione specifica |
All'indirizzo Campionamento della testa La decisione viene presa all'inizio di una traccia. Una strategia basata sui genitori e sui rapporti riprende la decisione di campionamento di uno span genitore e stabilisce una quota per le nuove radici. Ciò garantisce la tracciabilità della selezione, ma non consente di reinserire in una traccia precedentemente scartata un errore che si rivela solo in un secondo momento.
Il Tail Sampling analizza i dati di traccia ricevuti nel Collector in base alle linee guida configurate. S12 mostra esclusivamente il ramo di sviluppo mobile main e identifica il processore come versione beta per le tracce e come soggetto a stati transitori. Questo stato comprende diverse strategie decisionali e opzioni di capacità, tra cui limiti alle dimensioni delle tracce e agli shard interni. Non si tratta di caratteristiche garantite di una determinata versione stabile. Per un utilizzo in produzione è quindi necessario definire innanzitutto la versione di Collector-Contrib e la distribuzione, per poi verificare le relative opzioni legate alla versione, i valori predefiniti e i requisiti di risorse.
Nel documento main-A questo punto, tutti gli span di una traccia devono raggiungere la stessa istanza di Collector affinché sia possibile prendere una decisione di campionamento efficace. Il processore conserva i dati in memoria per impostazione predefinita; una descrizione presente in tale memoria tail_storage-L'estensione è in fase sperimentale, protetta da un feature gate e non è combinabile con tutte le configurazioni di sharding. Queste informazioni hanno solo scopo indicativo. In assenza di una versione definita, non è possibile ricavarne né un piano di routing affidabile né un'autorizzazione alla messa in produzione.
Limitare la telemetria sensibile prima dell'esportazione
La telemetria è utile dal punto di vista operativo solo se il suo contenuto rimane limitato. Baggage può diffondere coppie chiave-valore scelte liberamente attraverso servizi e processi, rendendole disponibili per tracce, metriche o log. I valori sensibili di Baggage possono così raggiungere, anche involontariamente, risorse a valle o esterne. Verifica quindi il suo contenuto prima di ogni trasmissione tra servizi.
All'indirizzo Bagagli In questo contesto, tale ambito di applicazione è particolarmente importante. I dati personali, gli identificativi di sessione, le password o le chiavi API non rientrano in tale ambito. Un valore che non è strettamente necessario per l'assegnazione tecnica in ogni passaggio non dovrebbe essere creato come «baggage». La trasmissione automatica nelle chiamate di rete amplia altrimenti la cerchia dei sistemi in grado di elaborare il valore.
La minimizzazione dei dati inizia già in fase di strumentazione: acquisisci solo i campi necessari per una diagnosi concreta. Verifica inoltre gli attributi di session, i campi di log, gli URL, le intestazioni e le informazioni relative al database, che dipendono dall’applicazione e dalla libreria, utilizzando dati di esempio non di produzione. Si tratta di una regola architettonica prudenziale; quali di questi contenuti vengano effettivamente raccolti dipende dall’SDK, dalla strumentazione, dalla configurazione e dalla versione.
In linea di principio, il Collector è in grado di elaborare, arricchire, trasformare i dati di telemetria e verificarne la presenza di informazioni personali. Tuttavia, i singoli componenti di filtraggio, attributi o trasformazione differiscono in base alla distribuzione, al supporto dei segnali e allo stato della versione. Pertanto, stabilisci solo dopo aver verificato la versione prevista quale componente debba elaborare quali campi e non considerare una descrizione generale del Collector come autorizzazione per una configurazione specifica.
Per quanto riguarda le metriche, il team dovrebbe stabilire in anticipo quali attributi siano realmente necessari per una specifica questione operativa. Gli identificatori individuali delle richieste o degli utenti, così come gli URL completi, non vengono inseriti come dimensioni solo a titolo precauzionale. Verifica, utilizzando dati di esempio rappresentativi, quali valori di attributo vengono effettivamente generati dalla strumentazione e consenti solo le classi di percorso, di servizio o di errore previste per le analisi definite.
Le regole di elaborazione devono essere sottoposte a controllo delle versioni e verificate, prima del lancio, utilizzando dati di esempio rappresentativi e non di produzione. In questo modo è possibile verificare se vadano persi dati necessari a fini diagnostici o se continuino ad essere esportati valori sensibili. I tempi di conservazione, il modello di autorizzazione, i registri di accesso e le politiche di cancellazione fanno parte dell’architettura del backend scelto e non sono regolati da OpenTelemetry stesso.
Garantire il funzionamento stabile di Collector e individuare gli errori
Se mancano dei segmenti o se un flusso previsto si frammenta in più tracce, la ricerca degli errori inizia nel punto di transizione tra i servizi. Verifica innanzitutto se la richiesta in uscita trasmette il contesto e se il servizio successivo lo legge. Il W3C Trace Context con traceparent collega solo i componenti che supportano effettivamente tale trasmissione e non li sovrascrive.
Segue poi la pipeline: quando il ricevitore configurato riceve i dati, un processore lascia passare i segnali previsti e l’esportatore raggiunge la sua destinazione? Verifiche separate impediscono che un problema del backend venga erroneamente considerato un errore di strumentazione. I dati operativi del collector e le richieste di test chiaramente delimitate aiutano a attribuire le perdite a un determinato livello.
Gli errori di esportazione richiedono quindi una verifica del DNS, della raggiungibilità, dei certificati e dell’autenticazione. S14 raccomanda, per le connessioni al Collector, canali sicuri e autenticati e un funzionamento senza diritti di root o di amministratore, a condizione che i componenti utilizzati non richiedano diritti aggiuntivi. La fonte documenta tuttavia il ramo di sviluppo mobile main; pertanto, prima dell'utilizzo in produzione, verifica che queste istruzioni di sicurezza corrispondano alla documentazione e alla configurazione della versione di Collector effettivamente utilizzata.
Un altro indicatore di funzionamento è Pressione sulla memoria. Le code, i tentativi di ripetizione e le elaborazioni complesse possono occupare memoria se un sistema di destinazione risponde in ritardo o smette di funzionare. I limiti di memoria e le code limitate devono essere adeguati al carico e al comportamento in caso di perdita; il loro effetto viene verificato prima dell’implementazione in produzione. L’assenza di limiti può destabilizzare lo stesso Collector.
Per la diagnosi, quindi, non contano solo le tracce dell’applicazione. Occorre osservare anche i dati rifiutati o scartati, le code, gli errori di esportazione e le risorse del collector. Le modifiche vanno apportate gradualmente: prima una pipeline o un servizio, poi verificare l’impatto sulla completezza e sulla memoria. In questo modo è possibile individuare quale modifica alla configurazione abbia migliorato o peggiorato il quadro degli errori.
Prendere decisioni architetturali per i team della piattaforma
Per un’applicazione di piccole dimensioni e ben definita, l’esportazione diretta verso il backend può essere sufficiente, purché si abbiano una padronanza sicura delle credenziali di accesso, del percorso di rete e delle regole relative ai dati. In presenza di più servizi, un collector locale per ogni host o un modello basato sull’agente rappresentano un’architettura possibile, ma non costituiscono una regola generale da privilegiare. S10 descrive, per Linux, un collector gestito separatamente sull’host; le varianti basate su pod, agenti e gateway devono essere valutate in base ai modelli di distribuzione e ai rispettivi requisiti della piattaforma.
Le piattaforme in crescita traggono spesso vantaggio da una separazione dei compiti. I collector locali possono ricevere e aggregare i dati; un collector gateway centrale può occuparsi dell'instradamento, dei filtri uniformi e del collegamento a più backend. Questa suddivisione comporta tuttavia un servizio aggiuntivo, di cui è necessario pianificare la disponibilità, la capacità e la protezione dell'accesso.
In molti progetti dei clienti, la separazione della telemetria rappresenta una scelta architettonica da definire in modo consapevole. Se i progetti richiedono diversi livelli di accesso, è necessario pianificare e verificare di conseguenza le destinazioni di esportazione, le autorizzazioni del backend e l’identificazione delle risorse. Gli attributi definiti liberamente servono a descrivere la telemetria; il presente articolo non li considera un sostituto di un controllo degli accessi implementato a livello tecnico.
Le dipendenze distribuite, come la cache, la coda e il database, ampliano le esigenze di diagnostica, ma non giustificano un monitoraggio completo e generalizzato. Proprio nel caso di un cluster Redis, i singoli servizi e i processi in background possono avere una visione parziale di un flusso di lavoro. L'articolo su Sharding di Redis Cluster per grandi piattaforme di hosting definisce l'architettura di un tale livello di cache; per la telemetria è fondamentale gestire in modo consapevole i confini del contesto e la quantità di dati.
La decisione stabilisce quindi Indipendenza dal backend con costi operativi reali. Un collector semplifica la sostituzione o l’alimentazione parallela delle destinazioni, ma non sostituisce né la pianificazione della capacità né la gestione degli errori. I team di piattaforma dovrebbero definire quali dati riceve ciascuna destinazione, chi ne ha accesso e quali interruzioni durante l’esportazione non devono compromettere il funzionamento delle applicazioni.
L'implementazione graduale inizia con un servizio e poche transazioni significative dal punto di vista diagnostico. Successivamente vengono verificati la continuità del contesto, le regole di filtraggio, la stabilità delle esportazioni e il comportamento della memoria sotto un carico rappresentativo. Solo quando questi criteri sono soddisfatti in modo verificabile, seguono altre lingue, mandanti o backend. Ciò limita il rischio ed evita che si crei una pipeline di grandi dimensioni senza chiare responsabilità.
Fonti e stato dell'arte
Stato della ricerca:
Data di riferimento: 31 ottobre 2026. L'articolo distingue chiaramente le specifiche di OpenTelemetry, gli SDK, i componenti del collector e i backend. S12 e S14 fanno riferimento ai rami di sviluppo "main" e non costituiscono prova di una specifica versione stabile. Lo stato del ramo «main» di S12, verificato alla data di ricerca, descrive il processore di campionamento «tail» come versione beta per le tracce e documenta l’elaborazione con stato, nonché opzioni aggiuntive e variabili quali sampling_strategy, maximum_trace_size_bytes, gli shard interni e un’estensione sperimentale tail_storage. Queste informazioni costituiscono esclusivamente punti di riferimento; prima del rilascio o dell’implementazione, è necessario definire la versione del Collector Contrib e la distribuzione e verificare tutte le affermazioni con la relativa documentazione specifica per quella versione. Ciò vale in particolare per il comportamento di memorizzazione, l’instradamento di tutti gli span di una traccia, i valori predefiniti, i feature gate, le combinazioni di sharding e il fabbisogno di risorse. Per la S14, la nuova verifica riguarda in particolare le connessioni sicure e autenticate e i diritti di processo ridotti al minimo.
https://opentelemetry.io/docs/
https://opentelemetry.io/docs/collector/deploy/
https://opentelemetry.io/docs/specs/otel/overview/
https://opentelemetry.io/docs/specs/otel/logs/
https://opentelemetry.io/docs/concepts/context-propagation/
https://opentelemetry.io/docs/concepts/instrumentation/
https://opentelemetry.io/docs/languages/sdk-configuration/
https://opentelemetry.io/docs/collector/quick-start/
https://opentelemetry.io/docs/languages/
https://opentelemetry.io/docs/platforms/linux/configuration/
https://github.com/open-telemetry/opentelemetry-collector/blob/main/docs/security-best-practices.md
https://opentelemetry.io/docs/languages/go/sampling/
https://github.com/open-telemetry/opentelemetry-collector-contrib/blob/main/processor/tailsamplingprocessor/README.md
https://opentelemetry.io/docs/concepts/signals/baggage/
https://opentelemetry.io/docs/collector/troubleshooting/




