Rust SDK 구성 (Configuring the Rust SDK)
애플리케이션에서 Rust SDK를 설정한 뒤, 필요에 따라 다음 환경 변수를 사용해 구성할 수 있어요.
출처: 문서
본문
런타임 구성을 확인하고 설정을 검증하려면 Datadog에서 서비스의 현재 구성을 확인하세요. APM Service Page로 이동해 Service Config를 클릭하고 SDK Configuration 탭을 선택하세요.
서비스의 env, service, version을 설정하려면 DD_ENV, DD_SERVICE, DD_VERSION을 사용하는 것이 좋아요.
구성 키 (Configuration keys)
이 라이브러리에 사용 가능한 구성 키는 48개예요.
일반 설정 (General Settings)
(5)
최상위 Datadog 구성: API 키, 서비스 식별, Agent 연결, 인테이크 사이트, 호스트명, 전역 태그, 프록시 설정.
DD_AGENT_HOST
타입: string 기본값: localhost 별칭: DD_TRACE_AGENT_HOSTNAME 트레이스를 위해 Datadog Agent에 연결할 때 사용하는 호스트 이름이에요. 호스트 이름은 IPv4, IPv6, 또는 도메인 이름일 수 있어요. DD_TRACE_AGENT_URL이 지정되면 DD_AGENT_HOST 값은 무시돼요.
DD_ENV
타입: string 트레이서가 내보내는 모든 텔레메트리(트레이스, 메트릭, 로그, 프로파일)에 적용되는 전역 env 태그를 설정해요. prod, staging, dev 같은 환경을 구분하는 데 사용해요.
DD_SERVICE
타입: string 기본값: unnamed-rust-service 애플리케이션의 서비스 이름을 설정해요.
DD_TAGS
타입: map 쉼표로 구분된 key:value 쌍(예: layer:api,team:intake)으로 제공되는, 트레이스·프로파일·메트릭에 적용되는 사용자 지정 태그예요.
DD_VERSION
타입: string
트레이스와 로그에서 version 태그로 사용되는 애플리케이션 버전을 설정해요(예: 1.2.3, 6c44da20, 2020.02.13).
언어별 참고:
- PHP: 버전
0.90.0부터 런타임에서ini_set('datadog.version', ...)로 변경한 사항이 현재 루트 스팬에도 적용돼요.
트레이싱 코어 (Tracing Core)
(7)
핵심 분산 트레이싱 엔진: Agent 연결, 트레이스·스팬 ID 생성, 스팬 수명주기 관리, 피어 서비스 매핑, 리소스 정규화, 쿼리 문자열 난독화, DB 클라이언트 구성.
DD_TRACE_AGENT_PORT
타입: int 기본값: 8126 트레이서가 제출하는 Trace Agent의 포트예요. Agent 구성에서 receiver_port나 DD_APM_RECEIVER_PORT를 기본값 8126이 아닌 값으로 설정했다면 DD_TRACE_AGENT_PORT 또는 DD_TRACE_AGENT_URL이 그 값과 일치해야 해요.
DD_TRACE_AGENT_URL
타입: string 별칭: DD_TRACE_URL 트레이스가 전송되는 URL 엔드포인트를 설정해요. 설정하면 DD_AGENT_HOST와 DD_TRACE_AGENT_PORT를 재정의해요. 기본값은 http://<DD_AGENT_HOST>:<DD_TRACE_AGENT_PORT>이에요.
DD_TRACE_ENABLED
타입: boolean 기본값: true 별칭: DD_TRACING_ENABLED 프레임워크 및 라이브러리 계측을 활성화해요. false로 설정하면 애플리케이션 코드가 트레이스를 생성하지 않아요. DD_APM_TRACING_ENABLED도 참고하세요.
DD_TRACE_PARTIAL_FLUSH_ENABLED
타입: boolean 기본값: false 큰 트레이스를 Datadog Agent로 점진적으로 플러시해 Agent가 거부할 가능성을 줄여 줘요. 오래 지속되는 트레이스나 스팬이 많은 트레이스가 있을 때만 사용하세요.
DD_TRACE_PARTIAL_FLUSH_MIN_SPANS
타입: int 기본값: 300 부분 플러시가 트리거되기 전 트레이스에 필요한 최소 스팬 수예요.
DD_TRACE_STATS_COMPUTATION_ENABLED
타입: boolean 기본값: true 별칭: DD_TRACE_TRACER_METRICS_ENABLED 클라이언트 측 트레이스 통계 계산을 활성화할지 제어해요. 활성화하면 트레이서가 수집을 위해 스팬 통계를 사전 집계해요.
DD_TRACE_X_DATADOG_TAGS_MAX_LENGTH
타입: int 기본값: 512 트레이스 태그 전파를 위한 x-datadog-tags 헤더의 최대 길이예요. 비활성화하려면 0으로 설정하세요.
트레이스 샘플링 (Trace Sampling)
(2)
어떤 트레이스와 스팬을 유지하거나 버릴지 결정하는 샘플링 규칙과 비율. 서비스별 규칙, 비율 제한, 우선순위 샘플링을 포함해요.
DD_TRACE_RATE_LIMIT
타입: int 기본값: 100 초당 샘플링할 최대 트레이스 수를 설정해요. DD_TRACE_SAMPLING_RULES 또는 DD_TRACE_SAMPLE_RATE 중 하나가 설정된 경우에만 적용돼요.
DD_TRACE_SAMPLING_RULES
타입: array
트레이스 수집을 세밀하게 제어할 수 있게 해 주며, 특정 서비스·운영·리소스·태그 트레이스를 대상으로 삼을 수 있어요. 각 객체가 0.0~1.0(포함) 사이의 sample_rate를 포함해야 하는 JSON 배열로 정의돼요. 선택적으로 service, name, resource, tags, max_per_second 필드를 포함할 수 있어요. 객체는 나열된 순서대로 평가되며, 첫 번째 일치하는 객체가 트레이스의 샘플 비율을 결정해요. 자세한 내용은 수집 메커니즘을 참고하세요.
예시:
- 모든 트레이스의 20% 샘플링:
[{"sample_rate": 0.2}] - 서비스 이름이
a로 시작하고 운영 이름이b인 트레이스의 10%, 나머지의 20% 샘플링:[{"service": "a.*", "name": "b", "sample_rate": 0.1}, {"sample_rate": 0.2}] - 리소스 이름
HTTP GET트레이스의 40% 샘플링:[{"resource": "HTTP GET", "sample_rate": 0.4}] - 태그
tier=premium트레이스의 100% 샘플링:[{"tags": {"tier": "premium"}, "sample_rate": 1}] - 서비스
my-service와 운영 이름http.request에 대해 50% 비율로 초당 최대 50 트레이스 샘플링:[{"service": "my-service", "name": "http.request", "sample_rate": 0.5, "max_per_second": 50}]
트레이스 전파 (Trace Propagation)
(5)
분산 트레이스 컨텍스트 전파, 추출·주입 동작, 배기지(baggage) 처리, 헤더 태깅, HTTP 클라이언트·서버 구성, Database Monitoring을 위한 SQL 주석 주입.
DD_TRACE_PROPAGATION_BEHAVIOR_EXTRACT
타입: string 기본값: continue 버전: v0.5.0 들어오는 분산 트레이싱 헤더가 서비스 수준에서 처리되는 방식을 지정해요. 허용 값: continue: 들어오는 분산 트레이싱 헤더가 유효한 트레이스 컨텍스트를 나타내면 SDK가 분산 트레이스를 계속해요. restart: SDK가 항상 새 트레이스를 시작해요. 들어오는 분산 트레이싱 헤더가 유효한 트레이스 컨텍스트를 나타내면 그 트레이스 컨텍스트는 서비스 진입 스팬의 스팬 링크로 표시돼요(continue 구성의 부모 스팬 대신). ignore: SDK가 항상 새 트레이스를 시작하고 모든 들어오는 분산 트레이싱 헤더를 무시해요.
DD_TRACE_PROPAGATION_EXTRACT_FIRST
타입: boolean 기본값: false true로 설정하면 첫 번째 성공적인 트레이스 컨텍스트 추출 후 추출을 중지해요.
DD_TRACE_PROPAGATION_STYLE
타입: array 기본값: datadog,tracecontext 분산 트레이싱 전파 데이터를 주입·추출하려 시도할 헤더 형식의 쉼표 구분 목록이에요. 완전하고 유효한 헤더가 있는 첫 번째 형식이 계속할 트레이스를 정의하는 데 사용돼요. 더 구체적인 DD_TRACE_PROPAGATION_STYLE_INJECT, DD_TRACE_PROPAGATION_STYLE_EXTRACT 구성이 있으면 우선해요.
DD_TRACE_PROPAGATION_STYLE_EXTRACT
타입: array 분산 트레이싱 전파 데이터를 추출하려 시도할 헤더 형식의 쉼표 구분 목록이에요. 완전하고 유효한 헤더가 있는 첫 번째 형식이 계속할 트레이스를 정의하는 데 사용돼요.
DD_TRACE_PROPAGATION_STYLE_INJECT
타입: array 서비스 간 분산 트레이스를 전파하기 위해 포함할 헤더 형식의 쉼표 구분 목록이에요.
트레이스 로깅 (Trace Logging)
(1)
트레이서 로그 출력 설정: 로그 수준, 로그 파일 경로, 로그 회전, 시작 진단.
DD_LOG_LEVEL
타입: string 기본값: ERROR SDK의 내부 로그 수준을 설정해요. 유효한 값: DEBUG, INFO, WARN, ERROR.
로그 제출 및 상관관계 (Log Submission & Correlation)
(1)
Datadog로 직접 로그 제출, 에이전트 없는 로그 전달, 트레이스-로그 상관관계를 위한 로그 주입, OpenTelemetry 로그 내보내기.
DD_LOGS_OTEL_ENABLED
타입: boolean 기본값: true 버전: v0.3.0 OTLP를 통한 로그 내보내기 지원을 활성화해요.
런타임 메트릭 (Runtime Metrics)
(3)
런타임 메트릭 수집과 메트릭 제출을 위한 DogStatsD 연결 구성.
DD_DOGSTATSD_HOST
타입: string 기본값: localhost 별칭: DD_DOGSTATSD_HOSTNAME 기본 트레이서가 DogStatsD 메트릭을 제출하려 시도하는 Trace Agent 호스트의 주소를 재정의해요. DD_DOGSTATSD_HOST를 재정의하려면 DD_AGENT_HOST를 사용하세요.
DD_DOGSTATSD_PORT
타입: int 기본값: 8125 메트릭이 제출되는 DogStatsD Agent의 포트예요. Agent 구성에서 dogstatsd_port 또는 DD_DOGSTATSD_PORT를 기본값 8125이 아닌 값으로 설정했다면 이 트레이싱 라이브러리의 DD_DOGSTATSD_PORT가 그 값과 일치해야 해요.
DD_DOGSTATSD_URL
타입: string 기본값: http://localhost:8125 DogStatsD 엔드포인트에 연결하는 데 사용되는 URL이에요. DD_AGENT_HOST와 DD_DOGSTATSD_PORT보다 우선해요. udp:// 또는 unix:// 스킴만 지원해요.
계측 텔레메트리 (Instrumentation Telemetry)
(2)
트레이서 자체 보고 텔레메트리: 하트비트 간격, 의존성·로그 수집, 텔레메트리 전달자 구성.
DD_INSTRUMENTATION_TELEMETRY_ENABLED
타입: boolean 기본값: true Datadog가 제품을 개선하기 위해 애플리케이션과 런타임에 대한 환경·진단 정보를 수집할 수 있게 해 줘요. 계측 텔레메트리에서 제외하려면 false로 설정하세요.
DD_TELEMETRY_LOG_COLLECTION_ENABLED
타입: boolean 기본값: true 내부 트레이서 로그가 계측 텔레메트리의 일부로 전달되는지 제어해요.
원격 구성 (Remote Configuration)
(1)
Datadog에서 라이브 구성 업데이트를 받기 위한 원격 구성.
DD_REMOTE_CONFIGURATION_ENABLED
타입: boolean 기본값: true 별칭: DD_REMOTE_CONFIG_ENABLED 원격 구성을 활성화하거나 비활성화해요.
OpenTelemetry 호환성 (OpenTelemetry Compatibility)
(21)
Datadog SDK가 지원하는 표준 OpenTelemetry 환경 변수: 리소스 속성, 프로파게이터, 트레이스 샘플러, OTLP exporter 구성, 배치 스팬 프로세서 설정.
DD_METRICS_OTEL_ENABLED
타입: boolean 기본값: true 버전: v0.3.0 OpenTelemetry 메트릭 내보내기를 활성화하거나 비활성화해요.
OTEL_EXPORTER_OTLP_ENDPOINT
타입: string 버전: v0.3.0 재정의되지 않는 한 모든 신호에 대해 OTLP 데이터를 보내는 기본 URL을 지정해요. 기본값(gRPC): http://localhost:4317. 기본값(HTTP): http://localhost:4318.
OTEL_EXPORTER_OTLP_HEADERS
타입: map 버전: v0.3.0 OTLP 내보내기용 사용자 지정 헤더를 설정하는 구성 키예요(메트릭별 헤더의 대체값). 메트릭별 OTLP 헤더가 설정되지 않았을 때 사용돼요. 형식: api-key=key,other=value.
OTEL_EXPORTER_OTLP_LOGS_ENDPOINT
타입: string 버전: v0.3.0 별칭: OTEL_EXPORTER_OTLP_ENDPOINT OTLP 로그를 보내는 URL이에요. OTEL_EXPORTER_OTLP_ENDPOINT보다 우선해요. gRPC의 기본값은 http://localhost:4317, HTTP의 기본값은 http://localhost:4318/v1/logs이에요.
OTEL_EXPORTER_OTLP_LOGS_HEADERS
타입: string 버전: v0.3.0 별칭: OTEL_EXPORTER_OTLP_HEADERS 나가는 OTLP 로그 요청의 헤더로 사용할 키-값 쌍의 쉼표 구분 목록을 지정해요. 일반 OTEL_EXPORTER_OTLP_HEADERS보다 우선해요.
OTEL_EXPORTER_OTLP_LOGS_PROTOCOL
타입: string 기본값: SDK에 따라 다르지만 일반적으로 http/protobuf 또는 grpc 중 하나. 버전: v0.3.0 로그용 OTLP 전송 프로토콜을 지정해요. OTEL_EXPORTER_OTLP_PROTOCOL보다 우선해요. 허용 값: grpc, http/protobuf, http/json.
OTEL_EXPORTER_OTLP_LOGS_TIMEOUT
타입: int 기본값: 10000 버전: v0.3.0 별칭: OTEL_EXPORTER_OTLP_TIMEOUT 단일 나가는 OTLP 로그 요청의 타임아웃(밀리초)을 지정해요. 일반 OTEL_EXPORTER_OTLP_TIMEOUT보다 우선해요.
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT
타입: string 버전: v0.3.0 별칭: OTEL_EXPORTER_OTLP_ENDPOINT 비어 있지 않으면 OTLP 메트릭 엔드포인트로 사용돼요. 그렇지 않으면 OTEL_EXPORTER_OTLP_ENDPOINT로, 그리고 프로토콜에 따라 http://<DD_TRACE_AGENT_URL host>:4317/4318로 대체돼요. http/protobuf의 경우 누락된 /v1/metrics가 추가돼요.
OTEL_EXPORTER_OTLP_METRICS_HEADERS
타입: map 버전: v0.3.0 나가는 OTLP 메트릭 요청의 헤더로 사용할 키-값 쌍의 쉼표 구분 목록을 지정해요(예: api-key=key,other-config=value). 일반 OTEL_EXPORTER_OTLP_HEADERS보다 우선해요.
OTEL_EXPORTER_OTLP_METRICS_PROTOCOL
타입: string 버전: v0.3.0 메트릭 데이터에 사용할 OTLP 전송 프로토콜을 지정해요. 일반 OTEL_EXPORTER_OTLP_PROTOCOL보다 우선해요. 허용 값: grpc, http/protobuf, http/json.
OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE
타입: string 기본값: delta 버전: v0.3.0 메트릭 집계 시간성(temporality)을 제어해요. 허용 값: delta 또는 cumulative(대소문자 무시); 비어 있거나 잘못된 값은 delta로 처리돼요.
OTEL_EXPORTER_OTLP_METRICS_TIMEOUT
타입: int 버전: v0.3.0 OTLP 메트릭 요청의 exporter 네트워크 타임아웃(ms)으로 사용돼요. 0으로 설정하면 라이브러리가 OTEL_EXPORTER_OTLP_TIMEOUT으로 대체해요.
OTEL_EXPORTER_OTLP_PROTOCOL
타입: string 기본값: grpc 버전: v0.3.0 OTEL_EXPORTER_OTLP_METRICS_PROTOCOL이 설정되지 않았을 때 메트릭용 대체 OTLP 프로토콜로 사용돼요. 파싱되는 값: grpc, http/protobuf, http/json(대소문자 무시). 참고: http/json은 현재 메트릭에서 지원되지 않으며 메트릭 내보내기를 비활성화해요. grpc/http/protobuf는 해당 Cargo 기능(metrics-grpc/metrics-http)이 필요해요.
OTEL_EXPORTER_OTLP_TIMEOUT
타입: int 기본값: 10000 버전: v0.3.0 OTLP 내보내기 요청의 기본 타임아웃(밀리초)이에요. 신호별 타임아웃이 설정되지 않았을 때 대체값으로 사용돼요.
OTEL_LOGS_EXPORTER
타입: string 기본값: otlp 버전: v0.3.0 OTLP 로그 내보내기를 지원하는 Datadog SDK는 otlp를 기본값으로 해야 하고, 그 외에는 모두 None/null을 기본값으로 해야 해요.
OTEL_METRIC_EXPORT_INTERVAL
타입: int 기본값: 10000 버전: v0.3.0 메트릭 내보내기 시도 사이의 간격(밀리초)이에요. 기본값 10000(10초)은 Datadog가 권장하는 값이며 OpenTelemetry 사양의 기본값 60000ms와 다르다는 점을 참고하세요.
OTEL_METRIC_EXPORT_TIMEOUT
타입: int 기본값: 7500 버전: v0.3.0 단일 메트릭 배치를 수집·내보내는 데 허용되는 최대 시간(밀리초)이에요. 기본값 7500(7.5초)은 Datadog가 권장하는 값이며 OpenTelemetry 사양의 기본값 30000ms와 다르다는 점을 참고하세요.
OTEL_METRICS_EXPORTER
타입: string 기본값: otlp 버전: v0.3.0 OpenTelemetry 메트릭 exporter를 지정해요. 허용 값은 otlp와 none뿐이에요. none으로 설정하면 OTel 메트릭 방출과 APM 런타임 메트릭을 모두 비활성화해요(DD_RUNTIME_METRICS_ENABLED=false와 동일).
OTEL_PROPAGATORS
타입: array 버전: v0.5.0 트레이스 컨텍스트 추출·주입에 사용되는 프로파게이터를 구성해요.
OTEL_RESOURCE_ATTRIBUTES
타입: map 버전: v0.3.0 OpenTelemetry 리소스 속성을 (key, value) 쌍 목록으로 설정해요. 참고: 퍼센트 인코딩된 쉼표와 등호 구분자는 그대로 리터럴로 유지돼요.
OTEL_SERVICE_NAME
타입: string 버전: v0.5.0 애플리케이션의 기본 서비스 이름을 설정해요. DD_SERVICE가 설정되지 않았을 때의 DD_SERVICE 별칭이에요.