Introduzione a OpenTelemetry per principianti

Parliamo di OpenTelemetry, un modo standard indipendente dal fornitore per raccogliere dati di telemetria.

Offrire una migliore osservabilità in un’applicazione è una grande sfida per qualsiasi sviluppatore perché deve acquisire i dati di telemetria dell’applicazione. Il dizionario di Cambridge definisce la telemetria come la scienza o il processo di raccolta di informazioni su oggetti che sono lontani e l’invio di informazioni da qualche parte elettronicamente.

Ad esempio, il singolo clic o la sessione di un utente su un sito Web genera molte richieste e flussi di tracciamento tra reti, microservizi, database e così via.

OpenTelemetry è una piattaforma di osservabilità, un insieme di componenti ben ponderati che possono essere utilizzati insieme o a la carte. Inoltre, gli sviluppatori di framework e librerie che tutti usiamo oggi hanno ora un modo standard per integrare i dati di telemetria in tali librerie e framework, offrendo agli utenti finali molte informazioni pronte all’uso su ciò che tali framework stanno facendo sotto il cofano. .

Per comprendere OpenTelemetry, devi prima sapere cos’è il tracciamento distribuito.

Che cos’è il tracciamento distribuito?

Man mano che le nostre applicazioni diventano più complesse e più servizi sono coinvolti nella gestione del traffico degli utenti e nel completamento delle transazioni, diventa sempre più fondamentale capire come le richieste attraversano i nostri servizi e in che modo ciascun servizio contribuisce alla latenza complessiva. Questo è ciò che fa il tracciamento distribuito. Acquisisce la latenza delle richieste degli utenti e il tempo impiegato da ciascun microservizio nel percorso per restituire una risposta.

Quando arriva una richiesta dell’utente, vogliamo creare una traccia, cioè l’informazione totale che descrive come il nostro sistema risponde a una richiesta dell’utente. Le tracce sono composte da intervalli e ogni intervallo indica una specifica coppia di richiesta e risposta coinvolta nel servire una richiesta utente. Il parent span descrive la latenza osservata dall’utente finale. E il child span viene utilizzato per capire come un particolare servizio nel sistema distribuito è stato chiamato e ha risposto con le informazioni sulla latenza.

Cos’è OpenTelemetry?

ApriTelemetria è un progetto open source ospitato dal CNCF che fornisce un modo standard per generare dati di telemetria. È stato creato dalla fusione di OpenTracinguno standard per la generazione di dati di traccia e OpenCensusche era uno standard per la generazione di dati di metrica.

OpenTelemetry offre un singolo set di API, agenti, servizi di raccolta e librerie per acquisire tracce e metriche distribuite dalla tua applicazione. OpenTelemetry standardizza il modo in cui raccogliamo i dati di telemetria e li inviamo a un back-end di tua scelta. Ciò fornisce un percorso indipendente dal fornitore verso la strumentazione e offre la flessibilità di modificare il back-end senza ristrumentare nuovamente il codice.

Pertanto, puoi strumentare le tue applicazioni utilizzando un agente indipendente dal fornitore mentre continui a inviare le tue metriche e tracce a un fornitore SaaS come Datadog. Quindi, se desideri cambiare fornitore (ad esempio, da Datadog a Dynatrace), puoi farlo senza modificare il codice dell’applicazione.

Il progetto OpenTelemetry mira a fornire un singolo set di librerie e agenti API per acquisire metriche e tracce distribuite dalle tue applicazioni. Questo vale per molte lingue e piattaforme. Il progetto OpenTelemetry include anche un servizio di raccolta opzionale e dispone di un repository dedicato per le specifiche. Per essere chiari, OpenTelemetry non è Jaeger o Prometheus, che sono back-end osservabili. Ma aiuta nell’esportazione dei dati verso back-end open source e commerciali.

Di seguito sono riportate le funzionalità fornite da OpenTelemetry:

  • Standardizzazione sulla raccolta di dati di telemetria che le organizzazioni possono seguire, il che semplifica il passaggio da un fornitore all’altro
  • Una convenzione semantica standard aperta e indipendente dal fornitore per il processo di raccolta dei dati
  • Collector che può essere distribuito come agente o gateway o in molti modi diversi
  • Supporta più formati di propagazione del contesto per la migrazione
  • Una soluzione end-to-end per generare, emettere, raccogliere, elaborare ed esportare dati di telemetria
  • Possibilità di inviare dati a varie destinazioni in parallelo con il controllo completo su di esso

Componenti OpenTelemetry

Di seguito sono riportati i componenti principali di OpenTelemetry:

  • Proto: questo componente viene utilizzato per definire i raccoglitori, le librerie di strumentazione e così via, che sono tipi di interfaccia indipendenti dalla lingua per OpenTelemetry.
  • Collector: i Collector vengono utilizzati per ricevere, elaborare ed esportare i dati di telemetria. Questa implementazione dei servizi di raccolta deve essere indipendente dal fornitore. Per impostazione predefinita, tutti i dati di telemetria vengono esportati dalle librerie di strumentazione in questa posizione.
  • Specifica: questo componente descrive i requisiti e le aspettative dell’implementazione in diversi linguaggi costituiti da API, SDK e dati. L’API genera i dati di telemetria, l’elaborazione e le funzionalità di esportazione per l’implementazione delle API fornite dagli SDK. I dati hanno le convenzioni semantiche per supportare tutti i tipi di fornitori senza modificare alcun codice.
  • Librerie di strumentazione: sono disponibili in più lingue come parte del progetto OpenTelemetry. Queste librerie vengono utilizzate per fornire osservabilità ad altre librerie per rendere tutte le applicazioni osservate effettuando chiamate all’API OpenTelemetry.

