고유한 추적 구현을 생성하려면 Trace API 를 사용할 수 있습니다. 이 문서에서는 Zipkin 형식의 추적 데이터를 Trace API로 보내는 방법을 설명합니다. (일반 데이터 형식은 New Relic 형식 을 참조하십시오.)
Zipkin 버전 요구 사항
Trace API는 수정 없이 Zipkin JSON v2(또는 그 이상)의 데이터를 지원합니다. 이 버전에 대한 자세한 내용은 Zipkin v2 릴리스 세부 정보 및 Zipkin v2 스키마 를 참조하세요.
Trace API 사용 개요
Trace API를 사용하는 것은 다음과 같이 간단합니다.
- 예상 형식(이 경우
zipkin
형식)으로 추적 데이터를 보냅니다. - 해당 데이터를 적절한 엔드포인트 로 보내기
우리의 데이터 전송 지침에는 무한 추적을 활성화하는 옵션이 있습니다. 이에 대한 자세한 내용은 무한 추적 및 샘플링 고려 사항 소개 를 참조하십시오.
Trace API 사용을 시작하려면 다음 옵션을 선택하십시오.
- Send a sample trace : 이것은 New Relic에 trace를 보내는 curl 예제를 보여줍니다. 이것은 Trace API의 작동 방식을 이해하고 New Relic에서 데이터가 표시되는지 확인하는 데 유용합니다.
- 기존 Zipkin 계측에서 데이터 보고 : 기존 Zipkin 구현이 있는 경우 데이터가 전송되는 끝점을 간단히 변경할 수 있습니다.
샘플 Zipkin 추적 페이로드 보내기
이 섹션에서는 curl 요청을 통해 Trace API에 간단한 Zipkin 형식 추적을 보내는 방법을 설명합니다. 심층 계측을 수행하기 전에 API 작동 방식을 배우고 데이터가 New Relic에 표시되는지 확인하기 위해 이 작업을 선택할 수 있습니다.
샘플 페이로드 전송을 시작하려면:
- (선택 사항, 무한 추적을 활성화하려면) 먼저 추적 관찰자를 설정 해야 합니다. 이 절차에는 일반
new-relic
형식을 사용하여 샘플 추적을 보내기 위한 지침이 포함되어 있습니다. 해당 단계에 도달하면 여기로 돌아와서 대신 Zipkin 형식 추적을 보내는 방법을 알아보세요. - 아래 지침에 따라 Zipkin 형식 페이로드를 보냅니다.
Zipkin 형식 페이로드 보내기
샘플 Zipkin 형식 추적을 보내려면 다음 안내를 따르세요.
데이터를 보고할 계정의 라이선스 키 를 가져옵니다.
아래에서 curl 요청을 실행합니다. 이에 대한 참고 사항:
라이선스 키 자리 표시자를 라이선스 키로 바꿉니다.
무한 추적을 사용하는 경우 표준 끝점 대신
값을 사용합니다.
둘 이상의 게시물을 보내려면 추적 ID를 다른 값으로 변경하십시오. 동일한
traceId
에 대해 동일한 페이로드 또는 스팬id
을 여러 번 전송하면 UI에서 조각화된 추적이 발생할 수 있습니다.
$curl -i -H 'Content-Type: application/json' \> -H 'Api-Key: NEW_RELIC_API_KEY' \> -H 'Data-Format: zipkin' \> -H 'Data-Format-Version: 2' \> -X POST \> -d '[$ {$ "traceId": "test-zipkin-trace-id-1",$ "id": "3e0f5885710776cd",$ "kind": "CLIENT",$ "name": "post",$ "duration": 508068,$ "localEndpoint": {$ "serviceName": "service-1",$ "ipv4": "127.0.0.1",$ "port": 8080$ },$ "tags": {$ }$ },$ {$ "traceId": "test-zipkin-trace-id-1",$ "parentId": "3e0f5885710776cd",$ "id": "asdf9asdn123lkasdf",$ "kind": "CLIENT",$ "name": "service 2 span",$ "duration": 2019,$ "localEndpoint": {$ "serviceName": "service-2",$ "ipv4": "127.0.0.1",$ "port": 8080$ },$ "tags": {$ "error.message": "Invalid credentials"$ }$ }$ ]' 'https://trace-api.newrelic.com/trace/v1'
1분 이내에 분산 추적 UI 에서 추적을 사용할 수 있습니다. 그것을 찾으려면 trace.id
에 대한 쿼리를 실행하십시오. 이 예에서는 test-zipkin-trace-id-1
이었습니다. trace.id
( traceId
아님)의 변환된 속성 으로 검색합니다.
자세히 알아보려면:
- UI에서 Trace API 데이터가 표시되는 위치에 대해 알아보세요 .
- 기존 Zipkin 계측기에서 데이터를 보냅니다 .
- 태그를 추가하여 스팬을 장식하는 방법을 알아보세요 . 이를 통해 더 풍부하고 유용한 경험을 위해 UI에 추적이 표시되는 방식을 사용자 지정할 수 있습니다.
- 일반 엔드포인트 정보(데이터 제한, 필수 메타데이터 및 응답 유효성 검사 )에 대해 알아보세요.
- Zipkin 데이터가 어떻게 변환되고 당사 형식으로 저장 되는지 알아보십시오.
- 추적 데이터가 표시되지 않으면 문제 해결 을 참조하십시오.
기존 Zipkin 기기에서 데이터 보내기
예비 참고 사항:
- 무한 추적 을 사용하려면 먼저 추적 관찰자를 설정 해야 합니다.
- 먼저 샘플 페이로드를 보내서 제대로 작동하는지 확인하는 것이 도움이 될 수 있습니다.
기존 Zipkin 계측에서 데이터를 보고하려면 일부 필수 요청 메타데이터를 사용하여 적절한 Trace API 엔드포인트 에서 Zipkin 추적기를 가리킵니다. 필요한 메타데이터를 헤더 또는 쿼리 매개변수로 보낼 수 있습니다(일부 Zipkin 추적 프로그램 버전에서는 HTTP 헤더 지정을 허용하지 않음).
다음은 Trace API용으로 구성된 Java에서 Zipkin OkHttpSender
을 만드는 방법의 예입니다.
OkHttpSender.create("https://trace-api.newrelic.com/trace/v1?Api-Key=NEW_RELIC_LICENSE_KEY&Data-Format=zipkin&Data-Format-Version=2");
Infinite Tracing을 사용 중이거나 EU 지역 New Relic 계정이 있는 경우 엔드포인트 가 다를 수 있습니다.
Api-Key
및 기타 메타데이터에 대한 설명은 메타데이터 요청 을 참조하세요.
Zipkin 데이터의 변환
일관된 검색/쿼리 경험을 만들기 위해 일부 Zipkin 데이터는 New Relic 속성 이름 지정과 일치하도록 변환됩니다. 추적 데이터를 저장하고 구성하는 방법에 대한 자세한 내용은 분산 추적 작동 방식 을 참조하세요.
집킨 태그 | New Relic에 다음과 같이 저장... | 세부 |
---|---|---|
추적 ID | 추적 ID | 추적의 고유 식별자입니다. |
|
| 범위의 고유 식별자입니다. |
부모 ID | 부모 아이디 | 서비스를 호출한 업스트림 범위의 식별자입니다. |
|
|
|
|
| 스팬의 이름입니다. |
|
| Zipkin v2 범위에는 마이크로초 단위로 지정된 기간이 있어야 하며 밀리초로 변환됩니다. |
로컬 엔드포인트: |
| Zipkin v2 서비스 이름을 사용하여 이 범위를 생성한 엔터티를 식별합니다. |
로컬 엔드포인트: |
|
|
| 속성 으로 보고됨 | Zipkin v2의 |
주석 | 지원되지 않음 | 현재 Trace API에서 주석을 지원하지 않습니다. 주석이 포함된 스팬은 거부되지 않지만 주석 데이터는 작성되지 않습니다. |
다른 태그/속성 추가
제한된 태그 를 제외하고 원하는 모든 태그를 tags
블록에 추가할 수 있습니다. 예를 들어, 추적 데이터를 분석하는 데 도움이 되도록 customer.id
또는 user.id
와 같은 속성을 추가할 수 있습니다. 태그는 New Relic 속성 으로 변환됩니다.
New Relic에서 스팬이 표시되는 방식을 제어하는 방법(예: 오류 추가 또는 스팬을 데이터 저장소 스팬으로 설정)을 알아보려면 스팬 장식 을 참조하십시오.