OpenTelemetry와 New Relic One을 사용한 애플리케이션 문제 해결 가속화

Published 8분 소요

OpenTelemetry provides community-contributed instrumentation that standardizes telemetry data collection from your applications and services, without vendor lock-in. With OpenTelemetry tracing already stable and metrics stability fast approaching, New Relic now provides an enhanced OpenTelemetry offering that includes support for OpenTelemetry Protocol (OTLP) over HTTP/1.1 and infinite tracing along with curated experiences for the ingested data. This offering enables faster troubleshooting and provides a seamless transition to OpenTelemetry.

OpenTelemetry와 New Relic One으로 시작하는 방법

OpenTelemetry를 시작하는 가장 좋은 방법은 자체 애플리케이션과 서비스로 시도를 해 보는 것입니다. 이러한 방식으로 계측을 통해 즉시 가치를 얻을 수 있으며, 이미 익숙한 툴로 계측 서비스를 사용할 수 있습니다.

그렇지 않은 경우, 뉴렐릭의 Online Boutique 클라우드 네이티브 마이크로서비스 를 데모 애플리케이션으로 사용하거나, 뉴렐릭의 OpenTelemetry 예시를 사용해보시기 바랍니다.

 

데이터 인제스트

OpenTelemetry SDK/API로 서비스를 계측한 후에는, 네이티브 OTLP 엔드포인트를 사용해 데이터를 New Relic One으로 인제스트할 수 있습니다. OTLP 엔드포인트로 데이터를 인제스트하려면 몇 가지 간단한 단계를 거쳐야 합니다.

  1. OTLP(권장) 또는 OTLP/HTTP 엑스포터에서 해당 뉴렐릭 OTLP 엔드포인트 otlp.nr-data.net:4317또는 https://otlp.nr-data.net:4318을 지정합니다.

  2. 헤더 속성 api-key를 추가합니다. 이 속성 값은 데이터를 전송할 뉴렐릭 계정의 계정 라이선스 키입니다.

OpenTelemetry 컬렉터를 사용하는 경우, otel-config.yaml 파일은 다음과 같은 모습이 될 수 있습니다.

exporters:
 otlp:
   endpoint: otlp.nr-data.net:4317
   headers:
     api-key: ${NEW_RELIC_LICENSE_KEY}

또는 OTLP/HTTP 엑스포터를 사용할 수도 있습니다.

exporters:
 otlphttp:
   endpoint: https://otlp.nr-data.net:4318
   headers:
     api-key: ${NEW_RELIC_LICENSE_KEY}

자세한 내용은 OpenTelemetry 퀵스타트 문서를 참조하십시오.

New Relic One을 통한 OpenTelemetry 데이터 조회

