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

트레이스 보존 (Trace Retention)

원문 보기 위키 갱신

Datadog APM에서 트레이스의 수집과 15일 보존은 완전히 사용자 지정할 수 있어요.

출처: 문서

본문

개요 (Overview)

Datadog APM에서 트레이스의 수집과 15일 보존은 완전히 사용자 지정할 수 있어요.

수집·인덱싱된 데이터의 볼륨을 추적하거나 모니터링하려면 사용량 메트릭(Usage Metrics) 문서를 참고하세요.

보존 필터 (Retention filters)

스팬이 수집된 후 계정에 설정된 보존 필터에 따라 일부 스팬이 15일 동안 유지돼요:

  1. Intelligent Retention Filter는 다양한 지연 분포에 대해 모든 환경, 서비스, 오퍼레이션, 리소스의 스팬을 유지해요.
  2. 여러 **기본 보존 필터(Default Retention Filters)**가 생성되어 모든 서비스와 엔드포인트, 그리고 오류와 고지연 트레이스에 대한 가시성을 유지하게 해 줘요.
  3. 비즈니스에 가장 중요한 트레이스를 캡처하기 위해 스팬 속성이나 태그 필터를 기반으로 서비스에 원하는 만큼 추가 **커스텀 보존 필터(Custom Retention Filters)**를 만들 수 있어요.

참고: 보존 필터를 생성·삭제·수정·활성화·비활성화하려면 apm_retention_filter_write 권한이 필요해요.

Datadog의 Retention Filters 설정 페이지에서 모든 보존 필터 목록을 볼 수 있어요:

  • Filter Name: 스팬을 인덱싱하는 데 사용되는 각 보존 필터의 이름
  • Filter Query: 각 필터의 태그 기반 쿼리
  • Retention Rate: 일치하는 스팬 중 몇 개가 인덱싱되는지 나타내는 0~100%의 백분율. 유지되는 스팬은 필터 쿼리와 일치하는 스팬 중에서 균일하게 선택돼요.
  • Spans Indexed: 선택한 기간 동안 필터가 인덱싱한 스팬 수
  • Last Updated: 보존 필터를 마지막으로 수정한 날짜와 사용자
  • Enabled 토글: 필터를 켜고 끌 수 있게 해 줘요.

참고: 보존 필터 목록의 순서는 인덱싱 동작을 바꿔요. 스팬이 목록 앞쪽의 보존 필터와 일치하면 해당 스팬은 유지되거나 드롭돼요. 목록 아래쪽에 있는 일치하는 커스텀 보존 필터는 이미 처리된 스팬을 잡지 못해요.

각 보존 필터의 Spans Indexed 열은 datadog.estimated_usage.apm.indexed_spans 메트릭을 기반으로 하며, 이를 사용해 인덱싱된 스팬 사용량을 추적할 수 있어요. 자세한 내용은 사용량 메트릭을 참고하거나 계정의 바로 사용 가능한 사용량 대시보드를 살펴보세요.

참고: 보존 필터는 Agent가 수집해 Datadog로 보내는 트레이스("수집")에는 영향을 주지 않아요. 수집을 제어하려면 전용 수집 제어를 사용하세요.

보존 필터 유형 (Retention filter types)

보존 필터에는 두 가지 유형이 있어요:

  1. 스팬 수준 보존 필터(Span-level retention filters) - 필터 기준과 일치하는 특정 스팬만 인덱싱해요.
  2. 트레이스 수준 보존 필터(Trace-level retention filters) - 필터 기준과 일치하는 스팬이 포함된 전체 트레이스를 인덱싱해 Trace Queries에서 완전한 트레이스를 검색 가능하게 해요.
기능 표준 보존 필터 트레이스 수준 보존 필터
구성 스팬 쿼리 + 스팬 보존 비율 스팬 쿼리 + 스팬 보존 비율 + 트레이스 보존 비율
인덱싱 대상 쿼리가 대상으로 하는 스팬만 쿼리와 일치하는 스팬이 포함된 트레이스에 속한 모든 스팬
조회 가능 위치 Span Explorer Span Explorer 및 Trace Queries

참고: 트레이스 수준 보존 필터로 보관되어 간접적으로 인덱싱된 스팬(즉, 쿼리와 직접 일치하지 않지만 일치하는 트레이스에 속한 스팬)은 트레이스 애널리틱스 몬니터에서 평가되지 않아요.

기본 보존 필터 (Default retention filters)

