Corréler les métriques et les traces à l'aide d'exemples

Ce document décrit les exemples, qui sont des exemples de points de données associés à un point de données de métrique. Les exemples peuvent être utilisés pour stocker un lien vers une trace, ce qui vous permet de mettre en corrélation vos données de métrique et de trace. Ce document explique également comment utiliser OpenTelemetry pour générer des exemples.

À propos des exemples

Les exemples permettent d'associer des données arbitraires à des données de métriques. Vous pouvez les utiliser pour associer des données non métriques à des mesures. Les exemples peuvent être utilisés pour associer des données de trace à des données de métriques. Dans Cloud Monitoring, vous pouvez associer des exemples à des données de métrique ayant le type de valeur Distribution. Les métriques à valeur de distribution collectent de nombreuses mesures et les regroupent dans des buckets. Chaque "point" est un histogramme, c'est-à-dire un tableau qui liste le nombre de buckets. Les mesures réelles ne sont pas conservées, mais uniquement les totaux des buckets. Pour en savoir plus, consultez la section À propos des métriques de valeur de distribution.

Lorsqu'un point de données de métrique est écrit, un tableau d'objets Exemplar peut être associé à ces données. Lorsqu'ils sont utilisés, les exemples associent des informations utiles aux données de métriques. Par exemple, lorsqu'OpenTelemetry écrit un exemple, il associe un lien au segment actuel d'une trace.

Les données d'histogramme sont généralement affichées à l'aide d'une carte de densité. Lorsqu'un "point" contient un exemple, Cloud Monitoring ajoute un point à la carte de densité:

  • Pour afficher des informations récapitulatives sur le point de métrique, activez l'info-bulle de l'annotation.
  • Pour accéder à la trace, sélectionnez l'annotation.

Par exemple, l'application exemple décrite dans la section Générer des traces et des métriques avec Go utilise OpenTelemetry pour écrire des données de métrique, de trace et d'exemple. La capture d'écran suivante montre la valeur de la métrique prometheus/http_server_duration_milliseconds/histogram après plusieurs exécutions de l'application:

Exemple de carte de densité montrant plusieurs exemples.

La capture d'écran précédente en montre plusieurs. L'info-bulle d'un exemple est développée et affiche la date, le nom de la trace, les percentiles et une valeur de latence.

Lorsque l'annotation est sélectionnée, la trace associée dans l'exemple s'affiche:

Exemple de détails de la trace pour un exemple.

Lorsque les informations affichées ne sont pas assez détaillées, vous pouvez sélectionner Afficher dans Trace, qui ouvre la page Explorateur Trace. Sur cette page, vous pouvez afficher les attributs de traçage et accéder aux liens vers les entrées de journal.

Activer les exemples OpenTelemetry

Comme l'illustre l'exemple précédent, vous pouvez configurer OpenTelemetry pour écrire des exemples qui associent le segment actuel d'une trace à une mesure de métrique. Toutefois, pour que des exemples soient rédigés, vous devez effectuer les opérations suivantes:

  1. Configurez les SDK de métrique et de trace OpenTelemetry.
  2. Pour inclure des exemples dans votre instrumentation personnalisée, vous devez vous assurer que la métrique est enregistrée dans un segment et de transmettre le contexte du segment avec la mesure de métrique.

    Par exemple, la fonction computeSubrequests suit les conseils précédents. La fonction subRequestsHistogram.Record est appelée après tracer.Start et avant span.End, qui est différée. Notez également que le contexte, ctx, est transmis de tracer.Start à la fonction 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
    }
    

    Pour en savoir plus sur cet exemple, consultez la section Ajouter des traces et des métriques personnalisées à votre application.

Étape suivante