Azure Container Apps Datadog로 OpenTelemetry 데이터 내보내기

이 가이드에서는 관리형 OpenTelemetry 에이전트를 사용하여 로그, 추적 및 메트릭을 Datadog에 전달하도록 Azure Container Apps 구성하는 방법을 보여 줍니다.

관리되는 OpenTelemetry 에이전트에 대한 자세한 내용은 Azure Container Apps 참조하세요.

학습 내용

  • 원격 분석 수집을 위한 Datadog API 키를 만듭니다.
  • Bicep, Azure CLI 또는 Azure 포털을 사용하여 Container Apps 환경에서 Datadog 대상을 구성합니다.
  • 기존 Container Apps 환경 및 앱에 구성 업데이트를 적용합니다.
  • Datadog에서 텔레메트리를 확인합니다.

Prerequisites

  • 리소스 그룹을 만들고 Azure Container Apps 리소스를 배포할 수 있는 Azure 구독입니다.
  • Datadog 환경 및 API 키입니다.
  • Azure CLI가 설치되고 로그인되었습니다.
  • Azure Container Apps CLI 확장이 설치되었습니다.
az extension add --name containerapp --upgrade

Datadog API 키 만들기

원격 분석 수집을 허용하는 권한이 있는 Datadog API 키를 만듭니다.

Container Apps 관리형 OTel 구성에는 다음 Datadog 값이 필요합니다.

  • site (Datadog 사이트의 전체 값(예: datadoghq.com, us3.datadoghq.com, us5.datadoghq.com, datadoghq.eu))
  • key (Datadog API 키)

Datadog 키 만들기 및 관리는 Datadog API 및 애플리케이션 키를 참조하세요.

OpenTelemetry 대상 구성

다음 옵션 중 하나를 사용하여 Container Apps 환경에서 Datadog를 OpenTelemetry 대상으로 구성합니다.

Important

관리형 OpenTelemetry 대상을 구성해도 원격 분석이 자동으로 생성되지는 않습니다. 또한 OpenTelemetry SDK를 사용하여 추적, 메트릭 및 로그를 내보내도록 애플리케이션을 계측해야 합니다.

배포 명령에 대한 CLI 변수를 설정합니다.

$RESOURCE_GROUP = "<resource-group-name>"
$DATADOG_SITE = "<datadog-site>" # Example: us3.datadoghq.com, us5.datadoghq.com, datadoghq.eu
$DATADOG_API_KEY = ""
$IMAGE = ""
$ACR_USERNAME = ""
$ACR_PASSWORD = ""

다음 예제와 같이 관리되는 환경 리소스 블록을 사용합니다.

param datadogSite string
@secure()
param datadogApiKey string

var datadogDestinationName = 'dataDog'

resource environment 'Microsoft.App/managedEnvironments@2024-10-02-preview' = {
  name: ''
  location: ''
  properties: {
    openTelemetryConfiguration: {
      destinationsConfiguration: {
        dataDogConfiguration: {
          site: datadogSite
          key: datadogApiKey
        }
      }
      tracesConfiguration: {
        destinations: [
          datadogDestinationName
        ]
      }
      logsConfiguration: {
        destinations: [
          datadogDestinationName
        ]
      }
      metricsConfiguration: {
        destinations: [
          datadogDestinationName
        ]
      }
    }
  }
}

다음 예제와 같은 컨테이너 앱 리소스 블록을 사용하여 필요한 환경 변수를 설정합니다.

resource app 'Microsoft.App/containerApps@2024-10-02-preview' = {
  name: ''
  location: ''
  properties: {
    managedEnvironmentId: environment.id
    template: {
      containers: [
        {
          name: ''
          image: ''
          env: [
            {
              name: 'OTEL_SERVICE_NAME'
              value: ''
            }
            {
              name: 'OTEL_TRACES_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_METRICS_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_LOGS_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_EXPORTER_OTLP_PROTOCOL'
              value: 'grpc'
            }
          ]
        }
      ]
    }
  }
}

프로덕션 배포의 경우 비밀 하드 코딩 대신 보안 Bicep 매개 변수 또는 Key Vault 통해 토큰 값을 전달합니다.

템플릿을 업데이트한 후 리포지토리 루트에서 Bicep 구성을 배포합니다.

az deployment group create `
  --resource-group $RESOURCE_GROUP `
  --template-file infra/main.bicep `
  --parameters @infra/main.parameters.json `
  image=$IMAGE `
  acrUsername=$ACR_USERNAME `
  acrPassword=$ACR_PASSWORD `
  datadogSite="$DATADOG_SITE" `
  datadogApiKey="$DATADOG_API_KEY"

이제 컨테이너 앱이 관리형 OpenTelemetry 에이전트를 통해 Datadog로 텔레메트리를 전송하도록 구성되었습니다.

Datadog에서 OpenTelemetry 데이터 확인

구성을 완료하면 컨테이너 앱이 관리형 OpenTelemetry 에이전트를 통해 Datadog에 원격 분석을 보내기 시작합니다. Datadog를 사용하여 로그, 추적 및 메트릭이 애플리케이션에서 도착하며 데이터가 예상 서비스 및 환경 컨텍스트에 표시되는지 확인합니다.

로그 탐색, 분산 추적 및 메트릭 검색과 같은 Datadog 도구를 확인하여 결과의 유효성을 검사합니다. 정확한 쿼리 또는 탐색 경로는 검사하는 데이터에 따라 달라집니다.

Datadog의 데이터 탐색에 대한 자세한 내용은 Datadog 관찰 가능성 및 원격 분석을 참조하세요.