Exporter OpenTelemetry New Relic dans Azure Container Apps

Ce guide de configuration montre comment configurer Azure Container Apps pour transférer des journaux, des suivis et des métriques vers New Relic à l’aide de l’assistant OpenTelemetry géré.

Pour plus d’informations sur l’agent OpenTelemetry managé, consultez Set up OpenTelemetry agents in Azure Container Apps.

Dans ce guide, vous apprendrez comment :

  • Créez une clé d’ingestion New Relic.
  • Configurez une destination OTLP New Relic à l’aide de Bicep ou du portail Azure.
  • Configurez les variables d’environnement d’application requises.
  • Appliquez des mises à jour de configuration à votre environnement et application Container Apps existants.
  • Vérifiez les données de télémétrie dans New Relic.

Prerequisites

  • Un abonnement Azure dans lequel vous pouvez mettre à jour des ressources Azure Container Apps existantes.
  • Autorisations pour modifier le groupe de ressources cible et l’environnement managé.
  • Un compte New Relic.
  • Azure CLI installé et connecté.
  • Azure Container Apps extension CLI installée.
az extension add --name containerapp --upgrade

Créer une clé d’ingestion New Relic

Utilisez les instructions de création de clé API pour créer votre clé API New Relic : clés API New Relic. Choisissez le type Ingestion - Clé de licence lors de la création de la clé, car ce type est utilisé pour l’ingestion de données.

Récupérez la valeur de la clé de licence d’ingestion depuis votre compte :

  • Dans New Relic, accédez aux clés API.
  • Recherchez la clé Ingest - License.
  • Copiez la valeur de clé à utiliser dans la configuration de destination.

Configurer des destinations OpenTelemetry

Utilisez l’une des options suivantes pour configurer New Relic en tant que point de terminaison OTel dans votre environnement Container Apps.

Important

La configuration d’une destination OpenTelemetry managée ne produit pas automatiquement de données de télémétrie. Votre application doit déjà être instrumentée pour émettre des traces, des métriques et des logs à l’aide d’un SDK OpenTelemetry.

Définissez les variables CLI pour le déploiement :

$RESOURCE_GROUP = "<resource-group-name>"
$NEW_RELIC_OTLP_ENDPOINT = "https://otlp.nr-data.net:4318"
$NEW_RELIC_INGEST_KEY = "<new-relic-ingest-license-key>"

Utilisez le point de terminaison de base OTLP New Relic (https://otlp.nr-data.net) avec le port OTLP approprié :

  • HTTP : 4318
  • gRPC : 4317

Utilisez cet extrait de code de style de ressource d’environnement managé pour configurer le routage de destination :

var newRelicDestinationName = 'newrelic'
var newRelicAuthHeaderValue = newRelicIngestKey

@secure()
param newRelicIngestKey string
param newRelicOtlpEndpoint string = 'https://otlp.nr-data.net:4318'
@allowed([
  'http'
  'grpc'
])
param newRelicOtlpProtocol string = 'http'

resource environment 'Microsoft.App/managedEnvironments@2026-03-02-preview' = {
  name: '<managed-environment-name>'
  location: '<region>'
  properties: {
    openTelemetryConfiguration: {
      destinationsConfiguration: {
        otlpConfigurations: [
          {
            name: newRelicDestinationName
            endpoint: newRelicOtlpEndpoint
            protocol: newRelicOtlpProtocol
            insecure: false
            headers: [
              {
                key: 'api-key'
                value: newRelicAuthHeaderValue
              }
            ]
          }
        ]
      }
      tracesConfiguration: {
        destinations: [
          newRelicDestinationName
        ]
      }
      logsConfiguration: {
        destinations: [
          newRelicDestinationName
        ]
      }
      metricsConfiguration: {
        destinations: [
          newRelicDestinationName
        ]
      }
    }
  }
}

Utilisez cet extrait de code de style de ressource d’application pour définir les variables d’environnement d’application requises :

resource app 'Microsoft.App/containerApps@2023-05-01' = {
  name: '<container-app-name>'
  location: '<region>'
  properties: {
    managedEnvironmentId: environment.id
    template: {
      containers: [
        {
          name: '<container-name>'
          image: '<image-name>'
          env: [
            {
              name: 'OTEL_SERVICE_NAME'
              value: '<service-name>'
            }
            {
              name: 'OTEL_TRACES_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_METRICS_EXPORTER'
              value: 'otlp'
            }
            {
              name: 'OTEL_LOGS_EXPORTER'
              value: 'otlp'
            }
          ]
        }
      ]
    }
  }
}

Appliquez votre configuration Bicep à partir de la racine du référentiel :

az deployment group create `
  --resource-group $RESOURCE_GROUP `
  --template-file infra/main.bicep `
  --parameters @infra/main.parameters.json `
  --parameters newRelicOtlpEndpoint="$NEW_RELIC_OTLP_ENDPOINT" `
  --parameters newRelicIngestKey="$NEW_RELIC_INGEST_KEY"

Votre application conteneur est maintenant configurée pour envoyer des données de télémétrie à New Relic.

Vérifier la télémétrie dans New Relic

Après avoir configuré, vérifiez que les journaux, les suivis et les métriques parviennent à New Relic depuis votre application et sont associés à l’identité de service attendue.

Utilisez les expériences New Relic qui correspondent à votre flux de travail, comme le suivi distribué, la recherche dans les journaux et l’exploration des métriques.

Pour plus d’informations sur l’exploration et l’analyse dans New Relic, consultez la documentation de New Relic.