고유한 추적 구현을 생성하려면 Trace API 를 사용할 수 있습니다. 이 문서에서는 newrelic
형식이라고도 하는 일반 형식으로 추적을 보내는 방법을 설명합니다. (Zipkin 형식 데이터를 보내려면 Zipkin 을 참조하십시오.)
시작하다
Trace API를 사용하는 것은 다음과 같이 간단합니다.
- 예상 형식(이 경우
newrelic
형식)으로 추적 데이터를 보냅니다. - 해당 데이터를 적절한 끝점 으로 보냅니다.
Trace API를 사용하기 전에 Infinite Tracing을 사용할지 여부를 결정해야 합니다. 이에 대한 자세한 내용은 무한 추적 및 샘플링 고려 사항 소개 를 참조하십시오.
Trace API 사용을 시작하려면 다음 경로 중 하나를 따르세요.
- 무한 추적 을 사용하고 싶습니까? 추적 관찰자 설정 지침을 따릅니다. 추적 관찰자를 만들고 샘플 페이로드를 추적 관찰자 끝점으로 보내는 과정을 안내합니다.
- 무한 추적을 원하지 않습니까? 샘플 페이로드 를 보내는 방법(아래)을 참조하세요.
샘플 추적 페이로드 보내기(비무한 추적)
다음은 newrelic
형식을 사용하여 Trace API에 표준(비 Infinite Tracing ) 페이로드를 보내는 방법을 설명합니다.
데이터를 보고하려는 계정에 대해 를 가져옵니다.
해당 키를 다음 JSON에 삽입한 다음 JSON을 엔드포인트로 보냅니다. 참고: EU New Relic 계정이 있는 경우 EU 엔드포인트 를 대신 사용하십시오.
bash$curl -i -H 'Content-Type: application/json' \>-H 'Api-Key: YOUR_LICENSE_KEY' \>-H 'Data-Format: newrelic' \>-H 'Data-Format-Version: 1' \>-X POST \>-d '[${$"common": {$"attributes": {$"service.name": "Test Service A",$"host": "host123.example.com"$}$},$"spans": [${$"trace.id": "123456",$"id": "ABC",$"attributes": {$"duration.ms": 12.53,$"name": "/home"$}$},${$"trace.id": "123456",$"id": "DEF",$"attributes": {$"error.message": "Invalid credentials",$"service.name": "Test Service A",$"host": "host456.example.com",$"duration.ms": 2.97,$"name": "/auth",$"parent.id": "ABC"$}$}$]$}$]' 'https://trace-api.newrelic.com/trace/v1'팁
둘 이상의
POST
를 보내는 경우trace.id
을 고유한 값으로 변경합니다. 동일한trace.id
에 대해 동일한 페이로드 또는 스팬id
을 여러 번 전송하면 UI에서 조각화된 추적이 발생할 수 있습니다.테스트에서
HTTP/1.1 202 Accepted
이 반환된 경우 UI 로 이동하여 스팬 속성service.name = Test Service A
을 사용하여 테스트 데이터 쿼리를 확인합니다.팁
추적 관찰자와 추적 API 모두에서 추적을 처리하는 데 최대 1분이 소요될 수 있습니다.
추적 API 페이로드(New Relic 형식)
Trace API JSON 페이로드는 각 개체가 단일 추적을 나타내는 개체의 배열입니다. 이러한 각 객체에는 spans
키가 필요하며 common
키도 포함될 수 있습니다. spans
(필수)에는 각 개체가 범위를 나타내는 개체 배열이 포함됩니다. common
(선택 사항)은 여러 범위에서 정보를 공유합니다.
spans
배열의 Span 객체
필드 | 유형 | description | 필수의 | 기본 |
---|---|---|---|---|
| 끈 | 이 범위의 고유 식별자입니다. | 예 | 해당 없음 |
| 끈 | 단일 추적 내 모든 범위에서 공유하는 고유 식별자입니다. | 예 | 해당 없음 |
| 긴 | 아니요 | UTC 시간대의 현재 시간 | |
| 물체 | 범위에 대한 자세한 내용을 추가하는 키/값 쌍의 집합입니다. | 예 | 해당 없음 |
위의 필수 키가 없는 요청은 거부되고 NrIntegrationError
이 생성됩니다.
common
객체(선택 사항)
필드 | 유형 | description | 필수의 | 기본 |
---|---|---|---|---|
| 물체 | 페이로드의 범위에 대한 공통 세부 정보를 추가하는 키: 값 쌍의 모든 집합입니다. 범위에 | 아니요 | 해당 없음 |
적극 권장되는 속성
필수는 아니지만 이러한 속성은 각 범위의 attributes
개체에 있는 데이터에 대한 최상의 경험을 위해 포함되어야 합니다.
기인하다 | 기본 | description |
---|---|---|
뜨다 | 없음 | 이 범위의 기간(밀리초)입니다. |
끈 | 없음 | 이 범위의 이름입니다. |
끈 | 없음 | 이 범위의 호출자의 ID입니다. 루트 범위 인 경우 값은 |
끈 | 없음 | 이 스팬을 만든 항목의 이름입니다. 값이 없거나 빈 문자열이 제공되면 범위가 "UNKNOWN" 엔터티에 할당되고 UI에 이와 같이 표시됩니다. UI에서 완전한 경험을 얻으려면 이 값을 제공해야 합니다. |
예약된 속성
이러한 속성은 현재 내부 New Relic 사용을 위해 예약되어 있습니다. 명시적으로 차단되지는 않지만 사용하지 않는 것이 좋습니다.
기인하다 | 기본 | description |
---|---|---|
끈 |
| 이것은 |
끈 |
| 엔터티 유형은 서비스로 간주됩니다. |
끈 | 없음 |
|
기타 속성
제한된 속성 을 제외하고 common
또는 각 범위 개체의 attributes
개체에 원하는 임의의 속성을 추가할 수 있습니다. 예를 들어, 추적 데이터를 분석하는 데 도움이 되도록 customer.id
또는 user.id
과 같은 속성을 추가할 수 있습니다.
newrelic
형식을 사용하는 추적 JSON에 대한 요구사항 및 가이드라인:
- 각 JSON 페이로드는 객체의 배열입니다.
- 각 객체에는 필수
spans
키가 포함되어야 합니다. - 각 객체에는 선택적
common
키가 포함될 수 있습니다. 개체의 여러 범위에 걸쳐 정보를 공유하려는 경우 이 옵션을 사용합니다. - 범위의 모든 키는
common
블록의 동일한 키보다 우선합니다. spans
키 값은span
객체 목록입니다.- 특정 속성은 필수 이며 선택적
common
블록이나 각 범위에 포함되어야 합니다. - 권장 속성과 맞춤 속성은
attributes
이라는 키 아래, 선택적common
블록 및/또는 각 범위의 키-값 쌍 목록에 선택적으로 포함될 수 있습니다.
다음 예시 POST
에는 trace.id 12345
와 맞춤 속성 host: host123.example.com
이 있는 두 개의 스팬이 있습니다. 첫 번째 범위에는 parent.id
이 없으므로 이것이 추적의 루트입니다. 두 번째 범위의 parent.id
는 첫 번째 범위의 ID를 가리킵니다.
[ { "common": { "attributes": { "host": "host123.example.com" } }, "spans": [ { "trace.id": "12345", "id": "abc", "timestamp": 1603336834823, "attributes": { "user.email": "bob@newr.com", "service.name": "my-service", "duration.ms": 750, "name": "my-span" } }, { "trace.id": "12345", "id": "def", "timestamp": 1603336834899, "attributes": { "parent.id": "abc", "service.name": "second-service", "duration.ms": 750, "name": "second-span" } } ] }]
New Relic에서 스팬이 표시되는 방식을 제어하는 방법(예: 오류 추가 또는 스팬을 데이터 저장소 스팬으로 설정)을 알아보려면 스팬 장식 을 참조하십시오.
분산 추적에 대해 자세히 알아보기:
- UI에서 Trace API 데이터가 표시되는 위치에 대해 알아보세요 .
- 더 풍부하고 상세한 UI 경험을 위해 스팬을 장식하는 방법을 알아보세요 . 예를 들어 스팬을 데이터스토어 스팬으로 표시하거나 오류를 표시하도록 할 수 있습니다.
- 일반 데이터 제한, 필수 메타데이터 및 응답 검증 에 대해 알아보세요.
- 추적 데이터가 표시되지 않으면 문제 해결 을 참조하십시오.