Instrumentation et observabilité

L'instrumentation fait référence au code spécifique qui génère ou collecte des données sur le comportement d'exécution de votre application. À l'intérieur de votre application, l'instrumentation, telle que celle fournie par OpenTelemetry, peut collecter des informations spécifiques au domaine sur l'environnement d'exécution du langage, le framework ou la logique de l'application, puis envoyer ces données à un objet Google vers un projet Google Cloud ou vers une autre destination. Ces données, également appelées télémétrie, incluent des metriques, des journaux et des traces.

Les métriques au niveau du système, telles que l'utilisation du processeur, de la mémoire et du disque, sont utiles pour détecter les problèmes liés à votre application, mais elles ne fournissent pas de renseignements très précis sur les problèmes au niveau de l'application. L'instrumentation peut aider votre application à générer les données dont vous avez besoin pour diagnostiquer la cause première d'un problème, car la télémétrie obtenue vous montre ce qui se passe dans votre application. Par exemple, les journaux incluent souvent du contexte sur votre programme, comme un message d'erreur ou une trace de pile spécifique, ainsi que l'emplacement dans votre code source. De même, les traces distribuées vous permettent de comprendre comment plusieurs services interagissent lors du traitement des requêtes. Les métriques vous permettent de recevoir une notification lorsque votre application ne se comporte pas correctement.

Pour instrumenter votre application, vous devez générer des données de télémétrie et les envoyer à l'emplacement où les données peuvent être stockées et interrogées. Par exemple, votre instrumentation peut envoyer des données de télémétrie à un projet Google Cloud. Les services de Google Cloud Observability vous aident à collecter, analyser et mettre en corrélation des données de télémétrie. Ils fournissent également des valeurs par défaut intégrées pour vous aider à démarrer plus rapidement, telles que des tableaux de bord par défaut et des règles d'alerte. Pour en savoir plus sur Google Cloud Observability, consultez la page Observabilité dans Google Cloud.

La figure suivante montre comment une application utilise l'instrumentation pour générer et envoyer des données de télémétrie à un système de stockage :

Figure illustrant l'architecture d'une instrumentation en cours de traitement

Comme illustré dans la figure précédente, le code d'instrumentation existe dans le processus de votre application et interagit avec celle-ci pour générer des données de télémétrie. Le framework d'instrumentation exporte ensuite votre télémétrie vers un système de stockage configuré. Sur la figure, le système de stockage correspond à votre projet Google Cloud.

À propos des frameworks d'instrumentation neutres du point de vue des fournisseurs

Même si vous prévoyez de n'envoyer des données de télémétrie qu'à Google Cloud, nous vous recommandons d'utiliser un framework d'instrumentation Open Source neutre du point de vue du fournisseur pour instrumenter vos applications. Ces types de frameworks présentent des avantages essentiels :

Pas de dépendance vis-à-vis d'un fournisseur
Les frameworks neutres du point de vue des fournisseurs ne sont liés à aucun fournisseur particulier et fournissent leur propre modèle de données pour la télémétrie générée. Par conséquent, vous pouvez envoyer des données à plusieurs fournisseurs, et vous pouvez généralement changer le fournisseur que vous utilisez sans modifier votre code.
Procédures standardisées pour la collecte de données de télémétrie
Les frameworks bien conçus, tels qu'OpenTelemetry, fournissent une approche standardisée pour collecter la télémétrie à partir d'applications. Vous pouvez utiliser le même framework pour les applications écrites dans les langages compatibles. De plus, comme le framework est standardisé, vous pouvez collecter et comparer les données de télémétrie de tous vos services.
Bibliothèques interopérables
Les frameworks d'instrumentation incluent un riche écosystème de bibliothèques collectant des signaux de télémétrie, et ces bibliothèques sont interopérables. Par exemple, OpenTelemetry fournit des bibliothèques permettant de collecter des données de trace et de collecter des données de métriques. Vous pouvez utiliser l'une des bibliothèques ou les deux.

Recommandations générales

Cette section contient des recommandations générales sur la façon d'instrumenter votre application. Pour obtenir des conseils spécifiques à Google Cloud, consultez la page Choisir une approche d'instrumentation.

Pour collecter des métriques, nous vous recommandons d'utiliser OpenTelemetry ou Prometheus :

  • OpenTelemetry est un projet Open Source qui fournit un framework unifié pour l'instrumentation d'applications. Il fournit également des bibliothèques d'instrumentation pour les bibliothèques courantes. OpenTelemetry fournit un agent autonome, le collecteur OpenTelemetry, capable de recevoir, transformer et exporter des données de télémétrie. Le fichier de configuration du collecteur OpenTelemetry détermine le comportement du collecteur OpenTelemetry. Pour envoyer la télémétrie à un agent ou directement à un système de stockage, utilisez le protocole OTLP (OpenTelemetry Protocol).

  • Prometheus est un système de surveillance Open Source populaire. Vous pouvez utiliser les bibliothèques clientes Prometheus pour générer des métriques à partir de votre application. Il existe un écosystème tiers de bibliothèques d'instrumentation pour les frameworks courants. Les clients Prometheus exposent leurs métriques en tant que point de terminaison HTTP pouvant être récupéré par un agent.

Pour collecter des traces, nous vous recommandons d'utiliser OpenTelemetry.

Pour collecter des journaux, nous vous recommandons d'utiliser un framework pouvant être configuré pour générer des journaux structurés JSON pour Cloud Logging. Pour écrire des données de journal, nous vous recommandons de procéder comme suit :

Solutions Google Cloud

Google Cloud Observability propose des options flexibles pour collecter les données de télémétrie :

Étapes suivantes

Pour en savoir plus sur Google Cloud Observability, consultez la page Observabilité dans Google Cloud.