• EnglishEspañol日本語한국어Português
  • 로그인지금 시작하기

이 한글 문서는 사용자의 편의를 위해 기계 번역되었습니다.

영문본과 번역본이 일치하지 않는 경우 영문본이 우선합니다. 보다 자세한 내용은 이 페이지를 방문하시기 바랍니다.

문제 신고

OpenTelemetry 추적: 모범 사례

이러한 OpenTelemetry 추적 주제를 숙지하여 추적 및 범위가 New Relic에 표시되도록 하십시오.

필수 입력 사항

스팬의 startTimeUnixNanoendTimeUnixNano 필드는 추적 데이터 용 OpenTelemetry 프로토콜에 따라 필요합니다. startTimeUnixNano 가 없으면 범위가 삭제되고 NrIntegrationError 이 생성됩니다. endTimeUnixNano 가 없으면 범위의 기간이 크고 음수입니다.

스팬 이벤트의 timeUnixNano 필드는 필수입니다. timeUnixNano 이 없으면 스팬 이벤트가 삭제되고 NrIntegrationError 가 생성됩니다.

스팬의 traceIdspanId 필드는 추적 데이터 용 OpenTelemetry 프로토콜에 따라 필요합니다. traceId 또는 spanId 이 없으면 범위가 삭제되고 NrIntegrationError 가 생성됩니다.

더 이상 사용되지 않고 제거된 필드

스팬 상태 코드는 OTLP v0.6.0 에서 더 이상 사용되지 않으며 v0.12.0 부터 제거되었습니다. 이러한 메시지와 필드를 설정하고 보내는 클라이언트는 UNRECOGNIZED 으로 설정된 값을 볼 수 있습니다. 문제가 발생하면 지원팀에 문의하세요.

견본 추출

추적 데이터는 가장 성숙한 OpenTelemetry 데이터 유형입니다. 이 때문에 New Relic의 OpenTelemetry 사용자 경험은 주로 추적 데이터를 기반으로 하므로 샘플링 전략의 영향을 받습니다.

다음과 같은 여러 위치에서 샘플링을 구성할 수 있습니다.

  • 서비스: 귀하의 언어에 대해 OpenTelemetry SDK를 사용하십시오.
  • 수집기: OpenTelemetry 수집기의 자체 인스턴스를 실행하는 경우 테일 기반 샘플링(아래 참조)과 같은 보다 정교한 형태의 샘플링을 수행하도록 구성할 수 있습니다.

다양한 유형의 샘플링을 구성하는 방법에 대한 이 문서를 확인하십시오.

리소스 속성 및 저장된 바이트

OpenTelemetry 자원 속성은 원격 측정을 생성하는 엔티티의 불변 표현으로 정의되며 attributes 로 저장됩니다. 이러한 속성이 New Relic 내의 추적 데이터에 적용되는 방식과 저장된 바이트에 미치는 영향을 이해하는 것이 중요합니다. 예제 OTLP 페이로드를 사용하고 결과 NRQL 쿼리 출력을 검사하여 리소스 속성의 영향을 관찰할 수 있습니다.

OTLP 추적 페이로드 예

{
"resourceSpans": [
{
"resource": {
"attributes": [
{
"key": "service.name",
"value": {
"stringValue": "newrelic-otlp-service"
}
},
{
"key": "process.command_line",
"value": {
"stringValue": "/opt/java/openjdk/bin/java -javaagent:agent/opentelemetry-agent.jar"
}
}
]
},
"scopeSpans": [
{
"scope": {
"name": "newrelic-instrumentation-library",
"version": "1.0.0"
},
"spans": [
{
"attributes": [
{
"key": "message_id",
"value": {
"stringValue": "000000-aaaaaa-111111-bbbbbb"
}
}
],
"startTimeUnixNano": "1677182057000000000",
"endTimeUnixNano": "1677182059000000000",
"kind": "SPAN_KIND_INTERNAL",
"name": "example-span",
"spanId": "c469d81892057f5f",
"traceId": "aa04993b9acefbedea802f8d96e4bc58"
}
]
}
]
}
]
}

NRQL 쿼리 표현

{
"duration.ms": 2000.0,
"entity.guid": "OBFUSCATED",
"entity.name": "newrelic-otlp-service",
"entity.type": "SERVICE",
"entityGuid": "OBFUSCATED",
"guid": "c469d81892057f5f",
"id": "c469d81892057f5f",
"instrumentation.provider": "opentelemetry",
"message_id": "000000-aaaaaa-111111-bbbbbb",
"name": "example-span",
"newRelic.ingestPoint": "api.traces",
"newrelic.source": "api.traces.otlp",
"nr.isPrimaryEntityData": true,
"otel.library.name": "newrelic-instrumentation-library",
"otel.library.version": "1.0.0",
"process.command_line": "/opt/java/openjdk/bin/java -javaagent:agent/opentelemetry-agent.jar",
"service.name": "newrelic-otlp-service",
"span.kind": "internal",
"timestamp": 1677182057000,
"trace.id": "aa04993b9acefbedea802f8d96e4bc58",
"traceId": "aa04993b9acefbedea802f8d96e4bc58"
}

이 예는 기본 개념을 설명하기 위한 단순화된 비교입니다. 실제 버전은 더 복잡하기 때문에 조금 다르게 보일 것입니다.

리소스 속성에서 알아차려야 할 가장 중요한 점은 NRDB에 저장된 것과 비교하여 전송되는 페이로드 크기의 잠재적인 차이입니다. 모든 리소스 속성 값은 OTLP 페이로드의 모든 범위에 적용됩니다. 위의 예는 전송되는 단일 스팬만 보여주지만 페이로드에 100개의 스팬이 포함된 경우 각 스팬에는 process.command_lineservice.name 적용됩니다.

일부 Java 기반 애플리케이션의 경우 기본 process.command_line 속성의 길이가 수천 자일 수 있으며 이로 인해 청구 가능한 바이트가 예기치 않게 크게 증가할 수 있습니다. 이러한 리소스 속성이 값을 제공하지 않는 경우 OpenTelemetry 및 속성 길이에 따라 비활성화할 수 있습니다. 모범 사례

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.