Strumentazione e osservabilità

Con strumentazione si intende il codice specifico che genera o raccoglie i dati sul comportamento di runtime dell'applicazione. All'interno dell'applicazione, la strumentazione, ad esempio quella fornita da OpenTelemetry, può raccogliere informazioni specifiche del dominio sul runtime del linguaggio, sul framework o sulla logica dell'applicazione, per poi inviare questi dati a un progetto Google Cloud o a un'altra destinazione. Questi dati, noti anche come telemetria, includono metrics, log e tracce.

Le metriche a livello di sistema, come l'utilizzo di CPU, la memoria e l'utilizzo del disco, sono preziose per il rilevamento dei problemi dell'applicazione, ma non forniscono molti insight sui problemi a livello di applicazione. La strumentazione può aiutare la tua applicazione a generare i dati necessari per diagnosticare la causa principale di un problema, perché la telemetria risultante mostra cosa sta succedendo all'interno dell'applicazione. Ad esempio, i log spesso includono il contesto del programma, come un messaggio di errore specifico o l'analisi dello stack, e la posizione nel codice sorgente. Analogamente, le tracce distribuite consentono di capire come più servizi interagiscono durante l'elaborazione delle richieste. Le metriche consentono di ricevere notifiche quando l'applicazione non funziona correttamente.

La strumentazione dell'applicazione comporta la generazione di telemetria e l'invio a dove è possibile archiviare i dati ed eseguire query. Ad esempio, la tua strumentazione potrebbe inviare dati telemetrici a un progetto Google Cloud. I servizi di Google Cloud Observability consentono di raccogliere, analizzare e correlare i dati di telemetria. Forniscono inoltre impostazioni predefinite integrate, come dashboard e criteri di avviso predefiniti, per aiutarti a iniziare più rapidamente. Per ulteriori informazioni su Google Cloud Observability, consulta Observability in Google Cloud.

La figura seguente illustra come un'applicazione utilizza la strumentazione per generare e inviare dati di telemetria a un sistema di archiviazione:

Figura che illustra l'architettura della strumentazione in corso.

Come illustrato nella figura precedente, il codice di strumentazione è presente all'interno del processo dell'applicazione e interagisce con l'applicazione per generare dati di telemetria. Il framework di strumentazione esporta quindi i dati di telemetria in un sistema di archiviazione configurato. Nella figura, il sistema di archiviazione è il tuo progetto Google Cloud.

Informazioni sui framework di strumentazione indipendente dal fornitore

Anche se prevedi di inviare dati di telemetria solo a Google Cloud, ti consigliamo di utilizzare un framework di strumentazione open source indipendente dal fornitore per lo strumentazione delle tue applicazioni. Questi tipi di framework presentano alcuni vantaggi fondamentali:

Nessun vincolo al fornitore
I framework neutrali dal fornitore non sono legati a un particolare fornitore e forniscono il proprio modello dei dati per la telemetria generata. Pertanto, puoi inviare dati a più fornitori e di solito cambiare il fornitore che utilizzi senza modificare il codice.
Procedure standardizzate per la raccolta dei dati di telemetria
I framework ben progettati, come OpenTelemetry, offrono un approccio standardizzato alla raccolta dei dati di telemetria dalle applicazioni. Puoi usare lo stesso framework per le applicazioni scritte nei linguaggi supportati. Poiché il framework è standardizzato, puoi raccogliere e confrontare la telemetria di tutti i tuoi servizi.
Librerie interoperabili
I framework di strumentazione includono un ricco ecosistema di librerie che raccoglie segnali di telemetria e queste librerie sono interoperabili. Ad esempio, OpenTelemetry fornisce librerie per raccogliere dati di traccia e dati di metriche. Puoi utilizzare una delle librerie o entrambe.

Consigli generali

Questa sezione contiene consigli generali su come strumentare la tua applicazione. Per indicazioni specifiche per Google Cloud, consulta Scegliere un approccio alla strumentazione.

Per raccogliere metriche, consigliamo di utilizzare OpenTelemetry o Prometheus:

  • OpenTelemetry è un progetto open source che fornisce un framework unificato per la strumentazione delle applicazioni. Fornisce inoltre librerie di strumentazione per le biblioteche più diffuse. OpenTelemetry fornisce un agente autonomo, OpenTelemetry Collector, in grado di ricevere, trasformare ed esportare dati di telemetria. Il file di configurazione del raccoglitore OpenTelemetry determina il comportamento del raccoglitore OpenTelemetry. Per inviare dati di telemetria a un agente o direttamente a un sistema di archiviazione, utilizza il protocollo OpenTelemetry Protocol (OTLP).

  • Prometheus è un noto sistema di monitoraggio open source. Puoi utilizzare le librerie client di Prometheus per generare metriche dalla tua applicazione ed esiste un ecosistema di terze parti di librerie di strumentazione per i framework più diffusi. I client Prometheus espongono le proprie metriche come endpoint HTTP che può essere estratto da un agente.

Per raccogliere tracce, consigliamo di utilizzare OpenTelemetry.

Per raccogliere i log, consigliamo di utilizzare un framework che può essere configurato per generare log strutturati JSON per Cloud Logging. Per scrivere i dati di log, consigliamo quanto segue:

Soluzioni Google Cloud

Google Cloud Observability offre opzioni flessibili per la raccolta dei dati di telemetria:

Passaggi successivi

Per ulteriori informazioni su Google Cloud Observability, consulta Observability in Google Cloud.