L'ajout d'une instrumentation OpenTelemetry personnalisée au code de votre application vous permet d'enregistrer des segments de trace et des métriques personnalisés qui mesurent le comportement spécifique à l'application au-delà de ce que collectent les bibliothèques de framework standards. Vous pouvez appliquer les concepts de ce document aux applications écrites dans n'importe quel langage compatible avec OpenTelemetry. Pour en savoir plus, consultez Observabilité pour les développeurs d'applications et Choisir une approche d'instrumentation.
Les exemples de ce document utilisent l'exemple d'application Go décrit dans Exemple d'instrumentation Go, disponible sur GitHub.
Avant de commencer
Activez les API Cloud Logging, Cloud Monitoring et Cloud Trace, si elles ne le sont pas déjà.
Rôles requis pour activer les API
Pour activer des API, vous devez disposer de l'autorisation serviceusage.services.enable. Si vous avez créé le projet, vous disposez probablement déjà de cette autorisation via le rôle Propriétaire (roles/owner). Sinon, vous pouvez l'obtenir via le rôle Administrateur Service Usage (roles/serviceusage.serviceUsageAdmin). Découvrez comment attribuer des rôles.
Créer des traces personnalisées
Pour générer des traces personnalisées à partir de votre application, ajoutez les éléments suivants au code d'instrumentation qui crée des segments OpenTelemetry. Dans OpenTelemetry, les segments sont les éléments de base des traces.
Pour créer un segment, procédez comme suit :
Modifiez votre application pour acquérir un
TracerOpenTelemetry. Dans OpenTelemetry, un traceur est un créateur de segments. Vous pouvez vous procurer un traceur comme indiqué dans le code suivant. Pour afficher l'exemple complet, sélectionnez le logo GitHub dans la barre d'outils de l'exemple.Le nom du traceur, représenté par
scopeName, identifie le champ d'application d'instrumentation des traces générées.Utilisez l'instance
tracerpour créer des segments. Dans l'exemple de code suivant, la fonctioncomputeSubrequestsgénère un segment chaque fois qu'elle est appelée :Dans l'exemple de code précédent, le segment généré à partir de la fonction
computeSubrequestsreprésente le travail effectué par l'ensemble de la fonction. En effet, la première étape de la fonction consiste à démarrer un nouveau segment à l'aide detracer.Start, et le mot clédeferavant l'élémentspan.End()garantit que le segment prend fin juste avant la fin de la fonction.
Création de métriques personnalisées
Pour générer des métriques à partir de votre application, vous devez ajouter un code d'instrumentation qui enregistre les mesures effectuées lors de l'exécution de votre application.
Pour créer des métriques, procédez comme suit :
Modifiez votre application pour acquérir un
MeterOpenTelemetry. Dans OpenTelemetry, un compteur permet d'accéder aux instruments de métrique pour enregistrer des métriques. Vous pouvez acquérir un compteur comme illustré dans le code suivant :Le nom du compteur, représenté par
scopeName, identifie le champ d'application d'instrumentation des métriques générées.Utilisez l'instance
meterpour créer des instruments capables d'enregistrer des métriques. Par exemple, le code suivant utilisemeterpour créer un histogramme OpenTelemetry :Le code précédent génère un histogramme nommé
sleepHistogram.Utilisez l'instance
sleepHistogrampour enregistrer le temps de mise en veille, qui est déterminé lorsque la fonctionrandomSleepest appelée :Les métriques enregistrées par ces outils sont exportées de votre application sur la base de la configuration de votre exportateur OpenTelemetry.