在 Azure 容器应用 中将 OpenTelemetry 数据导出到 Datadog

本指南说明如何使用托管的 OpenTelemetry 代理,将 Azure 容器应用 配置为把日志、跟踪和指标转发到 Datadog。

有关托管 OpenTelemetry 代理的详细信息,请参阅 在 Azure 容器应用

学习内容

  • 创建用于遥测数据摄取的 Datadog API 密钥。
  • 使用 Bicep、Azure CLI 或 Azure 门户在容器应用环境中配置 Datadog 目标。
  • 将配置更新应用到现有的容器应用环境和应用。
  • 验证 Datadog 中的遥测数据。

先决条件

  • Azure订阅,可在其中创建资源组并部署Azure 容器应用资源。
  • Datadog 环境和 API 密钥。
  • 已安装并登录 Azure CLI。
  • 已安装 Azure 容器应用 CLI 扩展。
az extension add --name containerapp --upgrade

创建 Datadog API 密钥

使用允许遥测引入的权限创建 Datadog API 密钥。

对于容器应用托管 OTel 配置,需要以下 Datadog 值:

  • site(完整的 Datadog 站点值,例如:datadoghq.comus3.datadoghq.comus5.datadoghq.comdatadoghq.eu
  • key (Datadog API 密钥)

有关 Datadog 密钥的创建和管理,请参阅 Datadog API 和应用程序密钥

配置 OpenTelemetry 目标

使用以下选项之一将 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 参数或 密钥保管库 传递令牌值,而不要将机密硬编码。

更新模板后,从存储库根目录部署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 可观测性和遥测