로그는 애플리케이션 로그, 장치 생성 이벤트 또는 시스템 로그를 나타낼 수 있습니다. OpenTelemetry는 로그 데이터를 나타내기 위한 로그 데이터 모델을 정의했습니다.
OpenTelemetry 툴을 사용해 로그를 전송하고 이를 애플리케이션과 상호 연관시킨 후 뉴렐릭에서 볼 수 있습니다.
뉴렐릭에 로그 보내기
OpenTelemetry Collector 및 OpenTelemetry Collector Contrib 리포지토리에는 로그 데이터를 사용하기 위한 여러 구성 요소가 포함되어 있습니다.일반적인 패턴은 수집기를 다음과 같이 구성하는 것입니다.
- 모든 로그 수신자로부터 로그를 수신합니다. 일부 수신기 옵션에는 Filelog Receiver, Fluent Forward Receiver 및 Syslog Receiver가 포함됩니다.
- 로그를 처리하여 잠재적으로 리소스 정보로 주석을 추가합니다. 일부 프로세서 옵션에는 리소스 감지 프로세서 및 리소스 프로세서가 포함됩니다.
- OTLP 내보내기를 통해 로그를 뉴렐릭으로 내보냅니다.
애플리케이션 로그들을 상호 연결
애플리케이션 로그는 애플리케이션에서 생성된 다른 텔레메트리 데이터와 상호 연관이 되면 더 유용해집니다. 서비스에 대한 OpenTelemetry 시맨틱 규칙은 service.name
을 필수 필드로 지정합니다. 동일한 service.name
과 함께 뉴렐릭으로 전송된 모든 애플리케이션 메트릭, 트레이스 및 로그 데이터는 동일한 엔터티와 연관됩니다.
service.name
리소스 속성으로 로그에 주석을 추가하는 세부적인 방법은 애플리케이션의 환경에 따라 다릅니다.
- 애플리케이션은
service.name
을 다른 필드로 포함하도록 구성할 수 있는 구조화된 JSON 로그를 생성할 수 있습니다. - 전용 Collector 에이전트 인스턴스와 함께 애플리케이션을 배포할 수 있습니다. 이 인스턴스는
service.name
속성으로 로그에 주석을 추가하도록 리소스 프로세서로 구성할 수 있습니다.
선택적으로 추가 애플리케이션 트레이스 컨텍스트(실행 컨텍스트라고도 함)를 로그 메시지로 전달할 수 있습니다. 그 설정 및 가용성은 애플리케이션에서 사용하는 언어 및 로깅 프레임워크에 따라 다릅니다. 일반적인 전략은 정형화된 JSON 로그를 작성하도록 애플리케이션을 설정하고 트레이스 컨텍스트를 사용 가능한 로그 메시지에 지정된 트레이스 컨텍스트 필드로 추출하도록 구성하는 것입니다. 보다 자세한 내용은 UI의 OpenTelemetry: 로그 페이지를 참조하십시오.
GitHub의 Log4j2와 문맥적 로그 예시는 Log4j2를 사용하는 간단한 Java 애플리케이션에 대한 포괄적인 작업 예시를 보여줍니다.
OpenTelemetry 로그 확인
다음은 로그를 확인하는 두 가지 방법입니다.
- 로그 UI를 살펴봅니다.
- 로그가 애플리케이션과 상호 연관되어 있는 경우 애플리케이션의 문맥으로 로그를 봅니다.
타임 필드
timeUnixNano
필드는 로그 데이터에 대한 OpenTelemetry 사양에 따라 선택 사항입니다. timeUnixNano
가 없으면 뉴렐릭 로그 타임스탬프로 데이터를 수신한 시간이 사용됩니다.