분산 추적 은 분산 시스템의 동작을 모니터링하고 분석하는 데 도움이 됩니다. 분산 추적을 활성화한 후 UI 도구를 사용하여 추적을 검색하고 분석할 수 있습니다.
여러 서비스에 걸쳐 있는 트랜잭션의 오류를 해결하려는 경우:
- 분산 추적 UI 페이지를 엽니다 .
- 필터를 사용 하여 추적을 정렬 하여 해당 특정 요청을 찾고 오류가 포함된 추적만 표시합니다.
- 추적 세부 정보 페이지 에서 오류가 발생한 요청 경로를 따라 범위를 검토합니다.
- 오류 클래스 및 메시지를 확인하고 추적의 해당 범위에서 서비스로 이동하여 오류가 높은 비율로 발생하고 있음을 확인할 수 있습니다.
분산 추적 UI의 옵션을 살펴보려면 계속 읽으십시오.
분산 추적 UI 열기
특정 서비스에 대한 추적을 보려면 다음 안내를 따르세요.
one.newrelic.com > All entities로 이동합니다.
왼쪽 패널의
Your system
에서 검사하려는 트레이스가 포함된 엔터티를 선택합니다.
왼쪽 창에서
Distributed tracing
클릭합니다.
또는 모든 계정의 추적을 보려면 다음을 수행하십시오.
one.newrelic.com > All Capabilities
으)로 이동합니다.
Traces
타일을 클릭합니다.
팁
추적의 일부 서비스에 대한 계정에 대한 액세스 권한이 없는 경우 해당 서비스에 대한 일부 세부 정보를 난독화합니다.
스팬 데이터 필터링
문제를 해결할 수 있도록 추적 및 범위를 찾는 데 도움이 되는 다양한 도구가 있습니다. 여는 분산 추적 페이지는 기본 추적 목록으로 채워집니다. 다음 도구를 사용하여 이 목록을 빠르게 구체화할 수 있습니다.
Find traces 쿼리 막대를 사용하면 트레이스 검색 범위를 빠르게 좁힐 수 있습니다. 쿼리 표시줄에서 입력을 시작하거나 드롭다운 메뉴를 사용하여 복합 쿼리를 만들 수 있습니다.
쿼리 반환은 추적 속성이 아닌 범위 속성을 기반으로 합니다. 특정 기준이 있는 범위를 정의하면 해당 범위가 포함된 추적이 검색에 표시됩니다.
다중 속성 필터를 사용하는 경우 선택한 첫 번째 속성의 영향을 받습니다. 분산 추적은 두 가지 유형의 데이터(트랜잭션 이벤트 및 범위)에 대해 보고합니다. 필터에서 속성을 선택하면 속성이 연결된 데이터 유형에 따라 사용 가능한 속성이 결정됩니다. 예를 들어, 트랜잭션 이벤트에 첨부된 속성을 필터링하는 경우 추가 속성 값에 대한 필터를 추가하려고 할 때 트랜잭션 이벤트 속성만 사용할 수 있습니다.
추적에 대한 쿼리는 NRQL (쿼리 언어)과 유사하지만 몇 가지 주요 예외가 있습니다.
문자열 값에는 따옴표가 필요하지 않습니다(예:
appName = MyApp
또는appName = 'MyApp'
사용 가능)like
연산자에는%
이 필요하지 않습니다(예:appName like product
또는appName like %product%
사용 가능).다음은 쿼리 표시줄을 사용하는 방법에 대한 두 가지 예입니다.
아래 이미지의 쿼리는 다음과 같은 추적을 찾습니다.
WebPortal 및 Inventory Service 애플리케이션 모두 통과
500ms 이상 걸리는 Inventory Service 데이터 저장소 호출이 있습니다.
범위 에 오류가 있습니다.
이동 one.newrelic.com > All capabilities > Apps > Distributed tracing
아래 이미지의 쿼리는 다음과 같은 추적을 찾습니다.
WebPortal 응용 프로그램을 통과하고 WebPortal 응용 프로그램의 범위에서 오류가 발생한 범위를 포함합니다.
customer_user_email
속성에 추적의 아무 곳에서나hotmail.com
로 끝나는 값이 포함된 범위를 포함합니다.이동 one.newrelic.com > All capabilities > Apps > Distributed tracing
페이지 상단의 쿼리 표시줄 외에도 왼쪽 창에서 다양한 필터를 사용하여 관심 있는 추적을 찾을 수 있습니다.
Infinite tracing data: Infinite Tracing 기능과 관련된 트레이스를 보여주기 위해서만 선택합니다.
Multi span traces only: 단일 스팬 트레이스를 숨길 때 사용합니다.
Error filters: Errors 에서 필터링할 오류를 선택합니다.
Histogram filters: 왼쪽 창 하단의 Errors 아래에서 More filters 클릭하여 히스토그램 필터를 표시할 수 있습니다. 슬라이더를 끌어서 Trace duration 와 같은 값을 변경합니다.
- 보다 큼 비교를 위해 슬라이더의 왼쪽 끝을 끕니다.
- 보다 작음 비교를 위해 슬라이더의 오른쪽 끝을 끕니다.
- 범위별로 필터링하려면 슬라이더의 각 끝을 가운데로 끕니다.
슬라이더를 드래그하면 트레이스 목록과 트레이스 차트에 표시되는 내용이 모두 변경됩니다.
스팬 데이터 구성
수신 추적의 기본 보기에는 동일한 루트 항목 범위로 그룹화된 추적이 표시됩니다. 즉, 트레이스는 뉴렐릭이 요청 기록을 시작한 범위를 기준으로 그룹화됩니다. 토글 Group similar traces 을 슬라이드하여 이 기능을 켜거나 끌 수 있습니다.
추적 그룹을 사용하면 추적에 대한 높은 수준의 보기를 얻을 수 있으므로 유사한 추적 그룹에 대한 요청 동작을 이해할 수 있습니다. 이를 통해 트레이스 수, 지속 시간 및 오류의 급감 또는 급증을 이해하는 데 도움이 됩니다. 추적 그룹 중 하나를 클릭하면 선택한 특정 추적 그룹의 컨텍스트에서 모든 표준 세부 정보를 얻을 수 있습니다.
Group similar traces 가 켜져 있으면 분산 추적의 페이지 상단에 3개의 차트가 표시됩니다. 이 차트는 차트 아래 표에 나열된 각 트레이스 그룹에 대한 트레이스 개수, 95번째 백분위수 기간 및 오류 개수를 보여줍니다. 이 차트의 필터를 변경하려면 왼쪽 창 필터를 참조하세요.
트레이스 산점도는 외곽 트레이스를 검색하는 빠른 방법입니다. 페이지 상단의 Group similar traces 토글을 끄면 분산 추적의 시작 페이지에서 사용할 수 있습니다.
산점도에서 차트에서 커서를 이동하여 추적 세부 정보를 볼 수 있고 개별 포인트를 클릭하여 세부 정보를 얻을 수 있습니다.
산점도에 표시되는 내용을 제어합니다.
View by
다운 드롭 메뉴에서 기간 유형을 선택하세요.
Backend duration
Root span duration
Trace duration
Facet traces by
에서 다음 옵션 중 하나를 선택합니다.
Root entry span
: 루트 서비스의 엔드포인트인 루트 트랜잭션을 기준으로 그룹화합니다. 서비스 A가 서비스 B를 호출하고 서비스 B가 서비스 C를 호출하는 트레이스에서 루트 항목 범위는 서비스 A의 엔드포인트입니다. 예: "서비스 A - GET /사용자/%".
Root entity
: 트레이스의 첫 번째 엔터티 이름으로 그룹화됩니다. 서비스 A가 서비스 B를 호출하고 서비스 B가 서비스 C를 호출하는 트레이스에서 루트 엔터티는 서비스 A가 됩니다.
Errors
: 트레이스에 오류가 있는지 여부를 기준으로 그룹화합니다.
- 산점도에서 필터를 변경하는 방법에 대한 팁은 왼쪽 창 필터를 확인하십시오.
팁
많은 결과를 생성하는 일부 쿼리는 차트에서 가양성을 초래할 수 있습니다. 이는 추적 목록에 없는 추적 결과를 보여주는 차트로 나타날 수 있습니다.
추가 UI 세부정보
다음은 몇 가지 추가 분산 추적 UI 세부 정보, 규칙 및 제한입니다.
스팬 수준 오류는 프로세스에서 오류가 발생한 위치, 버블링된 방법 및 처리된 위치를 보여줍니다. 오류로 끝나는 모든 범위는 UI에 오류와 함께 표시되고 해당 추적의 총 오류 수에 기여합니다.
다음은 스팬 오류 이해에 대한 몇 가지 일반적인 팁입니다.
오류가 있는 범위는 분산 추적 UI에서 빨간색으로 강조 표시됩니다. 각 범위의 Error Details 창에서 자세한 정보를 볼 수 있습니다.
오류와 함께 종료되는 모든 스팬은 스팬 오류 수에 포함됩니다.
동일한 범위에서 여러 오류가 발생하면 다음 우선 순위에 따라 하나만 범위에 기록됩니다.
- ㅏ
noticeError
- 해당 범위 내에서 가장 최근의 범위 오류
다음 표에서는 다양한 범위 오류가 처리되는 방식을 설명합니다.
오류 유형
설명
오류로 끝나는 스팬
범위의 경계를 벗어나는 오류는 오류가 포착되거나 트랜잭션을 종료할 때까지 해당 범위 및 오류와 함께 종료되는 모든 상위 범위에서 오류를 발생시킵니다. 상위 범위에서 오류가 포착되었는지 확인할 수 있습니다.
주의 오류
에이전트
noticeError
API 호출 또는 자동 에이전트 계측에 의해 발견된 오류는 현재 실행 중인 범위에 연결됩니다.응답 코드 오류
응답 코드 오류는 다음과 같이 연결된 범위에 첨부됩니다.
클라이언트 범위:
http
또는db
접두사가 붙은 외부 트랜잭션입력 범위: 응답 코드 오류로 끝나는 트랜잭션의 경우.
이러한 범위에 대한 응답 코드는
http.statusCode
속성으로 캡처되어 해당 범위에 연결됩니다.
OpenTelemetry 오류
오른쪽 창의 Error Details 상자는
otel.status_code = ERROR
포함하는 범위로 채워지고otel.status_description
의 콘텐츠를 표시합니다.팁
앱/서비스에서 처리하는 OpenTelemetry 범위 이벤트는 범위 오류 상태와 독립적으로 표시되며 반드시 범위 오류 상태와 연관되지는 않습니다. 오른쪽 창에서 View span events 클릭하면 범위 이벤트 예외와 비예외를 볼 수 있습니다.
- ㅏ
범위가 UI에서 비정상적으로 표시되는 경우 다음 사항이 모두 해당됨을 의미합니다.
- 범위는 지난 6시간 동안 동일한 서비스에서 동일한 이름을 가진 모든 범위의 평균보다 2배 이상 느린 표준 편차입니다.
- 범위의 기간이 추적 기간의 10% 이상입니다.
프로세스가 다른 프로세스를 호출하고 두 프로세스가 New Relic에 의해 계측되면 추적에는 호출의 클라이언트 측 표현과 서버 측 표현이 모두 포함됩니다. 클라이언트 범위 (프로세스 호출)는 서버 범위(프로세스라고 함)와 비교할 때 시간 관련 차이가 있을 수 있습니다. 이러한 차이는 다음으로 인해 발생할 수 있습니다.
시스템 클럭 시간 차이로 인한 클럭 스큐
네트워크 지연 또는 DNS 확인 지연 등으로 인한 기간의 차이
UI는 서버 범위와 동일한 공간에 클라이언트 범위의 개요를 표시하여 이러한 시간 관련 차이점을 보여줍니다. 이 범위는 클라이언트 범위의 기간을 나타냅니다.
이러한 시간 관련 불일치에 기여하는 모든 요소를 결정할 수는 없지만 다음은 몇 가지 일반적인 스팬 패턴과 이를 이해하기 위한 팁입니다.
A. 클라이언트 범위가 서버 범위보다 길면 네트워크 시간, 대기열 시간, DNS 확인 시간 또는 볼 수 없는 로드 밸런서와 같은 여러 영역의 대기 시간 때문일 수 있습니다. B. 서버 범위가 시작되기 전에 클라이언트 범위가 시작되고 끝나는 경우 이는 클럭 스큐 때문이거나 서버가 응답을 보낸 후 계속되는 비동기 작업을 수행하기 때문일 수 있습니다. C. 클라이언트 범위가 서버 범위 이후에 시작되면 이것은 클럭 스큐일 가능성이 높습니다.
Fragmented 트레이는 범위가 누락된 트레이입니다. 스팬이 누락되었거나 상위 스팬 ID가 유효하지 않은 경우 해당 하위 스팬은 트레이스의 나머지 부분과 분리되며, 이를 "고아"라고 합니다. 분리된 범위는 트레이스 하단에 나타나며 트레이스의 나머지 부분에 대한 연결선이 부족합니다. 조각화된 스팬이 있는 경우 세부정보 페이지 상단에 Fragmented 라는 단어가 표시됩니다.
UI에 표시되는 고아 스팬 속성 유형:
No root span. 요청의 첫 번째 작업인 루트 범위가 누락되었습니다. 이 경우 타임스탬프가 가장 빠른 범위가 루트로 표시됩니다.
Orphaned span. 상위 스팬이 누락된 단일 스팬. 이는 상위 스팬의 ID가 하위 스팬과 일치하지 않기 때문일 수 있습니다.
Orphaned trace fragment. 그룹의 첫 번째 범위가 고아 범위인 연결된 범위 그룹입니다.
이는 다음을 포함한 여러 가지 이유로 발생할 수 있습니다.
Collection limits. 처리량이 많은 일부 애플리케이션은 수집 제한(예: APM 에이전트 수집 제한 또는 API 제한)을 초과할 수 있습니다. 이런 일이 발생하면 트레이스에 스팬이 누락될 수 있습니다. 이 문제를 해결하는 한 가지 방법은 일부 보고를 꺼서 제한에 도달하지 않도록 하는 것입니다.
Incorrect instrumentation. 로그를 잘못 제출한 경우 트레이스 컨텍스트를 올바르게 전달하지 못하여 조각화된 트레이스가 발생합니다. 이 문제를 해결하려면 고아 범위를 생성하는 데이터 원본을 검사하여 계측이 올바르게 수행되었는지 확인하세요. 스팬의 데이터 소스를 검색하려면 해당 소스를 선택하고 스팬 세부정보를 검토하세요.
Spans still arriving. 일부 상위 스팬이 아직 수집되지 않은 경우 전체 트레이스가 보고될 때까지 일시적인 공백이 발생할 수 있습니다.
UI display limits. 트레이스가 10K 범위 표시 제한을 초과하면 분리된 범위가 발생할 수 있습니다.
보존된 트레이스는 원래 트레이스의 스냅샷과 유사합니다. 이전에 보았고 보존 기간을 초과한 전체 추적을 보관합니다. 전체 추적은 연장된 보존 기간(UI에 자동으로 반영됨)을 구매하지 않는 한 7일 동안만 사용할 수 있습니다. 그러나 보존된 추적은 최대 1년 동안 존재할 수 있으며 일반적으로 원래 추적과 동일하게 작동합니다.
보존된 트레이스는 스팬 성능 데이터 또는 스팬 이상 데이터를 표시하지 않습니다. 보존된 추적의 엔터티가 삭제, 만료 또는 데이터 보고를 중지하는 경우 보존된 추적에 액세스하지 못할 수 있습니다.
다른 서비스를 모니터링하는 New Relic 계정에 대한 액세스 권한이 없는 경우 일부 범위 및 서비스 세부 정보가 UI에서 난독화됩니다. 난독화에는 다음이 포함될 수 있습니다.
별표로 숨겨진 스팬 이름
서비스 이름이 New Relic 계정 ID 및 앱 ID로 대체됨
계정 액세스에 영향을 미치는 요소에 대한 자세한 내용은 계정 액세스 를 참조하십시오.
언어 에이전트: 적응형 샘플링 을참조하십시오.
범위 폭포를 볼 때 범위 이름은 전체 범위 이름보다 사람이 더 읽기 쉬운 불완전한 형식으로 표시될 수 있습니다. 전체 이름을 찾으려면 해당 범위를 선택하고 Full span name 을 찾으세요. 전체 이름을 아는 것은 NRQL로 해당 데이터를 쿼리하는 데 유용할 수 있습니다.
추적에 때때로 누락된 스팬 또는 서비스가 있을 수 있습니다(또는 있는 것처럼 보일 수 있음). 이는 추적 목록 에 표시되는 추적 범위 또는 서비스의 수와 추적 세부 정보 페이지에 표시되는 수 사이의 불일치로 나타날 수 있습니다.
누락된 범위 및 개수 불일치에 대한 이유는 다음과 같습니다.
에이전트가 범위 컬렉션 한도에 도달했을 수 있습니다.
범위는 처음에 계산될 수 있지만 네트워크 대기 시간 또는 쿼리 문제와 같은 이유로 추적 표시에 포함되지 않습니다.
UI가 10K 범위 표시 제한에 도달했을 수 있습니다.
표시되지 않은 범위를 포함하여 수집된 모든 범위 는 NRQL을 사용하여 쿼리 할 수 있습니다.
이러한 UI 도구 외에도 분산 추적 데이터 쿼리 에서 예제 NRQL 쿼리를 확인할 수 있습니다.