Il monitoraggio e l'ottimizzazione delle prestazioni delle applicazioni sono importanti per gli sviluppatori di software e per le aziende in generale. Tante più applicazioni implementa un'azienda, quanti più dati possono essere acquisiti e analizzati. Questi dati non valgono tuttavia molto senza gli strumenti giusti per il monitoraggio, l'ottimizzazione, la memorizzazione e, soprattutto, la loro contestualizzazione.
Le organizzazioni possono sfruttare al meglio i dati delle applicazioni implementando soluzioni di monitoraggio e osservabilità che aiutano a migliorare lo stato di salute delle applicazioni identificando i problemi prima che si presentino, segnalando i rallentamenti, distribuendo il traffico di rete e molto altro. Queste funzionalità consentono di ridurre i tempi di inattività delle applicazioni, fornire prestazioni più affidabili e migliorare l'esperienza dell'utente.
OpenTelemetry e Prometheus sono entrambi progetti open source della Cloud Native Computing Foundation (CNCF) che offrono strumenti di osservabilità per il monitoraggio delle applicazioni. Diversi tipi di dati e operazioni richiedono soluzioni distinte che dipendono dagli obiettivi e dalle specifiche dell'applicazione di un'organizzazione. Comprendere le differenze chiave tra piattaforme come OpenTelemetry e Prometheus e ciò che ciascuna soluzione offre è importante prima di scegliere quella da implementare.
È anche utile notare che OpenTelemetry e Prometheus si integrano e possono lavorare insieme formando un potente duo per il monitoraggio delle applicazioni. OpenTelemetry e Prometheus supportano l'acquisizione e la trasformazione delle metriche, consentendo ai team DevOps e IT di generare informazioni dettagliate sulle prestazioni e intraprendere azioni in base a esse.
OpenTelemetry, o OTel, è una piattaforma progettata per creare una posizione centralizzata per la generazione, la raccolta, l'esportazione e la gestione dei dati telemetrici, inclusi log, metriche e tracce. OTel nasce dalla fusione di OpenCensus e OpenTracing con l'obiettivo di fornire API, SDK, librerie e integrazioni che standardizzano la raccolta di dati eterogenei. Con OTel, gli output di monitoraggio desiderati possono essere integrati nel codice per semplificare l'elaborazione dei dati e assicurarsi che i dati siano esportati nel corretto back-end.
L'analisi dei dati di telemetria è fondamentale per comprendere le prestazioni e l'integrità del sistema. Questo tipo di osservabilità ottimizzata consente alle organizzazioni di risolvere i problemi più rapidamente, così come di aumentare l'affidabilità del sistema, risolvere i problemi di latenza e ridurre i tempi di inattività delle applicazioni.
Qui di seguito un breve riassunto degli aspetti chiave dell'ecosistema OpenTelemetry:
API: le API OpenTelemetry (interfacce di programmazione dell'applicazione) traducono universalmente i linguaggi di programmazione. Questa funzionalità consente alle API di acquisire dati di telemetria. Le API svolgono un ruolo chiave nella standardizzazione della raccolta di metriche OpenTelemetry.
SDK: i kit di sviluppo software sono strumenti per la creazione del software. Includono il framework, le librerie di codice e i debugger che sono gli elementi costitutivi dello sviluppo del software. Gli SDK di OTel implementano le API OpenTelemetry e offrono gli strumenti necessari per generare e raccogliere dati di telemetria.
Collettore OpenTelemetry: il collettore OTel riceve, elabora ed esporta i dati di telemetria. I collettori OTel possono essere configurati per filtrare tipi di dati specifici verso il back-end designato.
Libreria di strumentazione: OTel fornisce un modello di strumentazione che funziona su tutte le piattaforme. Le librerie di strumentazione consentono a OTel di integrarsi con qualsiasi linguaggio di programmazione.
Il protocollo OpenTelemetry (OTLP) semplifica l'osservabilità acquisendo dati di telemetria come metriche, log e tracce, senza modificare il codice o i metadati.
Metriche: le metriche definiscono una panoramica di alto livello delle prestazioni e della salute del sistema. I team IT, di sviluppo e di gestione aziendale determinano quali metriche sia più utile monitorare per mantenere un livello di prestazioni delle applicazioni che soddisfi gli obiettivi aziendali. Le metriche variano a seconda dei dati che un team ritiene importanti e possono includere il traffico di rete, la latenza e lo storage CPU. Le metriche possono essere utilizzate anche per tracciare modelli e tendenze nelle prestazioni delle applicazioni.
Registri: I log sono una registrazione degli eventi che si verificano all'interno di un componente software o di un'applicazione. I log possono essere creati in base ad aspetti specifici di un componente che i team DevOps desiderano monitorare. Servono come dati storici che possono offrire informazioni generali sulle prestazioni, mostrare quando le soglie impostate vengono superate o visualizzare errori. I registri aiutano a monitorare lo stato di salute generale di un ecosistema applicativo.
Tracce: le tracce offrono una visualizzazione più ridotta delle prestazioni dell'applicazione rispetto ai log e facilitano l'ottimizzazione. Sono anche più mirati dei log e seguono il percorso end-to-end di una singola richiesta via via che si sposta nello stack dell'applicazione. Le tracce consentono agli sviluppatori di individuare il momento esatto in cui si verificano errori o rallentamenti, quanto durano e come influiscono sul percorso dell'utente. Queste informazioni aiutano a gestire i microservizi e a migliorare le prestazioni complessive delle applicazioni.
OTel è in grado di prendere questi tre diversi tipi di dati di telemetria ed esportarli in vari back-end, tra cui Prometheus. Questa funzionalità previene qualsiasi lock-in a livello di fornitore o back-end e consente agli sviluppatori di scegliere gli strumenti di analisi preferiti. OpenTelemetry supporta una gamma di integrazioni con altre piattaforme, tra cui Prometheus, che offrono maggiori opportunità di osservabilità. OTel supporta Java, Python, JavaScript e Go, il che lo rende una soluzione sempre più flessibile. Consente inoltre agli sviluppatori e ai team IT di monitorare le prestazioni da qualsiasi browser web o posizione.
I maggiori punti di forza di OpenTelemetry derivano dalla sua capacità di raccogliere ed esportare costantemente i dati in molte applicazioni e dalla sua standardizzazione del processo di acquisizione dei dati. OTel è un potente strumento per l'osservabilità in sistemi distribuiti e microservizi.
Prometheus è un toolkit per il monitoraggio e gli avvisi creato per raccogliere e organizzare le metriche delle applicazioni. Il server Prometheus è stato in origine sviluppato da SoundCloud ed è poi diventato uno strumento open source.
Prometheus è un Time Series Database per il monitoraggio end-to-end dei dati di serie temporali. Le metriche delle serie temporali sono una raccolta di dati acquisiti a intervalli regolari, ad esempio i dati di vendita mensili o il traffico giornaliero delle applicazioni. Una chiara visibilità di questo tipo di dati offre informazioni approfondite su modelli, tendenze e previsioni per la pianificazione aziendale. Una volta integrato con un host, Prometheus raccoglie le metriche delle applicazioni correlate alle funzioni dedicate che i team DevOps desiderano monitorare.
Le metriche di Prometheus forniscono punti dati costituiti da nome, etichetta, timestamp e valore della metrica utilizzando un linguaggio di query chiamato PromQL. PromQL consente agli sviluppatori e all'IT di aggregare le metriche dei dati e trasformarle in istogrammi, ovvero grafici e dashboard per una maggiore visualizzazione. Prometheus può accedere ai dati dai database aziendali o dagli exporter. Gli exporter sono software correlati alle applicazioni che servono per estrarre metriche da varie app ed endpoint.
Contatori: misurano solo i valori numerici cumulativi che aumentano. I contatori sono utilizzati per misurare le attività completate, il numero di errori che si sono verificati durante un periodo definito o il numero di processi o microservizi in esecuzione.
Indicatori: eseguono il monitoraggio dei valori numerici che aumentano e diminuiscono in base a fattori esterni. Possono monitorare l'utilizzo della CPU e della memoria, la temperatura o la lunghezza di una coda.
Istogrammi: misurano la durata di eventi specifici come la durata della richiesta o la dimensione della risposta. Dividono quindi il raggio di queste misurazioni in intervalli chiamati bucket e determinano quante di queste misurazioni rientrino in ogni rispettivo bucket.
Riepiloghi: come gli istogrammi, anche i riepiloghi misurano la durata delle richieste e le dimensioni delle risposte, tuttavia forniscono anche un conteggio totale di tutte le osservazioni e un totale di tutti i valori osservati.
Un altro aspetto utile di Prometheus è la capacità di creare dashboard e grafici accessibili basati sui dati raccolti.
Prometheus consente di eseguire il monitoraggio delle applicazioni in tempo reale, offrendo informazioni accurate e agevolando la rapida risoluzione dei problemi. Consente inoltre di creare soglie correlate a funzioni specifiche. Quando queste soglie sono raggiunte o superate, vengono attivati avvisi che possono ridurre il tempo necessario per risolvere i problemi. Prometheus è in grado di gestire e archiviare grandi volumi di dati metrici e di renderli disponibili ai team di analisi in base alle esigenze. Non è stato progettato come soluzione di storage a lungo termine, bensì come strumento per la memorizzazione dei dati necessari per un'analisi immediata. La finestra standard per lo storage dei dati con Prometheus è compresa tra due ore e quindici giorni.
Prometheus si integra perfettamente con Kubernetes, una piattaforma open source di orchestrazione dei container per pianificare e automatizzare la distribuzione, la gestione e la scalabilità delle applicazioni in container. Kubernetes consente alle aziende di creare complessi ambienti ibridi e multicloud che implementano una gamma di servizi e microservizi. L'integrazione di Prometheus con Kubernetes introduce l'osservabilità completa e la supervisione in questi sistemi complessi.
Prometheus è inoltre compatibile con Grafana, un potente strumento di visualizzazione che aiuta a trasformare i dati in dashboard, grafici, diagrammi e avvisi. Se abbinato a Prometheus, Grafana è in grado di prendere le metriche e creare visualizzazioni chiare. La compatibilità tra queste due piattaforme rende i dati complessi più accessibili e condivisibili tra diversi team.
Prometheus offre strumenti per il monitoraggio, lo storage e la visualizzazione delle metriche, ma non tiene traccia dei registri o delle tracce di supporto, utilizzati per l'analisi delle cause primarie. In generale, Prometheus ha casi d'uso più limitati rispetto a OpenTelemetry.
OpenTelemetry è in grado di elaborare e tracciare metriche più complesse rispetto a Prometheus attraverso integrazioni indipendenti dal linguaggio di programmazione. OTel è altamente scalabile e ha una maggiore estensibilità rispetto a Prometheus, grazie a modelli di strumentazione automatizzati. A differenza di Prometheus, OpenTelemetry non offre una soluzione di storage e deve essere abbinata a un sistema back-end separato.
Le esigenze della tua organizzazione determineranno quale di queste soluzioni sia quella giusta per te. Se necessiti di una comprensione più olistica dei tuoi dati, lavori in ambienti complessi con sistemi distribuiti e desideri una maggiore flessibilità, OpenTelemetry potrebbe essere la soluzione più adeguata. Lo stesso vale se devi monitorare registri e tracce.
Se invece desideri monitorare singoli sistemi o operazioni e cerchi modelli di alerting, storage e visualizzazione, Prometheus potrebbe essere la soluzione giusta.
La buona notizia è che non devi necessariamente scegliere una o l'altra piattaforma, poiché OpenTelemetry e Prometheus sono piattaforme compatibili. Gli SDK di OTel possono acquisire metriche dai modelli di dati Prometheus e Prometheus supporta le metriche di OpenTelemetry. L'uso congiunto di queste piattaforme offre il meglio in assoluto, così come opzioni di monitoraggio avanzate. Per esempio:
Inoltre, OpenTelemetry e Prometheus si integrano con IBM® Instana e IBM® Turbonomic per offrire ulteriori strumenti di monitoraggio. Grazie alla potente mappa delle dipendenze di Instana, alla correlazione dei servizi upstream/downstream e alla visibilità dell'intero stack, le funzionalità di OTel sono ottimizzate per garantire che tutti i servizi siano strumentati. Instana offre, con i dati di OTel, la stessa fantastica esperienza di qualsiasi altra fonte di dati, fornendo il contesto necessario per trovare e risolvere rapidamente i problemi delle applicazioni. Con Turbonomic è possibile utilizzare gli strumenti di monitoraggio dei dati di Prometheus per automatizzare le decisioni di assegnazione delle risorse in base alla raccolta dei dati in tempo reale. Queste integrazioni sono modi ottimizzati per promuovere l'integrità dell'ecosistema applicativo e migliorare le prestazioni complessive.