로그 상관 관계에 대한 추적 활성화 - Amazon CloudWatch

로그 상관 관계에 대한 추적 활성화

Application Signals에서 로그 상관 관계 추적을 활성화할 수 있습니다. 그러면 트레이스 ID와 범위 ID가 관련 애플리케이션 로그에 자동으로 삽입됩니다. 그런 다음 Application Signals 콘솔에서 트레이스 세부 정보 페이지를 열면 현재 트레이스와 상관 관계가 있는 관련 로그 항목(있는 경우)이 페이지 하단에 자동으로 표시됩니다.

예를 들어 지연 시간 그래프에서 급증을 발견했다고 가정해 보겠습니다. 그래프에서 특정 시점을 선택하여 해당 시점에 대한 진단 정보를 로드할 수 있습니다. 그런 다음 관련 트레이스를 선택하여 추가 정보를 얻습니다. 트레이스 정보를 볼 때 아래로 스크롤하여 트레이스와 관련된 로그를 볼 수 있습니다. 이러한 로그에는 지연 시간 급증을 일으키는 문제와 관련된 패턴이나 오류 코드가 표시될 수 있습니다.

추적 로그 상관관계를 달성하기 위해 Application Signals는 다음 사항을 사용합니다.

이러한 계측은 모두 OpenTelemetry 커뮤니티에서 제공됩니다. Application Signals는 이를 사용하여 트레이스 ID 및 범위 ID와 같은 트레이스 컨텍스트를 애플리케이션 로그에 삽입합니다. 이를 활성화하려면 자동 계측을 활성화하도록 로깅 구성을 수동으로 변경해야 합니다.

애플리케이션이 실행되는 아키텍처에 따라 이 섹션의 단계를 따르는 것 외에도 트레이스 로그 상관 관계를 활성화하도록 환경 변수를 설정해야 할 수도 있습니다.

  • Amazon EKS에서는 추가 단계가 필요하지 않습니다.

  • Amazon ECS에서는 추가 단계가 필요하지 않습니다.

  • Amazon EC2에서는 3단계: 애플리케이션 계측 후 시작 절차의 4단계를 참조하세요.

트레이스 로그 상관 관계를 활성화한 후

트레이스 로그 상관 관계 설정 예제

이 섹션에는 여러 환경에서 트레이스 로그 상관 관계를 설정하는 예가 포함되어 있습니다.

Java용 Spring Boot

custom-app이라는 폴더에 Spring Boot 애플리케이션이 있다고 가정해 보겠습니다. 애플리케이션 구성은 일반적으로 다음과 custom-app/src/main/resources/application.yml이라는 YAML 파일입니다.

spring: application: name: custom-app config: import: optional:configserver:${CONFIG_SERVER_URL:http://localhost:8888/} ...

트레이스 로그 상관 관계를 활성화하려면 다음 로깅 구성을 추가하세요.

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

Java용 Logback

로깅 구성(예: logback.xml)에서 트레이스 컨텍스트 trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5p를 인코더의 pattern에 삽입합니다. 예를 들어, 다음 구성은 로그 메시지 앞에 트레이스 컨텍스트를 추가합니다.

<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>

Logback의 인코더에 대한 자세한 내용은 Logback 설명서의 Encoders를 참조하세요.

Java용 Log4j2

로깅 구성(예: log4j2.xml)에서 트레이스 컨텍스트 trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5pPatternLayout에 삽입합니다. 예를 들어, 다음 구성은 로그 메시지 앞에 트레이스 컨텍스트를 추가합니다.

<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>

Log4j2의 패턴 레이아웃에 대한 자세한 내용은 Log4j2 설명서의 Pattern Layout을 참조하세요.

Java용 Log4j

로깅 구성(예: log4j.xml)에서 트레이스 컨텍스트 trace_id=%mdc{trace_id} span_id=%mdc{span_id} trace_flags=%mdc{trace_flags} %5pPatternLayout에 삽입합니다. 예를 들어, 다음 구성은 로그 메시지 앞에 트레이스 컨텍스트를 추가합니다.

<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>;

Log4j의 패턴 레이아웃에 대한 자세한 내용은 Log4j 설명서의 Class Layout을 참조하세요.

Python

애플리케이션을 실행하는 동안 환경 변수 OTEL_PYTHON_LOG_CORRELATIONtrue로 설정합니다. 자세한 내용은 Python OpenTelemetry 설명서의 Enable trace context injection을 참조하세요.

Node.js

추적 컨텍스트 주입을 지원하는 로깅 라이브러리에 대해 Node.js에서 이를 활성화하는 방법에 대한 자세한 내용은 Node.js용 Pino, Winston 또는 Bunyan 자동 계측의 NPM 사용 설명서를 참조하세요.