기본적으로 활성화된 보존 필터는 다음과 같아요:

  • Error Default 보존 필터는 status:error인 오류 스팬을 인덱싱해요. 보존 비율과 쿼리는 구성 가능해요. 예를 들어 프로덕션 오류를 캡처하려면 쿼리를 status:error, env:production으로 설정하세요. 기본적으로 오류를 캡처하지 않으려면 보존 필터를 비활성화하세요.
  • App and API Protection Default 보존 필터는 App and API Protection을 사용 중이면 활성화돼요. 애플리케이션 보안 영향(공격 시도)이 있는 것으로 식별된 트레이스의 모든 스팬 보존을 보장해요.
  • Synthetics Default 보존 필터는 Synthetic Monitoring을 사용 중이면 활성화돼요. 신디틱 API 및 브라우저 테스트에서 생성된 트레이스가 기본적으로 사용 가능하도록 보장해요. 트레이스를 신디틱 테스트와 연결하는 방법을 포함한 자세한 내용은 Synthetic APM을 참고하세요.
  • Dynamic Instrumentation Default 보존 필터는 Dynamic Instrumentation을 사용 중이면 활성화돼요. Dynamic Instrumentation으로 동적으로 생성된 스팬이 기본적으로 장기간 사용 가능하도록 보장해요.

Datadog 지능형 보존 필터 (Datadog intelligent retention filter)

Datadog 지능형 보존 필터는 서비스에 대해 항상 활성화되어 있으며, 수십 개의 커스텀 보존 필터를 만들 필요 없이 대표적인 트레이스 선택을 유지해요. 이 필터는 다음으로 구성돼요:

  • 다양성 샘플링(Diversity sampling)
  • 1% 플랫 샘플링(One percent flat sampling)

참고: Trace Queries는 Intelligent Retention 필터가 인덱싱한 데이터를 기반으로 해요.

Intelligent 보존 필터(다양성 샘플링 및 1% 플랫 샘플링)로 인덱싱된 스팬은 인덱싱된 스팬의 사용량에 포함되지 않으므로 청구에 영향을 주지 않아요.

Intelligent 보존 필터가 보존하는 것보다 더 많은 스팬을 인덱싱하고 싶은 특정 태그나 속성이 있다면 자체 보존 필터를 만드세요.

다양성 샘플링 (Diversity sampling)

다양성 샘플링은 서비스 진입 스팬(service entry spans) 을 스캔해 30일 동안 다음을 보존해요:

  • 환경, 서비스, 오퍼레이션, 리소스 조합별로 최대 15분마다 최소 하나의 스팬(및 관련 트레이스). 트래픽이 적은 엔드포인트에서도 서비스와 리소스 페이지에서 예시 트레이스를 항상 찾을 수 있게 해 줘요.
  • 환경, 서비스, 오퍼레이션, 리소스 조합별 p75, p90, p95 백분위수 스팬의 고지연 스팬(및 관련 트레이스)
  • 오류 다양성을 보장하는 대표적인 오류 선택(예: 응답 상태 코드 400, 500)

다양성 샘플링이 캡처하는 데이터 집합은 균일하게 샘플링되지 않아요(즉, 전체 트래픽에 비례해 대표적이지 않아요). 오류와 고지연 트레이스에 치우쳐 있어요.

1% 플랫 샘플링 (One percent flat sampling)

플랫 1% 샘플링은 다음을 캡처해요:

  1. 수집된 트레이스가 있는 RUM 세션의 1%와 상관된 모든 트레이스. 인덱싱된 일부 세션에 항상 관련 트레이스 데이터가 있도록 보장해요. 이는 APM과 RUM의 상관관계를 개선해 프론트엔드 세션과 백엔드 트레이스를 함께 보면서 사용자 문제를 디버깅할 수 있게 해 줘요. 샘플은 session_id를 기준으로 적용되어 같은 RUM 세션에 연결된 모든 트레이스가 일관된 인덱싱 결정을 공유해요.
  2. 수집된 스팬의 균일한 1% 샘플. trace_id를 기준으로 적용되어 같은 트레이스의 모든 스팬이 같은 샘플링 결정을 공유해요. 전반적 시스템 상태 모니터링과 추세 분석에 이 샘플을 사용하세요.

이 샘플링 메커니즘은 균일하며 전체 수집 트래픽에 비례해 대표적이에요. 그 결과 트래픽이 적은 서비스와 엔드포인트는 짧은 시간 범위로 필터링하면 데이터셋에서 빠질 수 있어요.

자체 보존 필터 만들기 (Create your own retention filter)

특정 트레이스 데이터를 15일 동안 보존하려면 커스텀 보존 필터를 만드세요. 필터 쿼리에서 스팬 태그나 속성을 사용해 비즈니스에 가장 중요한 스팬을 대상으로 하고 보존할 수 있어요.

예를 들어 다음에 대한 모든 트레이스를 유지하는 필터를 만들 수 있어요:

  • $100 초과 신용카드 거래: @transaction_amount:>100
  • 프로덕션 환경에서 2초 이상 걸린 체크아웃 오퍼레이션 스팬: resource_name:"GET /checkout" @duration:>2s env:prod
  • 온라인 배달 서비스 애플리케이션의 특정 버전: service:delivery-api @version:v2.0

