플래그 평가 메트릭을 사용하면 서버 측 애플리케이션에서 Feature Flags의 각 변형이 얼마나 자주 반환되는지 측정할 수 있습니다. 이 메트릭을 사용하여 시간 경과에 따른 플래그 채택을 추적하고, 타겟팅 규칙이 예상대로 작동하는지 확인하며, Dashboards에서 플래그 평가 데이터를 그래프로 나타낼 수 있습니다.
feature_flag.evaluations 메트릭은 실험적 기능이며 향후 릴리스에서 변경되거나 제거될 수 있습니다.
feature_flag.evaluations 메트릭은 실험 노출 이벤트 및 이벤트 플랫폼 프록시(EVP) 플래그 평가 이벤트와는 별개입니다. 노출 및 EVP 이벤트 송신은 포트 8126의 표준 트레이서 URL을 사용합니다. 이 메트릭은 포트 4317 또는 4318의 OTLP 엔드포인트를 사용합니다.
레거시 활성화 경로를 사용하는 Agent 기반 구성의 경우, 애플리케이션에 DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED=true가 설정되어 있어야 합니다.
서버 측 트레이서가 플래그 평가 메트릭 지원을 위한 최소 버전을 충족해야 합니다.
언어
최소 트레이서 버전
.NET
3.44.0
Go
2.8.0
Java
1.62.0
Node.js
5.99.0
PHP
1.21.1
Python
4.7.0
Ruby
2.32.0
Agentless 구성 전달과 이 메트릭은 독립적인 경로를 사용합니다. Agentless SDK는 지원되는 Agent 기반 또는 서버리스 텔레메트리 설정을 통해 필요한 OTLP 경로를 구성할 때 메트릭을 내보낼 수 있습니다.
1단계: OTLP 수신기 구성
플래그 평가 메트릭은 OpenTelemetry(OTLP)를 통해 내보내집니다. Agent 기반 배포의 경우, 기본적으로 꺼져 있는 Datadog Agent OTLP 수신기를 활성화해야 합니다. 설정 지침은 Datadog Agent에 의한 OTLP 수집을 참조하세요. Agent가 없는 서버리스 배포의 경우, Serverless Monitoring 설정에서 지원하는 OTLP 또는 사용자 지정 메트릭 경로를 사용하세요.
애플리케이션이 사용하는 프로토콜(포트 4317의 gRPC 또는 포트 4318의 HTTP)만 활성화하면 됩니다.
Docker에서 Agent v7.61.0 이상을 실행 중인 경우, OTLP 파이프라인의 알려진 문제를 해결하기 위해 Agent 컨테이너에서 HOST_PROC=/proc 을 설정하세요.
# Enable flag evaluation metricsDD_METRICS_OTEL_ENABLED=true
Java: OpenTelemetry SDK 종속성 추가
Java 공급자는 OpenTelemetry SDK를 통해 feature_flag.evaluations를 기록하고 OTLP를 통해 내보내므로 opentelemetry-sdk-metrics 및 opentelemetry-exporter-otlp 종속성이 애플리케이션의 클래스 경로에 있어야 합니다. Java Feature Flags 종속성과 함께 추가하세요. OpenTelemetry BOM을 가져와 OpenTelemetry API와 SDK의 버전이 동일하게 유지되도록 하세요.
Java 트레이서에서 공급자는 OpenTelemetry SDK가 클래스 경로에 있으면 OTLP 메트릭 익스포터를 자동으로 시작합니다. 종속성이 누락되면 메트릭이 내보내지지 않고 트레이서가 OpenTelemetry SDK is not on the classpath를 기록합니다.
Spring Boot 애플리케이션에서 Spring Boot의 OpenTelemetry 자동 구성은 OpenTelemetrySdk Bean도 생성합니다. 해결된 OpenTelemetry SDK 버전이 클래스 경로의 OpenTelemetry API 버전과 일치하지 않으면 시작 시 BeanCreationException for the openTelemetry Bean 및 NoClassDefFoundError: io/opentelemetry/sdk/internal/ScopeConfigurator오류가 발생하면서 실패합니다. 위와 같이 opentelemetry-bom 을 가져오면 API와 SDK가 동일한 버전으로 유지되고 오류가 해결됩니다.
Ruby: OpenTelemetry 메트릭 gem 추가
Ruby 애플리케이션의 경우, 애플리케이션 번들에 OpenTelemetry 메트릭 SDK 및 OTLP 메트릭 익스포터 gem을 추가하세요.
bundle install을 사용하여 gem을 설치합니다. 이 gem들은 OpenTelemetry 미터 공급자와 OTLP 메트릭 익스포터를 제공합니다. Ruby 트레이서는 DD_METRICS_OTEL_ENABLED=true가 설정되었을 때 이를 사용합니다. gem이 누락된 경우, Ruby 트레이서는 feature_flag.evaluations 메트릭을 내보내지 않고 Failed to load OpenTelemetry metrics gems를 기록합니다.
엔드포인트 구성
DD_TRACE_AGENT_URL 및 포트 8126의 표준 serverless-init 리스너는 OTLP 메트릭 엔드포인트를 구성하지 않습니다. 다음 섹션에 설명된 대로 OTLP 엔드포인트를 별도로 구성하세요. Agent가 없는 서버리스 배포의 경우, 이 메트릭을 구성하기 전에 플랫폼에 대한 Serverless Monitoring 설정을 따릅니다.
기본적으로 대부분의 트레이서는 포트 4318(HTTP)을 통해 DD_AGENT_HOST의 Agent로 OTLP 메트릭을 보냅니다. 애플리케이션에서 Agent에 도달하기 위해 이미 DD_AGENT_HOST를 설정한 경우, 엔드포인트 구성은 필요하지 않습니다.
다음 중 하나에 해당하는 경우 OTLP 엔드포인트를 명시적으로 설정하세요.
Agent가 기본 OTLP 포트의 DD_AGENT_HOST에서 도달할 수 없는 경우(예: 원격 Agent 또는 기본값이 아닌 포트).
Java 트레이서를 사용하는 경우. 해당 플래그 평가 메트릭 익스포터는 포트 4318에서 OTLP/HTTP만 지원합니다(gRPC는 지원되지 않음). Java 트레이서는 DD_AGENT_HOST에서 엔드포인트를 파생하지 않으며 기본값은 http://localhost:4318입니다. Agent가 localhost에 있지 않을 때 OTEL_EXPORTER_OTLP_ENDPOINT를 Agent의 HTTP 엔드포인트로 설정합니다.
Python 트레이서를 사용하는 경우. Python 트레이서는 기본적으로 HTTP가 아닌 포트 4317의 gRPC를 사용합니다. Agent에서 gRPC OTLP 수신기를 활성화하거나 프로토콜을 재정의하여 HTTP를 대신 사용하세요.
# Point OTLP data at the Datadog Agent (HTTP, port 4318)OTEL_EXPORTER_OTLP_ENDPOINT=http://<AGENT_HOST>:4318
# Or use gRPC (port 4317). For most tracers, the default protocol is http/protobuf,# so set the protocol explicitly when switching to gRPC:# OTEL_EXPORTER_OTLP_ENDPOINT=http://<AGENT_HOST>:4317# OTEL_EXPORTER_OTLP_PROTOCOL=grpc
<AGENT_HOST>를 Datadog Agent의 호스트 이름 또는 IP 주소로 바꿉니다.
Docker Compose 예시:
docker-compose.yml
services:datadog-agent:environment:- DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_GRPC_ENDPOINT=0.0.0.0:4317- DD_OTLP_CONFIG_RECEIVER_PROTOCOLS_HTTP_ENDPOINT=0.0.0.0:4318- HOST_PROC=/proc # If running Agent v7.61.0+ in Dockerapp-go:environment:- DD_EXPERIMENTAL_FLAGGING_PROVIDER_ENABLED=true- DD_METRICS_OTEL_ENABLED=true- OTEL_EXPORTER_OTLP_ENDPOINT=http://datadog-agent:4318depends_on:datadog-agent:condition:service_healthy