Abilitazione della correlazione tra traccia e log
In Application Signals è possibile abilitare la correlazione tra traccia e log. Questo inserisce automaticamente gli ID di traccia e gli ID di intervallo nei log delle applicazioni pertinenti. Dopodiché, quando si apre una pagina dei dettagli di traccia nella console Application Signals, le voci di log pertinenti (se presenti) correlate alla traccia corrente vengono visualizzate automaticamente nella parte inferiore della pagina.
Ad esempio, se noti un picco in un grafico di latenza, puoi selezionare il punto corrispondente sul grafico per caricare le informazioni di diagnostica relative a quel momento. Quindi puoi scegliere la traccia pertinente per ottenere maggiori informazioni. Quando visualizzi le informazioni relative alla traccia, puoi scorrere verso il basso per vedere i log associati alla traccia. Questi log potrebbero rivelare schemi o codici di errore associati ai problemi che causano il picco di latenza.
Per ottenere la correlazione tra traccia e log, Application Signals si basa su quanto segue:
Instrumentazione automatica Logger MDC
per Java. Instrumentazione di registrazione OpenTelemetry
per Python. Le instrumentazioni automatiche Pino
, Winston o Bunyan per Node.js.
Tutte queste instrumentazioni sono fornite dalla community OpenTelemetry. Application Signals le utilizza per inserire contesti di traccia come ID di traccia e ID di intervallo nei log delle applicazioni. Per abilitare la correlazione, è necessario modificare manualmente la configurazione di registrazione per abilitare l'instrumentazione automatica.
A seconda dell'architettura su cui viene eseguita l'applicazione, potrebbe essere necessario impostare anche una variabile di ambiente per abilitare la correlazione tra traccia e log, oltre a seguire i passaggi descritti in questa sezione.
Su Amazon EKS, non sono necessari ulteriori passaggi.
Su Amazon ECS, non sono necessari ulteriori passaggi.
Su Amazon EC2, consulta il passaggio 4 della procedura riportata in Passaggio 3: instrumentazione e avvio dell'applicazione.
Dopo aver abilitato la correlazione tra traccia e log,
Esempi di configurazione della correlazione tra traccia e log
Questa sezione contiene esempi di impostazione della correlazione tra traccia e log in diversi ambienti.
Spring Boot per Java
Supponiamo di avere un'applicazione Spring Boot in una cartella chiamata custom-app. La configurazione dell'applicazione è in genere un file YAML denominato custom-app/src/main/resources/application.yml che potrebbe somigliare a questo:
spring: application: name: custom-app config: import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/} ...
Per abilitare la correlazione tra traccia e log, aggiungi la seguente configurazione di registrazione.
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
Logback per Java
Nella configurazione di registrazione (come logback.xml), inserisci il contesto di traccia trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p nel pattern dell'Encoder. Ad esempio, la seguente configurazione antepone il contesto di traccia al messaggio di log.
<appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>app.log</file> <append>true</append> <encoder> <pattern>trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n</pattern> </encoder> </appender>
Per ulteriori informazioni sugli encoder in Logback, consulta Encoders
Log4j2 per Java
Nella configurazione di registrazione (come log4j2.xml), inserisci il contesto di traccia trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p nel PatternLayout. Ad esempio, la seguente configurazione antepone il contesto di traccia al messaggio di log.
<Appenders> <File name="FILE" fileName="app.log"> <PatternLayout pattern="trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n"/> </File> </Appenders>
Per ulteriori informazioni sui layout degli schemi in Log4j2, consulta Pattern Layout
Log4j per Java
Nella configurazione di registrazione (come log4j.xml), inserisci il contesto di traccia trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p nel PatternLayout. Ad esempio, la seguente configurazione antepone il contesto di traccia al messaggio di log.
<appender name="FILE" class="org.apache.log4j.FileAppender">; <param name="File" value="app.log"/>; <param name="Append" value="true"/>; <layout class="org.apache.log4j.PatternLayout">; <param name="ConversionPattern" value="trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p - %m%n"/>; </layout>; </appender>;
Per ulteriori informazioni sui layout degli schemi in Log4j, consulta Pattern Layout
Python
Imposta la variabile di ambiente OTEL_PYTHON_LOG_CORRELATION su true durante l'esecuzione dell'applicazione. Per ulteriori informazioni, consulta Enable trace context injection
Node.js
Per ulteriori informazioni sull'abilitazione dell'inserimento del contesto di traccia in Node.js per le librerie di registrazione che lo supportano, consulta la documentazione di NPM sull'utilizzo delle instrumentazioni automatiche Pino