본문 바로가기
WIKI 기술 지식 베이스

Trace 메트릭 (Trace Metrics)

원문 보기 위키 갱신

Tracing 애플리케이션 메트릭은 trace 수집을 활성화하고 애플리케이션을 계측한 후에 수집돼요.

출처: 문서

본문

이 메트릭은 요청 수, 오류 수, 레이턴시 측정을 캡처해요. 어떤 trace 수집 샘플링 구성과 관계없이 애플리케이션 트래픽의 100%를 기준으로 계산돼요. 이 메트릭으로 서비스나 리소스의 잠재적 오류를 발견하고, 대시보드·모니터·SLO를 만들어 애플리케이션 트래픽에 대한 완전한 가시성을 확보하세요.

참고: 애플리케이션이 OpenTelemetry 라이브러리로 계측되고 SDK 수준에서 샘플링이 구성된 경우, APM 메트릭은 샘플링된 데이터로부터 계산돼요. OpenTelemetry Collector에서 샘플링할 때 모든 트래픽에서 APM 메트릭을 계산하려면 span_metrics 커넥터를 tail_sampling 같은 샘플링 프로세서 앞에 둬요. Datadog Connector는 기존 구성에서도 같은 결과를 얻어요. 자세한 내용은 OpenTelemetry의 수집 샘플링을 참고해요.

Trace 메트릭은 서비스 엔트리 스팬과 통합 언어에 따른 특정 연산에 대해 생성돼요. 예를 들어 Django 통합은 다양한 연산을 나타내는 스팬(1개의 루트 스팬, 미들웨어마다 1개, 뷰 1개)에서 trace 메트릭을 만든답니다.

Trace 메트릭 네임스페이스는 다음과 같이 형식화돼요:

  • trace.<SPAN_NAME>.<METRIC_SUFFIX>

정의:

<SPAN_NAME> 연산 이름 또는 span.name(예: redis.command, pylons.request, rails.request, mysql.query).

<METRIC_SUFFIX> 메트릭 이름(예: hits, errors, apdex, duration). 아래 섹션을 참고해요.

<TAGS> Trace 메트릭 태그. 가능한 태그는 env, service, version, resource, http.status_code, http.status_class, rpc.grpc.status_code(Datadog Agent v7.65.0+ 필요), 그리고 Datadog Agent 태그(호스트와 추가 기본 태그 포함)예요.

참고: 스팬에 설정된 다른 태그는 trace 메트릭의 태그로 사용할 수 없어요.

메트릭 접미사

Hits

trace.<SPAN_NAME>.hits 전제 조건: 모든 APM 서비스에 존재하는 메트릭. 설명: 특정 이름으로 생성된 스팬의 수(예: redis.command, pylons.request, rails.request, mysql.query). 메트릭 타입: COUNT. 태그: env, service, version, resource, resource_name, http.status_code, rpc.grpc.status_code, Datadog Host Agent의 모든 호스트 태그, 추가 기본 태그.

trace.<SPAN_NAME>.hits.by_http_status 전제 조건: http 메타데이터가 있으면 HTTP/WEB APM 서비스에 존재하는 메트릭. 설명: HTTP 상태 코드로 분류한 주어진 스팬의 hits 수. 메트릭 타입: COUNT. 태그: env, service, version, resource, resource_name, http.status_class, http.status_code, Datadog Host Agent의 모든 호스트 태그, 추가 기본 태그.

레이턴시 분포 (Latency distribution)

trace.<SPAN_NAME> 전제 조건: 모든 APM 서비스에 존재하는 메트릭. 설명: 다양한 환경과 추가 기본 태그에 걸친 모든 서비스·리소스·버전의 레이턴시 분포. 모든 레이턴시 측정 사용 사례에 권장. 메트릭 타입: DISTRIBUTION. 태그: env, service, version, resource, resource_name, http.status_code, rpc.grpc.status_code, synthetics, 추가 기본 태그.

Errors

trace.<SPAN_NAME>.errors 전제 조건: 모든 APM 서비스에 존재하는 메트릭. 설명: 주어진 스팬의 오류 수. 메트릭 타입: COUNT. 태그: env, service, version, resource, resource_name, http.status_code, rpc.grpc.status_code, Datadog Host Agent의 모든 호스트 태그, 추가 기본 태그.