보존 필터로 스팬을 인덱싱하면:

  • 검색 가능성: 인덱싱된 스팬은 Trace Explorer, 대시보드에서 찾을 수 있고 15일 동안 모니터링할 수 있어요.
  • 시각화 컨텍스트: Trace Explorer에서 인덱싱된 스팬을 클릭하면 다른 스팬이 인덱싱되었는지 여부와 관계없이 플레임 그래프나 워터폴 보기에서 항상 완전한 트레이스 컨텍스트(모든 상위·하위 스팬)를 볼 수 있어요.
  • 검색 컨텍스트: 완전한 트레이스를 시각화할 수는 있지만 보존 필터로 구체적으로 인덱싱된 스팬만 Trace Explorer에서 검색할 수 있어요.

보존 필터를 만들려면:

  1. APM > Retention Filters로 이동하세요.
  2. Add Retention Filter를 클릭하세요.
  3. 보존하려는 스팬을 대상으로 하는 Retention Query를 정의하세요. Trace Explorer에서 쿼리를 작성하듯 스팬이나 속성을 사용해 필터링하세요.
  4. 이 쿼리와 일치하는 스팬 중 몇 퍼센트를 인덱싱할지 정의하는 Span rate를 설정하세요.
  5. (선택 사항) 스팬과 연결된 완전한 트레이스 중 몇 퍼센트를 인덱싱할지 정의하는 Trace rate를 설정하세요. 이렇게 하면 보존 쿼리가 대상으로 하는 스팬과 연결된 트레이스의 다른 스팬도 인덱싱되어 인덱싱된 데이터가 Trace Queries에서 조회 가능하게 돼요.
  6. 필터 이름을 설정하세요.
  7. Add Filter를 클릭해 필터를 저장하세요.

경고: trace rate를 구성하면 인덱싱된 스팬 사용량이 크게 늘어날 수 있어요.

예를 들어 service:my-service의 스팬을 인덱싱하는 보존 필터를 구성하면:

  • span rate를 50%로 구성하면 service:my-service와 일치하는 스팬이 포함된 트레이스의 약 50%가 선택되도록 도와줘요. 선택된 트레이스에서는 service:my-service와 일치하는 모든 스팬이 인덱싱돼요.
  • trace rate를 10%로 구성하면 span rate가 선택한 트레이스의 10%가 완전히 인덱싱되도록 도와줘요. 해당 트레이스에서는 (service:my-service뿐 아니라) 트레이스의 모든 스팬이 인덱싱돼요. 트레이스에 평균 100개 스팬이 있고 service:my-service에서 5개 스팬이 있다고 가정하면 trace rate 구성은 선택된 트레이스의 구성된 비율에 대해 트레이스의 나머지 95개 스팬을 인덱싱해요.
  • span rate가 먼저 평가되고 trace rate는 span rate가 선택한 트레이스에만 적용돼요.

새 필터를 만들거나 기존 필터의 보존 비율을 편집하면 Datadog가 전역 인덱싱 볼륨의 백분율 변화 추정치를 표시해요.

필터는 직렬 순서로 유지돼요. resource:POST /hello_world 태그로 스팬을 보존하는 업스트림 필터가 있으면 해당 스팬은 업스트림 필터에 이미 보존되었기 때문에 같은 태그를 검색하는 다운스트림 필터의 편집 창에 나타나지 않아요.

인덱싱된 스팬의 트레이스 검색 및 애널리틱스 (Trace search and analytics on indexed spans)

Trace Explorer, 대시보드, 노트북에서 (In the Trace Explorer, dashboards, and notebooks)

기본적으로 커스텀 보존 필터와 지능형 보존 필터가 인덱싱한 스팬은 Trace Explorer의 집계 보기(timeseries, toplist, table)와 대시보드·노트북 쿼리에 포함돼요.

retained_by 속성은 모든 유지된 스팬에 존재해요. 그 값은 다음과 같아요:

  • 스팬이 커스텀 보존 필터(기본 보존 필터 포함)에 캡처되었고 trace rate가 구성되지 않은 경우 retained_by:retention_filter. trace queries는 트레이스의 모든 스팬이 인덱싱되어야 하므로 이 스팬들은 Trace Queries에 포함되지 않아요.
  • 스팬이 trace rate가 구성된 보존 필터에 캡처된 경우 retained_by:trace_retention_filter
  • 스팬이 다양성 샘플링(Intelligent 보존 필터의 일부)에 캡처된 경우 retained_by:diversity_sampling
  • 스팬이 1% 플랫 샘플링으로 인덱싱된 경우 retained_by:flat_sampled. 보존 이유로 추가 필터링:
    • session_id 기준으로 샘플링된 RUM 세션과 연결된 트레이스의 경우 @retention_reason:rum. 사용자 세션과 상관된 트레이스 분석에 사용하세요.
    • trace_id 기준으로 균일하게 샘플링된 트레이스의 경우 @retention_reason:trace. 전반적 성능 추세와 시스템 전체 분석에 사용하세요.

트레이스 애널리틱스 몬니터에서 (In trace analytics monitors)

Intelligent 보존 필터가 인덱싱한 스팬은 APM 트레이스 애널리틱스 몬니터 평가에서 제외돼요.

더 알아보기 (Learn more)