애플리케이션이 OpenTelemetry 데이터를 뉴렐릭에 전송하기 시작하면, 동적 UI에서 데이터를 즉시 확인하고, OpenTelemetry 속성(service.version,http.status_code, thread.name등을 사용해 응답 시간, 오류율, 처리량 등의 메트릭을 그룹화, 패싯 및 필터링할 수 있습니다. 문제 해결에 유용한 데이터베이스, 트랜잭션, 오류 및 분산 추적의 선별된 뷰도 확보할 수 있습니다. OpenTelemetry에 대한 이러한 선별된 경험이 모든 엔지니어들에게 어떤 편리함을 제공하는지 몇 가지 시나리오(마이크로서비스 데모 앱으로 설명)를 간략하게 소개합니다.

일상적인 환경 모니터링

운영/데브옵스 엔지니어는 전체 환경에서 어떤 일이 일어나고 있는지 정기적으로 파악할 필요가 있습니다. New Relic Explorer는 별도로 설정하지 않아도 모든 OpenTelemetry 데이터를 한 곳에서 제공합니다. 자산의 중요한 변경 사항이 모든 계정에서 강조 표시되기 때문에, 사전 설정된 한도나 정적인 대시보드에 의존하지 않고 새로운 문제를 실시간으로 파악할 수 있습니다. 때문에, 전체 환경의 변화와 상태를 한눈에 즉시 파악하고, 세부 사항을 확인하여, 문제를 더 빠르게 분석, 이해 및 해결할 수 있습니다. New Relic Explorer에는 전체 자산을 시각화, 탐색 및 이해하는 데 도움을 주는 몇 가지 새로운 접근 방식이 포함되어 있습니다.

  • New Relic Lookout은 모든 계정에 대한 실시간 뷰를 제공합니다. 별도로 설정하지 않아도 쉽게 이해 및 액세스가 가능한 사용자 환경에 텔레메트리 데이터의 모든 변경 사항을 강조 표시해줍니다. 최근 변경된 사항의 심각도와 규모를 각기 다른 색상과 크기의 원으로 직관적으로 시각화함으로써, 가장 필요한 부분에 주의를 집중할 수 있도록 합니다.
  • New Relic Navigator를 사용하면, 태그를 기반으로 특정 엔터티 그룹에 집중하여 모든 계정에서 OpenTelemetry 서비스의 상태를 신속하게 파악하고 문제가 발생한 서비스를 빠르게 분석할 수 있습니다. 다음 스크린샷에서는 일부 OpenTelemetry 서비스에 알람이 발생했음을 볼 수 있습니다.  

그러나 위의 이미지만 봐서는 알람 서비스들이 어떻게 연결되어 있는지 명확히 알 수 없습니다. New Relic Explorer으로 시스템을 한눈에 파악할 수는 있지만, 분산 아키텍처에서 여러 서비스와 그 종속성을 시각화하려면 어떻게 해야 할까요? 

AutoMaps바로 이러한 기능을 제공하여 성능 문제를 신속하게 파악하는 데 도움을 줍니다. AutoMap과 관련된 엔터티 위젯은 함께 다른 서비스들의 문제를 식별하고 서비스가 인프라 구성 요소에 어떻게 연결되어 있는지를 이해하는 데 도움이 됩니다.  

다음 스크린샷에 나오는 FrontEnd 서비스용 AutoMap은 AdService를 포함해 5개의 다른 서비스들 간의 종속성을 보여 줍니다. AutoMap은 근본 원인을 추적할 수 있는 경로를 제공합니다.

오류 진단

또한 OpenTelemetry 서비스에서 설정한 임계값에 기반해 오류를 발생시키도록 알람을 생성하여 오류를 진단할 수 있습니다. 이러한 OpenTelemetry 서비스의 상태 색상은 New Relic Explorer 또는 activity stream에 표시되며, 여기에서 심각한 위반 또는 경고 위반에 대한 세부 정보를 볼 수도 있습니다.

이전 스크린샷을 보면 AdService에 심각한 위반이 발생했고 activity stream의 오류율이 임계값을 넘어섰다는 것을 볼 수 있습니다. 오류가 있는 트레이스를 살펴보겠습니다. 

오류 트레이스를 클릭하면, 위의 그림처럼 상단에 트레이스 맵이 표시됩니다. 트레이스 맵을 사용하면 개별 스팬들과 함께 특정 요청(트레이스)의 실행에 관련된 모든 다양한 서비스를 시각화할 수 있습니다. 각 엔터티에 마우스를 올리면 풍부한 컨텍스트가 표시되며, 트레이스 컨텍스트를 벗어나지 않고도 엔터티별로 더 많은 세부 정보를 볼 수 있습니다. 이외에도 OpenTelemetry 계측으로 생성된 스택 트레이스를 포함해, 오류의 근본 원인을 파악하는 데 필요한 오류 세부 정보를 얻을 수 있습니다. 이 경우의 오류 세부 정보는 OpenTelemetry 사양에 따라 인제스트된 스팬 이벤트에 기반해 표출됩니다. 다음 스크린샷을 보면, 빨간색 상자에 추가적인 오류 세부 정보가 있음을 알 수 있습니다.

오류를 추적하는 것 이외에도, 로그를 스팬 이벤트로 인제스트하거나 지원되는 로그 포워더를 사용해 애플리케이션 로그를 New Relic One으로 전송하고 서비스 성능과 해당 로그를 상호 연결할 수 있습니다. 문맥적 로그를 사용하면, 아래처럼 조사 중인 트레이스와 관련된 특정 로그 줄로 직접 이동할 수 있어 문제를 보다 빠르게 해결할 수 있습니다. 

지속적으로 진화하는 뉴렐릭의 OpenTelemetry 사용자 인터페이스

OpenTelemetry 프로젝트가 지속적으로 성숙해가는 지금, New Relic One에서의 OpenTelemetry 지원 역시 지속적으로 진화하고 있습니다. 뉴렐릭의 목표는 엔지니어가 계측 소스에 관계없이 New Relic One의 모든 기능을 활용할 수 있도록 함으로써, 문제의 근본 원인을 알아내고 애플리케이션과 서비스의 성능을 최적화하는 데 필요한 데이터를 신속하게 발견할 수 있도록 하는 것입니다. 

OpenTelemetry와 New Relic One을 함께 사용하는 것에 대한 의견이 있으시면, New Relic One의 상단 메뉴에 있는 피드백 버튼을 클릭하여 소중한 피드백을 보내 주십시오.

아직 뉴렐릭을 사용하고 있지 않으시다면, 지금 바로 무료 계정을 신청하여 OpenTelemetry 데이터를 New Relic One 계정으로 보내십시오. 매달 100GB의 데이터를 무료로 사용할 수 있습니다.