Architettura OpenTelemetry

Immagine da Nuova reliquia

Ad alto livello, OpenTelemetry si compone di tre parti principali:

  • Un insieme di API per strumentare applicazioni, librerie e framework.
  • L’SDK implementa le API.
  • Un raccoglitore facoltativo può importare, aggregare ed esportare i dati di telemetria ovunque ne abbiate bisogno.

Lo scopo dell’API è consentire la creazione di strumentazione per le librerie e il codice dell’applicazione. L’API ha quattro sezioni principali: traccia, contatori, un contesto condiviso e convenzioni semantiche.

  • L’API Tracer supporta la creazione, l’annotazione e il completamento di intervalli.
  • L’API del misuratore è costituita da più strumenti metrici. Esempi di questi strumenti sono osservatori, registratori di valori, contatori.
  • Puoi tenere traccia ed eseguire il contesto di estensione abilitando l’API di contesto e propagando tale contesto sia all’interno che all’esterno del tuo sistema.
  • Tutte le linee guida e le regole per la denominazione principale, come la denominazione degli span, degli attributi, delle etichette e degli strumenti metrici, sono presenti nelle convenzioni semantiche. Queste convenzioni vengono implementate per garantire la coerenza tra implementazioni di linguaggi diversi e per strumentazioni esterne.

In un contesto condiviso, l’implementazione del contesto si trova tra il tracciante e il misuratore e consente a tutte le registrazioni metriche non dell’osservatore di verificarsi nel contesto di un intervallo di esecuzione. Una funzionalità che consente agli SDK di acquisire intervalli esemplari per i valori metrici. È possibile personalizzare il contesto con i propagatori, che consentono di propagare il contesto span all’interno e all’esterno del sistema che abilita la vera traccia distribuita.

Il servizio di raccolta è una parte essenziale dell’architettura OpenTelemetry. È un servizio autonomo in grado di ricevere, elaborare ed esportare dati di telemetria da varie fonti, tra cui OpenCensus, Zipkin, Jaeger e il protocollo OpenTelemetry. Utilizzando i raccoglitori, puoi esportare intervalli e metriche a più fornitori e sistemi di telemetria open source.

L’architettura OpenTelemetry offre una soluzione di telemetria completa pronta all’uso. Puoi anche eseguire la personalizzazione utilizzando più punti di estensione in base alle necessità.

Come funziona OpenTelemetry?

All’interno di ogni servizio nella tua distribuzione, installa il client OpenTelemetry. Il client è l’SDK; l’SDK, a sua volta, ha un’API. I framework e le librerie delle applicazioni utilizzano questa API di strumentazione per descrivere il lavoro che stanno svolgendo. L’SDK esporta quindi le osservazioni raccolte in un servizio di pipeline di dati denominato Collector.

OpenTelemetry ha il proprio protocollo dati, OTLP, ma il raccoglitore può tradurre OTLP in vari formati, tra cui Zipkin, Jaegere Prometeo. In particolare, OpenTelemetry non fornisce il proprio back-end o strumento di analisi; questo perché è uno sforzo di standardizzazione al centro di OpenTelemetry. L’obiettivo è trovare un linguaggio universale per descrivere le operazioni dei computer in un ambiente cloud. L’obiettivo non è quello di standardizzare il modo in cui analizziamo quei dati. Invece, speriamo che OpenTelemetry aiuti a far avanzare il mondo dell’osservabilità consentendo a nuovi strumenti di analisi di iniziare rapidamente senza ricostruire l’intero ecosistema di software di telemetria.

Quando invii molti dati attraverso il sistema, c’è molto da considerare. Fortunatamente OpenTelemetry ha pensato a tutto e ha soluzioni a ciascuna di queste domande. Innanzitutto, OpenTelemetry è flessibile e gestisce più formati di propagazione del contesto. Ciò significa che anche se esiste uno standard, esiste ancora l’opzione di scelta all’interno di tale standard. Quindi, se stai usando qualcosa come il formato del contesto di traccia w3c o la propagazione b3, questi sono standard diversi all’interno dello standard che consentono ai tuoi servizi di collegare i punti.

Conclusione

OpenTelemetry raccoglie una varietà di osservazioni, le metriche di traccia distribuite e le risorse di sistema sono le più importanti. Anziché trattarli come segnali separati, OpenTelemetry li intreccia e fornisce l’indicizzazione e il contesto che consentono di aggregare e incrociare tutti questi segnali sul back-end.

Oltre alla raccolta dei dati, OpenTelemetry fornisce una funzione di elaborazione e pipeline dei dati che consente di modificare i formati dei dati, manipolare i dati e tutti gli strumenti necessari per creare una robusta pipeline di telemetria in un sistema moderno.

Quindi, era tutto su OpenTelemetry, vai avanti e prova questo strumento.