Eksportowanie OpenTelemetry do New Relic w Azure Container Apps

W tym przewodniku pokazano, jak skonfigurować usługę Azure Container Apps do przekazywania dzienników, śladów i metryk do New Relic przy użyciu zarządzanego agenta OpenTelemetry.

Aby uzyskać więcej informacji na temat zarządzanego agenta OpenTelemetry, zobacz Set up OpenTelemetry agents in Azure Container Apps (Konfigurowanie agentów OpenTelemetry w programie Azure Container Apps

Z tego przewodnika dowiesz się, jak wykonywać następujące działania:

  • Utwórz klucz ingestu New Relic.
  • Skonfiguruj nowy obiekt docelowy New Relic OTLP za pomocą narzędzia Bicep lub witryny Azure Portal.
  • Skonfiguruj wymagane zmienne środowiskowe aplikacji.
  • Zastosuj aktualizacje konfiguracji do istniejącego środowiska i aplikacji usługi Container Apps.
  • Sprawdź telemetrię w New Relic.

Wymagania wstępne

  • Subskrypcja Azure, w której można aktualizować istniejące zasoby Azure Container Apps.
  • Uprawnienia do modyfikowania docelowej grupy zasobów i środowiska zarządzanego.
  • Konto New Relic.
  • Azure CLI zainstalowane i zalogowane.
  • Zainstalowano rozszerzenie interfejsu wiersza polecenia Azure Container Apps.
az extension add --name containerapp --upgrade

Tworzenie nowego klucza pozyskiwania relic

Skorzystaj ze wskazówek dotyczących tworzenia klucza interfejsu API, aby utworzyć nowy klucz interfejsu API Relic: nowe klucze interfejsu API Relic. Wybierz typ Ingest - License Key podczas tworzenia klucza, ponieważ ten typ służy do importu danych.

Pobierz wartość klucza licencji pozyskiwania z konta:

  • W New Relic przejdź do sekcji API Keys.
  • Znajdź klucz Ingest - License.
  • Skopiuj wartość klucza do użycia w konfiguracji docelowej.

Konfigurowanie miejsc docelowych OpenTelemetry

Użyj jednej z poniższych opcji, aby skonfigurować New Relic jako punkt końcowy OTel w Twoim środowisku Container Apps.

Ważna

Skonfigurowanie zarządzanego miejsca docelowego OpenTelemetry nie powoduje automatycznego generowania danych telemetrycznych. Aplikacja musi być już wyposażona w instrumentację, aby emitować ślady, metryki i dzienniki przy użyciu pakietu SDK OpenTelemetry.

Ustaw zmienne interfejsu wiersza polecenia dla wdrożenia:

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

Użyj bazowego punktu końcowego OTLP New Relic (https://otlp.nr-data.net) z odpowiednim portem OTLP:

  • HTTP: 4318
  • gRPC: 4317

Użyj tego fragmentu kodu w stylu zasobu środowiska zarządzanego, aby skonfigurować routing docelowy:

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

Użyj tego fragmentu kodu w stylu zasobu aplikacji, aby ustawić wymagane zmienne środowiskowe aplikacji:

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

Zastosuj konfigurację Bicep z katalogu głównego repozytorium:

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"

Twoja aplikacja kontenerowa jest teraz skonfigurowana do wysyłania danych telemetrycznych do New Relic.

Sprawdź telemetrię w New Relic

Po skonfigurowaniu sprawdź, czy dzienniki, ślady i metryki napływają z aplikacji do New Relic i są powiązane z oczekiwaną tożsamością usługi.

Korzystaj z funkcji New Relic, które pasują do Twojego przepływu pracy, takich jak śledzenie rozproszone, wyszukiwanie dzienników i eksploracja metryk.

Więcej informacji na temat eksploracji i analizy w New Relic znajdziesz w dokumentacji New Relic.