Correlare metriche e tracce utilizzando degli esempi

Questo documento descrive gli esempi, che sono punti dati di esempio allegati a un punto dati della metrica. Un uso degli esemplari è archiviare un link a una traccia, che ti consente di correlare i dati delle metriche e di traccia. Questo documento include inoltre descrive come utilizzare OpenTelemetry per generare esempi.

Informazioni sugli esempi

Gli esempi sono un modo per associare dati arbitrari ai dati delle metriche. Puoi utilizzare la modalità per collegare dati non metriche alle misurazioni. Un uso degli esemplari consiste nell'associare i dati di traccia ai dati delle metriche. In Cloud Monitoring, gli esempi possono essere collegato ai dati delle metriche con Distribution tipo di valore. Le metriche basate sul valore della distribuzione raccolgono molte misurazioni e raggruppano in bucket. Ogni "punto" è un istogramma, ovvero un array che elenca i conteggi dei bucket. Le misurazioni effettive non vengono conservati, vengono conteggiati solo i bucket. Per ulteriori informazioni, vedi Informazioni sulle metriche basate sul valore di distribuzione.

Quando viene scritto un punto dati di una metrica, viene generato un array di Exemplar. collegabili a questi dati. Gli esemplari, se utilizzati, aggiungere informazioni utili ai dati delle metriche. Ad esempio: quando OpenTelemetry scrive un esempio, allega un link intervallo di una traccia.

I dati dell'istogramma vengono generalmente visualizzati utilizzando una mappa termica. Se un "punto di accesso" contiene un esempio, Cloud Monitoring annota la mappa termica con un punto:

  • Per visualizzare le informazioni di riepilogo sul punto della metrica, attiva la descrizione comando per l'annotazione.
  • Per accedere alla traccia, seleziona l'annotazione.

Ad esempio, l'applicazione di esempio descritta in Genera tracce e metriche con Go utilizza OpenTelemetry per scrive dati di metriche, dati di traccia ed esempi. Il seguente screenshot mostra il valore dell'attributo prometheus/http_server_duration_milliseconds/histogram metrica dopo diverse esecuzioni dell'applicazione:

Esempio di mappa termica che mostra più esempi.

Lo screenshot precedente mostra più esempi. Descrizione comando per un esempio è espanso e mostra la data, il nome della traccia, i percentili e un valore di latenza.

Quando l'annotazione è selezionata, viene visualizzata la traccia collegata nell'esempio:

Esempio dei dettagli della traccia per un esempio.

Se le informazioni visualizzate non sono sufficientemente dettagliate, puoi selezionare Visualizza in Trace, che apre la pagina Esplora tracce. In questa pagina puoi visualizzare gli attributi della traccia e accedere ai link alle voci di log.

Come abilitare gli esempi OpenTelemetry

Come illustrato nell'esempio precedente, è possibile configurare OpenTelemetry per scrivi esempi che collegano l'intervallo corrente di una traccia a un la misurazione delle metriche. Tuttavia, per poter scrivere degli esemplari, devi seguire seguenti:

  1. Configura sia la metrica OpenTelemetry sia gli SDK di traccia.
  2. Per includere esempi nella tua strumentazione personalizzata, assicura che la metrica venga registrata in un intervallo e che passi il contesto dall'intervallo con la misurazione della metrica.

    Ad esempio, la funzione computeSubrequests segue la precedente guida. La funzione subRequestsHistogram.Record viene richiamata dopo tracer.Start e prima del giorno span.End, che viene differito. Nota anche che il contesto, ctx, viene passato da tracer.Start a la funzione Record:

    func computeSubrequests(r *http.Request, subRequests int) error {
    	// Add custom span representing the work done for the subrequests
    	ctx, span := tracer.Start(r.Context(), "subrequests")
    	defer span.End()
    
    	// Make specified number of http requests to the /single endpoint.
    	for i := 0; i < subRequests; i++ {
    		if err := callSingle(ctx); err != nil {
    			return err
    		}
    	}
    	// record number of sub-requests made
    	subRequestsHistogram.Record(ctx, int64(subRequests))
    	return nil
    }
    

    Per ulteriori informazioni su questo esempio, vedi Aggiungi tracce e metriche personalizzate all'app.

Passaggi successivi