Esportare OpenTelemetry New Relic in Azure Container App

Questa guida di configurazione illustra come configurare App contenitore di Azure per inoltrare log, tracce e metriche a New Relic usando l'agente OpenTelemetry gestito.

Per altre informazioni sull'agente OpenTelemetry gestito, vedere Impostare gli agenti OpenTelemetry in App contenitore di Azure.

In questa guida si apprenderà come:

  • Creare una chiave di acquisizione di New Relic.
  • Configurare una destinazione OTLP di New Relic usando Bicep o il portale di Azure.
  • Configurare le variabili di ambiente dell'app necessarie.
  • Applica gli aggiornamenti di configurazione all'ambiente e all'app Container Apps esistenti.
  • Controllare i dati di telemetria in New Relic.

Prerequisiti

  • Sottoscrizione Azure in cui è possibile aggiornare le risorse di App contenitore di Azure esistenti.
  • Autorizzazioni per modificare il gruppo di risorse di destinazione e l'ambiente gestito.
  • Un account New Relic.
  • interfaccia della riga di comando di Azure è stato installato e l'accesso è avvenuto.
  • Estensione dell'interfaccia della riga di comando di App contenitore di Azure installata.
az extension add --name containerapp --upgrade

Crea una chiave di ingestione di New Relic

Usare le linee guida per la creazione di chiavi API per creare la chiave API New Relic: Chiavi API New Relic. Scegliere il tipo di chiave di inserimento - Licenza durante la creazione della chiave, perché questo tipo viene usato per l'inserimento di dati.

Ottieni il valore della chiave di licenza di acquisizione dall'account:

  • In New Relic passare a Chiavi API.
  • Individua il codice Ingest - Licenza.
  • Copiare il valore della chiave da usare nella configurazione di destinazione.

Configurare le destinazioni OpenTelemetry

Usa una delle opzioni seguenti per configurare New Relic come endpoint OTel nell'ambiente Container Apps.

Importante

La configurazione di una destinazione OpenTelemetry gestita non produce automaticamente dati di telemetria. L'applicazione deve essere già instrumentata per generare tracce, metriche e log usando OpenTelemetry SDK.

Imposta le variabili CLI per la distribuzione:

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

Usare l'endpoint di base OTLP di New Relic (https://otlp.nr-data.net) con la porta OTLP appropriata:

  • HTTP: 4318
  • gRPC: 4317

Usare questo frammento di codice di tipo risorsa dell'ambiente gestito per configurare il routing di destinazione:

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
        ]
      }
    }
  }
}

Usare questo frammento di codice di tipo risorsa dell'app per impostare le variabili di ambiente dell'app necessarie:

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'
            }
          ]
        }
      ]
    }
  }
}

Applicate la configurazione Bicep a partire dalla radice del repository:

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"

L'app contenitore è ora configurata per inviare dati di telemetria a New Relic.

Controllare i dati di telemetria in New Relic

Dopo la configurazione, verificare che i log, le tracce e le metriche arrivino dall'applicazione in New Relic e siano associati all'identità del servizio prevista.

Usare le esperienze di New Relic che soddisfano il flusso di lavoro, ad esempio traccia distribuita, ricerca log ed esplorazione delle metriche.

Per altre informazioni sull'esplorazione e l'analisi in New Relic, vedere la documentazione di New Relic.