trace.<SPAN_NAME>.errors.by_http_status 전제 조건: http 메타데이터가 있으면 HTTP/WEB APM 서비스에 존재하는 메트릭. 설명: 주어진 스팬의 오류 수. 메트릭 타입: COUNT. 태그: env, service, version, resource, http.status_class, http.status_code, Datadog Host Agent의 모든 호스트 태그, 추가 기본 태그.

Apdex

trace.<SPAN_NAME>.apdex 전제 조건: 모든 HTTP 또는 웹 기반 APM 서비스에 존재하는 메트릭. 설명: 각 웹 서비스의 Apdex 점수 측정. 메트릭 타입: GAUGE. 태그: env, service, version, resource / resource_name, synthetics, 추가 기본 태그.

레거시 메트릭

다음 메트릭은 하위 호환성을 위해 유지돼요. 모든 레이턴시 측정 사용 사례에는 Latency Distribution 메트릭을 사용할 것을 Datadog는 강력히 권장해요.

Duration (Legacy)

⚠️ 중요: Duration 메트릭은 하위 호환성 목적으로만 유지돼요. 모든 레이턴시 측정 사용 사례에는 백분위수 계산과 전반적인 성능 분석에 더 나은 정확도를 제공하는 Latency Distribution 메트릭을 사용할 것을 Datadog는 강력히 권장해요.

trace.<SPAN_NAME>.duration 전제 조건: 모든 APM 서비스에 존재하는 메트릭. 설명: 시간 간격 내 스팬 집합의 총 시간 측정(수집 서비스에서 보이는 자식 스팬 포함). 대부분의 사용 사례에서 평균 레이턴시나 백분위수 계산에는 Latency Distribution을 권장해요. 호스트 태그 필터로 평균 레이턴시를 계산하려면 이 메트릭을 다음 공식으로 사용할 수 있어요: sum:trace.<SPAN_NAME>.duration{<FILTER>}.rollup(sum).fill(zero) / sum:trace.<SPAN_NAME>.hits{<FILTER>}.rollup(sum).fill(zero) 이 메트릭은 백분위수 집계를 지원하지 않아요. 자세한 내용은 Latency Distribution 섹션을 읽어보세요. 메트릭 타입: GAUGE. 태그: env, service, resource, http.status_code, Datadog Host Agent의 모든 호스트 태그, 추가 기본 태그.

Duration by (Legacy)

⚠️ 중요: Duration 메트릭은 하위 호환성 목적으로만 유지돼요. 모든 레이턴시 측정 사용 사례에는 Latency Distribution 메트릭을 사용할 것을 Datadog는 강력히 권장해요.

trace.<SPAN_NAME>.duration.by_http_status 전제 조건: http 메타데이터가 있으면 HTTP/WEB APM 서비스에 존재하는 메트릭. 설명: 각 HTTP 상태에 대한 스팬 집합의 총 시간 측정. 구체적으로는 시간 간격과 주어진 HTTP 상태에 대해 모든 스팬이 보낸 시간의 상대적 비율 — 자식 프로세스에서 대기하는 시간 포함. 메트릭 타입: GAUGE. 태그: env, service, resource, http.status_class, http.status_code, Datadog Host Agent의 모든 호스트 태그, 추가 기본 태그.

샘플링이 trace 메트릭에 미치는 영향

대부분의 경우 trace 메트릭은 모든 애플리케이션 트래픽을 기준으로 계산돼요. 하지만 특정 trace 수집 샘플링 구성에서는 메트릭이 모든 요청의 일부만 나타낼 수 있어요.

애플리케이션 측 샘플링

일부 SDK는 애플리케이션 측 샘플링을 지원해 Datadog Agent로 보내기 전에 스팬 수를 줄여요. 예를 들어 Ruby SDK는 성능 오버헤드를 낮추기 위해 애플리케이션 측 샘플링을 제공해요. 하지만 Datadog Agent는 정확한 메트릭을 계산하려면 모든 스팬이 필요하므로, 이는 trace 메트릭에 영향을 줄 수 있어요.

이 설정을 지원하는 SDK는 아주 드물고, 사용하는 것이 일반적으로 권장되지 않아요.

OpenTelemetry 샘플링

OpenTelemetry SDK의 기본 샘플링 메커니즘은 Datadog collector로 보내는 스팬 수를 낮춰, 샘플링되어 잠재적으로 부정확한 trace 메트릭을 초래해요.

X-Ray 샘플링

X-Ray 스팬은 Datadog로 보내기 전에 샘플링되므로, trace 메트릭이 모든 트래픽을 반영하지 않을 수 있어요.

더 알아보기 (Learn more)