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

Vous pouvez utiliser des exemples pour corréler vos données de métriques et de traces. Un exemple est un échantillon représentatif de requête ou de segment associé à une mesure de métrique. Votre application peut créer des exemples et les associer à des données de métriques. Vous pouvez également demander à Google Cloud Observability de les générer de manière dynamique lors de la représentation graphique des résultats de requête. En associant un ID de trace individuel à une métrique agrégée, les exemples vous aident à identifier rapidement la cause première des pics de latence ou des erreurs.

Ce document explique comment configurer OpenTelemetry pour créer des exemples de trace et les associer à vos données de métriques.

Si vous représentez graphiquement les résultats de requête SQL sur un tableau de bord, Google Cloud Observability peut également générer automatiquement des exemples. Pour en savoir plus, consultez Générer et afficher des exemples de trace.

À 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 autres que des métriques à des mesures. Les exemples peuvent, par exemple, ê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 Distribution type de valeur est. 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 répertoriant les nombres de buckets. Les mesures réelles ne sont pas conservées, seuls les nombres de buckets le sont. Pour en savoir plus, consultez À propos des métriques à 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 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 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 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 le segment actuel d'une trace à une mesure de métrique. Toutefois, pour que les exemples soient écrits, vous devez procéder comme suit :

  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 instructions précédentes. 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