Datadog Agent의 Trace Agent 구성 요소는 특정 트레이스 전송을 차단하는 두 가지 방법을 제공합니다. 스팬 태그 기준 필터링과 리소스 기준 필터링입니다. 이 설정으로 인해 트레이스가 삭제되면, 해당 요청은 트레이스 메트릭에서도 제외됩니다.
특정 트레이스나 리소스를 무시하도록 Trace Agent를 구성하면 해당 Datadog Agent에 트레이스를 전송하는 모든 서비스에 적용됩니다. 애플리케이션별 요구 사항이 있는 경우 Tracer 구성을 대신 사용하세요.
이 가이드의 옵션 중 어느 것도 요구 사항을 충족하지 못하는 경우, 애플리케이션에 사용자 지정 스팬 태그를 추가한 후 Agent에서 해당 태그를 사용하여 트레이스를 삭제하는 방법을 고려할 수 있습니다.
스팬 태그를 기반으로 트레이스 무시하기
Datadog Agent 6.27.0/7.27.0부터 filter tags 옵션을 사용하여 지정된 스팬 태그와 일치하는 루트 스팬을 가진 트레이스를 삭제합니다. 이 옵션은 해당 Datadog Agent로 트레이스를 전송하는 모든 서비스에 적용됩니다. 필터 태그로 인해 삭제된 트레이스는 트레이스 메트릭에 포함되지 않습니다.
트레이스 내의 개별 스팬을 선택적으로 삭제할 수 없습니다. 루트 스팬이 필터 기준과 일치하면 전체 트레이스가 삭제됩니다.
일치 동작:
필터 태그 옵션은 정확한 문자열 일치를 요구합니다. 정규식 기반 필터링이 필요한 경우 리소스 기반 무시를 참조하세요..
여러 태그를 지정하면 필터는 OR 로직으로 동작합니다. : 즉, 루트 스팬이 지정된 태그 중 하나라도 일치하면 트레이스가 삭제됩니다. 여러 조건을 동시에 일치시키려면, 해당 조건을 조합한 사용자 지정 태그를 추가하세요.
구성:
환경 변수에서 공백으로 구분된 키와 값의 목록을 사용하여 포함하거나 거부할 스팬 태그를 지정할 수 있습니다.
DD_APM_FILTER_TAGS_REQUIRE
지정된 스팬 태그 및 값과 정확히 일치하는 루트 스팬이 있는 트레이스만 수집합니다. 이 규칙과 일치하지 않으면 트레이스가 삭제됩니다. 예를 들어, DD_APM_FILTER_TAGS_REQUIRE="key1:value1 key2:value2"입니다. Datadog Agent 7.49 이상에서는 DD_APM_FILTER_TAGS_REGEX_REQUIRE를 사용하여 정규식을 지정할 수 있습니다.
DD_APM_FILTER_TAGS_REJECT
지정된 스팬 태그 및 값과 정확히 일치하는 루트 스팬이 있는 트레이스만 거부합니다. 이 규칙과 일치하면 트레이스가 삭제됩니다. 예를 들어, DD_APM_FILTER_TAGS_REJECT="key1:value1 key2:value2"입니다. Datadog Agent 7.49 이상에서는 DD_APM_FILTER_TAGS_REGEX_REJECT를 사용하여 정규식을 지정할 수 있습니다.
참고: 이 태그는 Datadog Agent 수준에서 트레이스를 삭제하는 데 사용할 수 없습니다. Datadog Agent는 수집 전에 사용할 수 있는 태그만을 기준으로 필터링합니다.
이름
설명
http.path_group
http.url 태그의 전체 URL 경로입니다.
http.url_details.host
http.url 태그의 호스트 이름 부분입니다.
http.url_details.path
HTTP 요청 라인(또는 이에 상응하는 형식)에 전달된 전체 요청 대상입니다.
http.url_details.scheme
http.url 태그의 요청 스킴입니다.
http.url_details.queryString
http.url 태그의 쿼리 문자열 부분입니다.
http.url_details.port
http.url 태그의 HTTP 포트입니다.
http.useragent_details.os.family
User-Agent에서 보고한 OS 제품군입니다.
http.useragent_details.browser.family
User-Agent에서 보고한 브라우저 제품군입니다.
http.useragent_details.device.family
User-Agent에서 보고한 디바이스 제품군입니다.
2022년 10월 1일부터 Datadog 백엔드는 모든 수집된 스팬의 트레이서에서 Span Tags Semantics
를 적용하기 위해 재매핑을 적용합니다. Datadog Agent 수준에서 루트 스팬 태그를 기준으로 트레이스를 삭제하려면 리매핑 소스 열에 있는 태그를 사용하세요.
네트워크 통신
이름
리매핑 소스
network.host.ip
tcp.local.address - Node.js
network.destination.ip
out.host - 모든 언어
network.destination.port
grpc.port - Python tcp.remote.port - Node.js out.port - 모든 언어
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 - 모든 언어
리소스를 기반으로 트레이스 무시하기
ignore resources 옵션을 사용하면 트레이스의 전역 루트 스팬이 특정 기준과 일치할 경우 해당 리소스를 제외할 수 있습니다. 수집 대상에서 리소스 제외를 참조하세요. 이 옵션은 이 특정 Datadog Agent에 트레이스를 전송하는 모든 서비스에 적용됩니다. ignore resources로 인해 삭제된 트레이스는 트레이스 메트릭에 포함되지 않습니다.
무시할 리소스는 Agent 구성 파일 datadog.yaml 또는 DD_APM_IGNORE_RESOURCES 환경 변수를 사용하여 지정할 수 있습니다. 아래 예제를 참조하세요.
datadog.yaml 사용:
datadog.yaml
apm_config:## @param ignore_resources - list of strings - optional## A list of regular expressions can be provided to exclude certain traces based on their resource name.## All entries must be surrounded by double quotes and separated by commas.ignore_resources:["(GET|POST) /healthcheck","API::NotesController#index"]
Kubernetes로 전용 컨테이너를 사용하는 경우 ignore resources 옵션으로 사용하는 환경 변수가 trace-agent 컨테이너에 적용되는지 다시 확인하세요.
예시
트레이스에 포함하고 싶지 않은 /api/healthcheck 호출이 있는 트레이스 예시를 보겠습니다.
전역 루트 스팬의 리소스 이름을 확인하세요.
작업 이름: rack.request
리소스 이름: Api::HealthchecksController#index
Http.url: /api/healthcheck
ignore resources 옵션을 올바르게 사용하려면 작성한 정규식이 전역 루트 스팬의 리소스 이름(Api::HealthchecksController#index)과 일치해야 합니다. 몇 가지 정규식 옵션을 사용할 수 있지만, 이 리소스의 트레이스를 정확히 제외하려면 사용할 수 있는 정규식의 한 예는 Api::HealthchecksController#index$입니다.
Amazon ECS(예: EC2)를 사용하는 경우, Datadog Agent 컨테이너 정의에서 환경 변수 DD_APM_IGNORE_RESOURCES와 값을 추가하여 JSON에서 다음과 같은 결과가 나오도록 하세요.
"environment":[// other environment variables for the Datadog Agent
{"name":"DD_APM_IGNORE_RESOURCES","value":"Api::HealthchecksController#index$"}]
이렇게 트레이스를 필터링하면 해당 요청이 트레이스 메트릭에서도 제거됩니다. 트레이스 메트릭에 영향을 주지 않고 수집량을 줄이는 방법에 대한 정보는 수집 제어.
를 참조하세요.
트레이서 구성
일부 언어 트레이서는 Datadog Agent로 전송되기 전에 트레이스를 제거할 수 있습니다. 애플리케이션별 요구 사항이 있는 경우 이 옵션을 사용하세요.
1. 요청이 분산된 트레이스와 연결되어 있을 경우, 이 필터링 규칙으로 트레이스 일부가 제외될 경우 결과 트레이스에 샘플링 부정확성이 있을 수 있으니 유의하세요. 2. 이렇게 트레이스를 필터링하면 해당 요청이 트레이스 메트릭에서도 제거됩니다. 트레이스 메트릭에 영향을 주지 않고 수집량을 줄이는 방법에 대한 정보는 수집 제어.
Ruby 트레이서는 특정 기준을 충족하는 트레이스를 제거하는 후처리 파이프라인을 가지고 있습니다. 자세한 정보와 예시는 트레이스 후처리에서 확인할 수 있습니다.
예를 들어, 리소스 이름이 Api::HealthchecksController#index인 경우, 리소스 이름이 포함된 트레이스를 제거하기 위해 Datadog::Tracing::Pipeline::SpanFilter 클래스를 사용하세요. 이 필터는 스팬 객체에 대해 사용 가능한 다른 메타데이터를 기준으로 매칭하는 데에도 사용할 수 있습니다.
fromddtrace.traceimporttracerfromddtrace.traceimportTraceFilterimportreclassCustomFilter(TraceFilter):def__init__(self,pattern):self.pattern=re.compile(pattern)defprocess_trace(self,trace):forspanintrace:ifspan.get_tag('http.url')andself.pattern.match(span.get_tag('http.url')):returnNone# Drop the tracereturntrace# Keep the trace# Configure the SDK with your custom filtertracer.configure(trace_processors=[CustomFilter(r'http://.*/healthcheck$')])
Http 플러그인에 차단 목록을 구성합니다. 차단 목록이 무엇을 기준으로 매칭하는지 API 문서에서 확인하세요. 예를 들어, 들어오는 HTTP 요청은 URL 경로를 기준으로 매칭합니다. 따라서 트레이스의 http.url 스팬 태그가 http://<domain>/healthcheck인 경우, healthcheck URL과 매칭되는 규칙을 작성합니다.