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

Ce document décrit les exemplaires, 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 corréler vos données de métriques et de trace. Ce document explique également comment utiliser OpenTelemetry pour générer des exemples.

À propos des exemples

Les émulateurs 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, les exemples peuvent être associés à des données de métriques dont le type de valeur est Distribution. Les métriques à valeur de distribution collectent de nombreuses mesures et les regroupent dans des buckets. Chaque "point" est un histogramme, qui est un tableau listant les nombres de buckets. Les mesures réelles ne sont pas conservées, seules les valeurs des buckets le sont. Pour en savoir plus, consultez À 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 exemplaire, il joint un lien vers la span actuelle 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 annote la carte de densité avec un point :

  • 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'exemple d'instrumentation Go utilise OpenTelemetry pour écrire des données de métriques, des données de trace et des exemples. 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 montre plusieurs exemples. L'info-bulle d'un exemple est développée et affiche la date, le nom de la trace, les centiles et une valeur de latence.

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

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

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 trace 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 l'étendue actuelle 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 trace et de métrique 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 Ajouter des traces et des métriques personnalisées à votre application.

Étape suivante