트레이스 에이전트는 Datadog 에이전트의 구성 요소이며, 두 가지 방법으로 특정 트레이스가 수집되는 것을 방지할 수 있습니다. 스팬 태그를 무시하거나 리소스를 무시하는 방법입니다. 이와 같은 설정으로 트레이스가 수집되지 않으면 트레이스 메트릭에서 이 요청을 제외합니다.
트레이스 에이전트에서 특정 스팬이나 리소스를 무시하도록 구성하면 이 특정 Datadog 에이전트로 트레이스를 전송하는 서비스 전체에 적용됩니다. 애플리케이션 지정 필수 조건이 있을 경우에는 대신 트레이서 구성 방법을 사용하세요.
스팬 태그 기반 무시
Datadog 에이전트 6.27.0/7.27.0부터 태그 필터 옵션을 사용해 특정 스팬 태그와 일치하는 루트 스팬의 트레이스를 제외할 수 있습니다. 이 옵션은 특정 Datadog 에이전트에 트레이스를 보내는 모든 서비스에 적용됩니다. 필터 태그 때문에 제외된 트레이스는 트레이스 메트릭에 포함되지 않습니다.
Datadog에 보내고 싶지 않은 트레이스 세트를 프로그램적인 방법으로 파악할 수 있고, 이 가이드에 안내된 내용으로 필요한 조건을 충족할 수 없을 경우, 커스텀 스팬 태그를 추가해 트레이스를 제외하는 것을 권고합니다. 사례에 맞는 방법이 무엇인지 논의하고 Datadog에서 이 기능을 계속해서 확장할 수 있도록 지원팀에 문의해 주시면 감사하겠습니다.
필터 태그 옵션을 사용하려면 문자열이 정확하게 일치해야 합니다. regex 무시 방법이 필요한 사용 사례일 경우에는 리소스 기반 무시 방법을 사용하세요
환경 변수에서 띄어쓰기로 구분된 키와 값의 목록을 사용하여 포함하거나 거부할 스팬 태그를 지정할 수 있습니다.
DD_APM_FILTER_TAGS_REQUIRE
특정 스팬 태그와 값에 완전히 일치하는 루트 스팬 트레이스만 수집합니다. 이 규칙과 일치하지 않으면 트레이스가 제외됩니다(예: DD_APM_FILTER_TAGS_REQUIRE="key1:value1 key2:value2"). Datadog 에이전트 7.49+의 경우 정규식을 DD_APM_FILTER_TAGS_REGEX_REQUIRE로 제공할 수 있습니다.
DD_APM_FILTER_TAGS_REJECT
특정 스팬 태그 및 값과 완전히 일치하는 루트 스팬 트레이스를 거부합니다. 이 규칙과 일치하면 트레이스가 제외됩니다(예: DD_APM_FILTER_TAGS_REJECT="key1:value1 key2:value2"). Datadog 에이전트 7.49+의 경우 정규식을 DD_APM_FILTER_TAGS_REGEX_REJECT로 제공할 수 있습니다.
grpc.request.metadata.* - Python, Node.js rpc.grpc.request.metadata - Go
rpc.grpc.response.metadata.*
grpc.response.metadata.* - Python, Node.js
오류
이름
리맵
error.message
error.msg - 모든 언어
리소스 기반 무시
리소스 무시 옵션의 경우 트레이스의 전역 루트 스팬이 특정 조건을 충족할 경우 무시합니다. [수집에서 특정 리소스 제외5를 참고하세요. 이 옵션은 특정 Datadog 에이전트에 트레이스를 보내는 모든 서비스에 적용됩니다. 리소스 무시 때문에 제외된 트레이스는 트레이스 메트릭에 포함되지 않습니다.
에이전트 구성 파일 datadog.yaml에서 무시할 리소스를 지정하거나 DD_APM_IGNORE_RESOURCES 환경 변수를 사용할 수 있습니다. 다음 예시를 참고하세요.
datadog.yaml
apm_config:## @param ignore_resources - 문자열 목록 - 선택 사항## 리소스 이름을 기반으로 특정 트레이스를 제외할 정규식을 제공할 수 있습니다.## 모든 항목에 큰 따옴표를 사용해야 하며 쉼표로 구분해야 합니다.ignore_resources:["(GET|POST) /healthcheck","API::NotesController#index"]
Kubernetes로 전용 컨테이너를 사용하는 경우 리소스 무시 옵션으로 사용하는 환경 변수가 trace-agent 컨테이너에 적용되는지 다시 확인하세요.
예시
트레이스에 포함하고 싶지 않은 /api/healthcheck 호출이 있는 트레이스 예시를 보겠습니다.
전역 루트 스팬의 리로스 이름을 기입해 두세요
작업 이름: rack.request
리소스 이름: Api::HealthchecksController#index
Http.url: /api/healthcheck
리소스 무시 옵션을 바르게 사용하려면 regex 규칙을 쓸 때 리소스 이름 Api::HealthchecksController#index와 일치하도록 써야 합니다. 사용할 수 있는 regex 옵션이 여럿 있으나 이 리소스를 정확하게 필터링하여 제외하려면 Api::HealthchecksController#index$와 같은 regex를 사용하는 것이 좋습니다.
Ruby 트레이서에는 특정 조건을 충족하는 트레이스를 제거하는 후처리 파이프라인이 있습니다. 자세한 정보는 후처리 트레이스를 참고하세요.
예를 들어 리소스 이름이 Api::HealthchecksController#index이면 Datadog::Tracing::Pipeline::SpanFilter 클래스를 사용해 리소스 이름이 포함된 트레이스를 제거하세요. 이 필터를 스팬 개체의 다른 사용 가능한 메타데이터와 일치하는데 사용할 수도 있습니다.
Python 트레이서에는 특정 엔드포인트에서 트레이스를 제거할 수 있는 FilterRequestsOnUrl 필터가 있습니다. 또는 커스텀 필터를 쓸 수 있습니다. 자세한 정보는 트레이서 필터링을 참고하세요.
루트 스팬의 http.url 스팬 태그에 http://<domain>/healthcheck이 있다고 가정해 봅시다. 다음 regex를 사용해 healthcheck로 끝나는 엔드포인트와 일치할 수 있습니다.
from ddtrace import tracer
from ddtrace.filters import FilterRequestsOnUrl
tracer.configure(settings={
'FILTERS': [
FilterRequestsOnUrl(r'http://.*/healthcheck$'),
],
})
Http 플러그인에 차단 목록을 구성하세요. API 문서에서 차단 목록과 일치하는 것이 있는지 유의해서 보세요. 예를 들어 수신 HTTP 요청이 URL 경로와 일치하는 경우 트레이스의 http.url 스팬 태그가 http://<domain>/healthcheck이면 healthcheck URL과 일치하는 규칙을 쓰세요.