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.
Activation de la corrélation entre suivis et journaux
Vous pouvez activer la corrélation entre suivis et journaux dans la vigie applicative. Cette fonctionnalité insère automatiquement les identifiants de suivi et d’intervalle dans les journaux concernés de l’application. Ainsi, lorsque vous ouvrez la page de détails d’un suivi dans la console de la vigie applicative, les entrées de journaux associées (le cas échéant) s’affichent automatiquement avec le suivi en cours au bas de la page.
Par exemple, supposons que vous remarquiez un pic de latence dans un graphique de latence. Vous pouvez sélectionner le point correspondant sur le graphique pour charger les informations de diagnostic associées à ce moment précis. Vous sélectionnez ensuite le suivi correspondant pour obtenir plus d’informations. Lorsque vous consultez les informations de suivi, vous pouvez faire défiler l’écran vers le bas pour voir les journaux associés au suivi. Ces journaux peuvent révéler des motifs récurrents ou des codes d’erreur associés aux problèmes ayant provoqué le pic de latence.
Instrumentez votre application avant de configurer la corrélation des journaux de suivi
Votre application doit déjà être instrumentée pour les signaux d'application avant de configurer la corrélation des journaux de suivi. L'instrumentation Application Signals permet de renseigner les valeurstrace_id,span_id, et trace_flags MDC au moment de l'exécution. Sans instrumentation, ces valeurs restent vides (par exempletrace_id=) et la corrélation ne fonctionne pas.
Pour établir la corrélation entre les suivis et les journaux, la vigie applicative s’appuie sur :
Instrumentation automatique Logger MDC
pour Java. OpenTelemetry Instrumentation de journalisation
pour Python. Les auto-instrumentations Pino
, Winston ou Bunyan pour. Node.js
La OpenTelemetry communauté fournit toutes ces instrumentations. La vigie applicative les utilise pour injecter les contextes de suivi, comme l’identifiant de suivi et l’identifiant d’intervalle, dans les journaux de l’application. Pour activer cette fonctionnalité, vous devez modifier manuellement la configuration de journalisation afin d’activer l’instrumentation automatique.
Selon l’architecture sur laquelle votre application s’exécute, il peut aussi être nécessaire de définir une variable d’environnement pour activer la corrélation entre suivis et journaux, en plus de suivre les étapes décrites dans cette section.
Sur Amazon EKS, aucune variable d'environnement supplémentaire n'est requise. Vous devez toujours configurer votre sortie de journalisation comme décrit dans les exemples suivants, et votre enregistreur doit écrire sur stdout afin que Container Insights puisse collecter les journaux.
Sur Amazon ECS, aucune variable d'environnement supplémentaire n'est requise. Vous devez toujours configurer votre sortie de journalisation comme décrit dans les exemples suivants, et votre enregistreur doit écrire sur stdout afin que Container Insights puisse collecter les journaux.
Sur Amazon EC2, reportez-vous à l’étape 4 de la procédure décrite dans Étape 3 : instrumenter votre application et la démarrer.
OpenTelemetry Container Insights n'active pas automatiquement la corrélation des journaux de suivi
L'activation du chemin de collecte des journaux OpenTelemetry-based Container Insights (par exemple, via le module complémentaire CloudWatch Observability EKS) permet de collecter et d'expédier les journaux de vos conteneurs vers CloudWatch Logs, mais cela n'instrumente pas votre application pour les signaux d'application et n'injecte pas de contexte de trace dans ces journaux. Pour corréler les traces avec les journaux, vous devez activer séparément l'instrumentation Application Signals et configurer votre modèle de journalisation comme décrit sur cette page.
Une fois que vous avez activé la corrélation des journaux de suivi, lorsque vous ouvrez une page détaillée de suivi, toutes les entrées de journal contenant le même ID de trace apparaissent automatiquement en bas de la page. Grâce à la corrélation des journaux de suivi, vous pouvez rapidement passer d'une trace aux journaux d'application concernés sans effectuer de recherche manuelle.
Exemples de configuration de la corrélation entre suivis et journaux
Cette section présente des exemples de configuration de la corrélation entre suivis et journaux dans différents environnements.
Spring Boot pour Java
Supposons que vous disposiez d’une application Spring Boot dans un dossier appelé custom-app. La configuration de l’application est généralement un fichier YAML appelé custom-app/src/main/resources/application.yml, qui pourrait ressembler à ceci :
spring: application: name: custom-app config: import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/} ...
Pour activer la entre suivis et journaux, ajoutez la configuration de journalisation suivante.
spring: application: name: custom-app config: import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/} ... logging: pattern: level: trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p
Spring Boot et la configuration XML sont des alternatives
L'approche Spring Boot application.yml (logging.pattern.level) et les approches de configuration Logback/Log4j2/Log4j XML présentées dans les sections suivantes constituent des alternatives. Utilisez l'un ou l'autre, pas les deux. Si vous définissez le modèleapplication.yml, la configuration Logback par défaut de Spring Boot le récupère automatiquement et aucune distinction n'logback.xmlest nécessaire.
EKS et ECS : écriture des journaux sur stdout
Container Insights collecte les journaux depuis le conteneur stdout/stderr, et non depuis les fichiers écrits à l'intérieur du conteneur. Configurez votre enregistreur pour écrire sur la console (stdout). Une FileAppender écriture dans un fichier tel que app.log produit des lignes correctement étiquetées, mais elles ne sont pas collectées et n'apparaissent pas corrélées sur la page détaillée de la trace. Si vous devez vous connecter à un fichier, vous devez également envoyer ce fichier (par exemple, un collecteur de sidecar lisant un volume partagé), ce qui sort du cadre de cette page.
Logback pour Java
Dans la configuration de journalisation (par exemple logback.xml), insérez le contexte de suivi trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p dans le pattern de l’encodeur. Par exemple, la configuration suivante ajoute le contexte de suivi avant le message du journal.
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n</pattern> </encoder> </appender>
Pour plus d’informations sur les encodeurs dans Logback, consultez la section Encodeurs
Log4j2 pour Java
Dans la configuration de journalisation (par exemple log4j2.xml), insérez le contexte de suivi trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p dans PatternLayout. Par exemple, la configuration suivante ajoute le contexte de suivi avant le message du journal.
<Appenders> <Console name="CONSOLE" target="SYSTEM_OUT"> <PatternLayout pattern="trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n"/> </Console> </Appenders>
Pour plus d’informations sur la disposition des modèles dans Log4j2, consultez Disposition des modèles
Log4j pour Java
Dans la configuration de journalisation (par exemple log4j.xml), insérez le contexte de suivi trace_id=%X{trace_id} span_id=%X{span_id} trace_flags=%X{trace_flags} %5p dans PatternLayout. Par exemple, la configuration suivante ajoute le contexte de suivi avant le message du journal.
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender"> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="trace_id=%X{trace_id} span_id=%X{span_id} trace_flags=%X{trace_flags} %5p - %m%n"/> </layout> </appender>
Pour plus d’informations sur la disposition des modèles dans Log4j, consultez Disposition des modèles
Python
Définissez la variable d’environnement OTEL_PYTHON_LOG_CORRELATION sur true lors de l’exécution de votre application. Pour plus d'informations, consultez la section Activer l'injection de contexte de trace
Node.js
Pour plus d'informations sur l'activation de l'injection de contexte de trace dans Node.js les bibliothèques de journalisation qui la prennent en charge, consultez les documentations d'utilisation du NPM des auto-instrumentations Pino
Vérifiez la configuration
Après avoir redéployé votre application, vérifiez qu'une ligne de journal affiche désormais une valeur renseignée trace_id (par exemple, en cours d'exécutionkubectl logs ). Ouvrez ensuite une page détaillée de suivi dans la console Application Signals et vérifiez que les entrées de journal corrélées apparaissent en bas de la page.pod-name
Sur Amazon EKS, les journaux sont écrits dans le groupe de journaux de l'application Container Insights (/aws/containerinsights/ou cluster-name/application/aws/otel/containerinsights/ lorsque le chemin du journal OpenTelemetry Container Insights est activé).cluster-name/application