Présentation des exemples d'instrumentation

Ce document décrit la structure des exemples d'instrumentation fournis pour les langages Go, Java, Node.js et Python. Ces exemples vous expliquent comment instrumenter une application.

Vous pouvez consulter d'autres exemples illustrant différentes configurations:

Fonctionnement des exemples

Les exemples pour Go, Java, Node.js et Python utilisent le protocole OpenTelemetry pour collecter des données de trace et de métrique. Les exemples configurent un framework de journalisation pour écrire des journaux structurés, et le collecteur OpenTelemetry est configuré pour lire à partir du flux stdout de l'application. Pour obtenir des recommandations de framework, consultez la section Choisir une approche d'instrumentation.

Les applications sont créées et déployées à l'aide de Docker. Vous n'avez pas besoin d'utiliser Docker lorsque vous instrumentez une application avec OpenTelemetry.

Vous pouvez exécuter les exemples dans Cloud Shell, sur des ressources Google Cloudou dans un environnement de développement local.

Analyse approfondie

Les exemples utilisent le collecteur OpenTelemetry comme sidecar pour recevoir et enrichir la télémétrie de l'application, qui est ensuite envoyée à votre projet Google Cloud à l'aide d'un exportateurGoogle Cloud . L'exportateur convertit la télémétrie en un format compatible avec l'API Cloud Trace, l'API Cloud Monitoring ou l'API Cloud Logging. Ensuite, ils envoient les données transformées à votre projet Google Cloud en émettant une commande API.

Les exemples montrent comment effectuer les opérations suivantes:

  1. Configurez OpenTelemetry pour collecter des métriques et des traces à l'aide du collecteur OpenTelemetry.

    Si vous examinez les exemples, vous remarquerez que la complexité de cette étape dépend de la langue. Par exemple, pour Go, cette étape configure la fonction main pour appeler une fonction qui configure la collecte des métriques et des traces. Pour Go, le serveur et le client HTTP sont également mis à jour.

  2. Configurez un framework de journalisation pour écrire des journaux structurés.

    Nous vous recommandons d'écrire des journaux structurés dans vos applications, ce qui permet de mettre en forme la charge utile du journal en tant qu'objet JSON. Pour ces journaux, vous pouvez créer des requêtes qui recherchent des chemins JSON spécifiques et vous pouvez indexer des champs spécifiques dans la charge utile du journal.

    Certains services, comme Google Kubernetes Engine, disposent d'agents intégrés qui extraient des journaux structurés et les envoient à votre projet Google Cloud. D'autres services, comme Compute Engine, nécessitent que vous installiez un agent, qui extrait et envoie vos journaux. Pour en savoir plus sur les agents que vous installez, consultez la présentation de l'agent Ops.

    Vous n'avez pas besoin d'installer d'agents pour utiliser ces exemples.

  3. Configurez les fichiers Docker. Tous les exemples contiennent les fichiers YAML suivants:

    • docker-compose.yaml: configure les services pour l'application, le collecteur OpenTelemetry et un générateur de charge. Par exemple, le service du collecteur OpenTelemetry, otelcol, spécifie une image, un volume et des variables d'environnement. Le point de terminaison du collecteur OpenTelemetry est défini par la variable d'environnement OTEL_EXPORTER_OTLP_ENDPOINT, qui est spécifiée dans le service app.

    • otel-collector-config.yaml: configure les récepteurs, les exportateurs, les processeurs et les pipelines.

      Le service telemetry définit des pipelines pour les données de trace, de métrique et de journal. Chaque entrée de pipeline spécifie un récepteur, un processeur et un exportateur. Le même récepteur, otlp, est utilisé pour les métriques et les traces.

      La section exporters explique comment les données collectées sont exportées vers un projet Google Cloud. Pour toute télémétrie, un exportateur Google Cloud est utilisé. L'exportateur convertit la télémétrie en un format compatible avec l'API Cloud Trace, l'API Cloud Monitoring ou l'API Cloud Logging. Ensuite, il envoie les données transformées à votre projet Google Cloud en émettant une commande API.

    • docker-compose.creds.yaml: ce fichier peut monter un fichier d'identifiantsGoogle Cloud dans le conteneur otelcol. Ce fichier est nécessaire lorsqu'un exemple est exécuté sur un ordinateur local où les identifiants par défaut de l'application (ADC) ne sont disponibles que sous forme de fichier.

Autorisations requises

Si vous exécutez les exemples dans Cloud Shell, sur des ressources Google Cloudou dans un environnement de développement local, les autorisations indiquées dans cette section sont suffisantes. Pour les applications de production, un compte de service fournit généralement les identifiants permettant d'écrire des données de journal, de métrique et de trace.

  • Pour obtenir les autorisations dont les applications exemple ont besoin pour écrire des données de journal, de métrique et de trace, demandez à votre administrateur de vous accorder les rôles IAM suivants sur votre projet:

API requises

Vous trouverez ci-dessous des informations sur les API requises pour envoyer des données de télémétrie à un projet Google Cloud:

Console Google Cloud

Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs.

Enable the APIs

Google Cloud CLI

Enable the Cloud Logging, Cloud Monitoring, and Cloud Trace APIs:

gcloud services enable logging.googleapis.com monitoring.googleapis.com cloudtrace.googleapis.com

Étape suivante