Tracing - AWS Conseils prescriptifs

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Tracing

Le traçage implique l'utilisation spécialisée des informations de journalisation relatives aux processus d'un programme. Les informations issues des journaux peuvent aider les ingénieurs à déboguer des transactions individuelles et à identifier les goulots d'étranglement. Le traçage peut être activé automatiquement ou à l'aide d'instruments manuels.

Comme une application s'intègre à différents services, il est important d'identifier les performances de l'application et de ses services sous-jacents. Le traçage fonctionne avec les traces et les étendues. Une trace est le processus de demande complet, et chaque trace est composée de plages. Un intervalle est un intervalle de temps étiqueté et représente l'activité au sein des différents composants ou services d'un système. Les traces fournissent une vue d'ensemble de ce qui se passe lorsqu'une demande est envoyée à une application.

L'équipe de candidature

Les développeurs d'applications instrumentent leurs applications en envoyant des données de suivi pour les demandes entrantes et sortantes et d'autres événements au sein de l'application, ainsi que des métadonnées relatives à chaque demande. Pour générer des traces, une application doit être instrumentée pour générer des traces. L'instrumentation peut être automatique ou manuelle.

Instrumentation automatique

Vous pouvez collecter des données télémétriques à partir d'une application à l'aide d'instruments automatiques sans avoir à modifier le code source. Les agents d'instrumentation automatique peuvent générer des traces d'application d'une application ou d'un service. Généralement, vous utilisez les modifications de configuration pour ajouter l'agent ou un autre mécanisme.

L'instrumentation de bibliothèque implique d'apporter des modifications minimales au code d'application pour ajouter une instrumentation prédéfinie. L'instrumentation cible des bibliothèques ou des frameworks spécifiques, tels que le AWS SDK, les clients HTTP Apache ou les clients SQL.

Instrumentation manuelle

Dans cette approche, les développeurs d'applications ajoutent du code d'instrumentation à l'application à chaque emplacement où ils souhaitent collecter des informations de suivi. Par exemple, utilisez la programmation orientée aspect (AOP) pour collecter des données AWS X-Ray de suivi. Les développeurs peuvent utiliser les SDK pour instrumenter leurs applications.

Echantillonnage

Les données de suivi sont souvent générées en gros volumes. Il est important de disposer d'un mécanisme permettant de déterminer si les données de suivi doivent être exportées ou non. L'échantillonnage est le processus qui permet de déterminer quelles données doivent être exportées. Cela est généralement fait pour réduire les coûts. En personnalisant les règles d'échantillonnage, vous pouvez contrôler la quantité de données que vous enregistrez. Vous pouvez également modifier le comportement d'échantillonnage sans modifier ni redéployer votre code. Il est important de contrôler le taux d'échantillonnage pour générer la bonne quantité de traces.

Les développeurs d'applications peuvent annoter les traces en ajoutant des métadonnées sous forme de paires clé-valeur. Les annotations enrichissent les traces et aident à affiner le filtrage dans le backend.

DevOps équipe

DevOps les ingénieurs sont souvent invités à configurer un environnement de traçage permettant au développeur d'applications de visualiser les traces de l'infrastructure et des applications. La configuration de l'environnement de suivi implique de collecter des données de suivi provenant de différentes sources et de les envoyer à un magasin central à des fins de visualisation.

Backend de suivi

Un backend de suivi est un service tel AWS X-Ray que celui qui collecte des données sur les demandes traitées par votre application. Il fournit des outils que vous pouvez utiliser pour visualiser, filtrer et obtenir des informations sur ces données afin d'identifier les problèmes et les opportunités d'optimisation. Pour toute demande retracée envoyée à votre application, vous pouvez consulter des informations détaillées sur la demande et la réponse, ainsi que sur les autres appels que votre application fait aux AWS ressources en aval, aux microservices, aux bases de données et aux API Web.

Automatiser le traçage

Étant donné que les différentes applications ont des exigences de suivi différentes, il est important d'automatiser la configuration et le fonctionnement de l'infrastructure de suivi. Utilisez les outils IaC pour approvisionner le backend de l'infrastructure de suivi.

Utilisez des pipelines de CD pour automatiser les opérations suivantes :

  • Déployez l'infrastructure de suivi à la demande et démontez-la lorsqu'elle n'est pas nécessaire.

  • Déployez la configuration de suivi dans toutes les applications.

Outils de traçage

AWS fournit les services suivants pour le traçage et la visualisation associée :

  • AWS X-Ray reçoit des traces de votre application, en plus des traces des AWS services utilisés par votre application qui sont déjà intégrés à X-Ray. Il existe plusieurs SDK, agents et outils qui peuvent être utilisés pour équiper votre application de traçage par rayons X. Pour en savoir plus, consultez la documentation AWS X-Ray.

    Les développeurs peuvent également utiliser AWS X-Ray les SDK pour envoyer des traces à X-Ray. AWS X-Ray fournit des SDK pour GoJava, Node.jsPython, .NET etRuby. Chaque kit de développement X-Ray fournit les éléments suivants :

    • Des intercepteurs à ajouter à votre code pour suivre les demandes HTTP entrantes

    • Des gestionnaires de clients pour instrumenter les clients du AWS SDK que votre application utilise pour appeler d'autres services AWS

    • Un client HTTP pour instrumenter les appels vers d'autres services Web HTTP internes et externes

    Les SDK X-Ray prennent également en charge l'instrumentation des appels aux bases de données SQL, l'instrumentation client automatique des AWS SDK et d'autres fonctionnalités. Au lieu d'envoyer les données de suivi directement à X-Ray, le SDK envoie des documents de segments JSON à un processus démon qui écoute le trafic UDP. Le daemon X-Ray met en mémoire tampon les segments d'une file d'attente et les télécharge dans X-Ray par lots. Pour plus d'informations sur l'instrumentation de votre application à l'aide d'un SDK X-Ray, consultez la documentation de X-Ray.

  • Amazon OpenSearch Service est un service AWS géré permettant d'exécuter et de dimensionner OpenSearch des clusters, qui peut être utilisé pour stocker de manière centralisée les journaux, les métriques et les traces. Le plugin Observability offre une expérience unifiée pour la collecte et la surveillance des métriques, des journaux et des traces provenant de sources de données communes. La collecte et la surveillance des données en un seul endroit offrent une end-to-end observabilité complète de l'ensemble de votre infrastructure. Pour plus d'informations sur la mise en œuvre, consultez la documentation du OpenSearch service.

  • AWS Distro for OpenTelemetry (ADOT) est une AWS distribution basée sur le projet Cloud Native Computing Foundation (CNCF). OpenTelemetry ADOT inclut actuellement le support de l'instrumentation automatique pour Java et Python. En outre, ADOT prend en charge l'instrumentation automatique des AWS Lambda fonctions et de leurs requêtes en aval à l'aide Java de Node.js et d'environnements d'Pythonexécution, via des couches Lambda gérées par ADOT. Les développeurs peuvent utiliser le collecteur ADOT pour envoyer des traces vers différents backends, notamment AWS X-Ray Amazon OpenSearch Service.

    Pour un exemple de référence expliquant comment instrumenter votre application à l'aide du SDK ADOT, consultez la documentation. Pour un exemple de référence expliquant comment utiliser le SDK ADOT pour envoyer des données à Amazon OpenSearch Service, consultez la documentation du OpenSearch service.

    Pour un exemple de référence expliquant comment instrumenter votre application exécutée sur Amazon EKS, consultez le billet de blog Metrics and traces collection using Amazon EKS add-ons for AWS Distro for OpenTelemetry.