Abilitazione della correlazione tra traccia e log - Amazon CloudWatch

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:

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.

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 nella documentazione di Logback.

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 nella documentazione di Log4j2.

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 nella documentazione di Log4j.

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 nella documentazione di OpenTelemetry relativa a Python.

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, Winston o Bunyan per Node.js.