Condividi tramite


Raccogliere e leggere i dati OpenTelemetry in App Azure Container (anteprima)

Usando un agente dati OpenTelemetry con l'ambiente App Contenitore di Azure, è possibile scegliere di inviare dati di osservabilità in un formato OpenTelemetry in base a:

  • Piping dei dati da un agente in un endpoint desiderato. Le opzioni di destinazione includono Application Insights, Datadog e qualsiasi endpoint compatibile con OPENTelemetry Protocol (OTLP).

  • Modificare facilmente gli endpoint di destinazione senza dover riconfigurare la modalità di generazione dei dati e senza dover eseguire manualmente un agente OpenTelemetry.

Questo articolo illustra come configurare e configurare un agente OpenTelemetry per l'app contenitore.

Configurare un agente OpenTelemetry

Gli agenti OpenTelemetry si trovano all'interno dell'ambiente dell'app contenitore. È possibile configurare le impostazioni dell'agente tramite un modello di Resource Manager o chiamate Bicep all'ambiente o tramite l'interfaccia della riga di comando.

Ogni tipo di endpoint (Application Insights di Monitoraggio di Azure, DataDog e OTLP) ha requisiti di configurazione specifici.

Prerequisiti

L'abilitazione dell'agente OpenTelemetry gestito nell'ambiente non significa automaticamente che l'agente raccoglie i dati. Gli agenti inviano dati solo in base alle impostazioni di configurazione e instrumentando correttamente il codice.

Configurare il codice sorgente

Preparare l'applicazione per raccogliere dati installando OpenTelemetry SDK e seguendo le linee guida di OpenTelemetry per instrumentare metriche, log o tracce.

Inizializzare gli endpoint

Prima di poter inviare dati a una destinazione di raccolta, è prima necessario creare un'istanza del servizio di destinazione. Ad esempio, se si vogliono inviare dati ad Application Insights di Monitoraggio di Azure, è necessario creare un'istanza di Application Insights in anticipo.

L'agente OpenTelemetry gestito accetta le destinazioni seguenti:

  • Monitoraggio di Azure Application Insights
  • Datadog
  • Qualsiasi endpoint OTLP (ad esempio: New Relic o Honeycomb)

La tabella seguente illustra il tipo di dati che è possibile inviare a ogni destinazione:

Destinazione Registri Metriche Tracce
app Azure Insights No
Datadog No
Endpoint configurato per il protocollo OTLP (OpenTelemetry Protocol)

Monitoraggio di Azure Application Insights

L'unico dettaglio di configurazione richiesto da Application Insights è il stringa di connessione. Dopo aver ottenuto il stringa di connessione, è possibile configurare l'agente tramite il modello arm dell'app contenitore o con i comandi dell'interfaccia della riga di comando di Azure.

Prima di distribuire questo modello, sostituire i segnaposto racchiusi tra <> i valori.

{
  ...
  "properties": {
    "appInsightsConfiguration ": {  
      "connectionString": "<YOUR_APP_INSIGHTS_CONNECTION_STRING>"
    }
    "openTelemetryConfiguration": {
      ...
      "tracesConfiguration":{
        "destinations": ["appInsights"]
      },
      "logsConfiguration": {
        "destinations": ["appInsights"]
      }
    }
  }
}

Datadog

La configurazione dell'agente Datadog richiede un valore per site e key dall'istanza di Datadog. Raccogliere questi valori dall'istanza di Datadog in base alla tabella seguente:

Proprietà dell'agente Datadog Proprietà di configurazione di App contenitore
DD_SITE site
DD_API_KEY key

Dopo aver ottenuto questi dettagli di configurazione, è possibile configurare l'agente tramite il modello arm dell'app contenitore o con i comandi dell'interfaccia della riga di comando di Azure.

Prima di distribuire questo modello, sostituire i segnaposto racchiusi tra <> i valori.

{
  ...
  "properties": {
    ...
    "openTelemetryConfiguration": {
      ...
      "destinationsConfiguration":{
        ...
        "dataDogConfiguration":{
          "site": "<YOUR_DATADOG_SUBDOMAIN>.datadoghq.com",
          "key": "<YOUR_DATADOG_KEY>"
        }
      },
      "tracesConfiguration":{
        "destinations": ["dataDog"]
      },
      "metricsConfiguration": {
        "destinations": ["dataDog"]
      }
    }
  }
}

Endpoint OTLP

Un endpoint OTLP (OpenTelemetry Protocol) è una destinazione dei dati di telemetria che utilizza i dati OpenTelemetry. Nella configurazione dell'applicazione è possibile aggiungere più endpoint OTLP. Nell'esempio seguente vengono aggiunti due endpoint e vengono inviati i dati seguenti a questi endpoint.

Nome endpoint Dati inviati all'endpoint
oltp1 Metriche e/o tracce
oltp2 Log e/o tracce

Anche se è possibile configurare tutti gli endpoint configurati da OTLP, ogni endpoint deve avere un nome distinto.

{
  "properties": {
    "appInsightsConfiguration": {},
    "openTelemetryConfiguration": {
      "destinationsConfiguration":{
        "otlpConfigurations": [
          {
            "name": "otlp1",
            "endpoint": "ENDPOINT_URL_1",
            "insecure": false,
            "headers": "api-key-1=key"
          },
          {
            "name": "otlp2",
            "endpoint": "ENDPOINT_URL_2",
            "insecure": true
          }
        ]
      },
      "logsConfiguration": { 
        "destinations": ["otlp2"]
      },
      "tracesConfiguration":{
        "destinations": ["otlp1", "otlp2"]
      },
      "metricsConfiguration": {
        "destinations": ["otlp1"]
      }
    }
  }
}

Nome Descrizione
resource-group Nome del gruppo di risorse. È possibile configurare il gruppo predefinito con az configure --defaults group=<NAME>.
name Nome dell'ambiente App contenitore.
otlp-name Nome selezionato per identificare l'endpoint configurato da OTLP.
endpoint URL della destinazione che riceve i dati raccolti.
insecure Impostazione predefinita: true. Definisce se abilitare la sicurezza del trasporto client per la connessione gRPC dell'esportatore. Se false, il headers parametro è obbligatorio.
headers Valori separati da spazi, in formato 'key=value', che forniscono le informazioni necessarie per la sicurezza degli endpoint OTLP. Esempio: "api-key=key other-config-value=value".

Configurare le destinazioni dati

Per configurare un agente, usare la destinations matrice per definire gli agenti inviati dall'applicazione. Le chiavi valide sono appInsights, dataDogo il nome dell'endpoint OTLP personalizzato. È possibile controllare il comportamento di un agente in base al tipo di dati e alle opzioni correlate all'endpoint.

Per tipo di dati

Opzione Esempio
Consente di selezionare un tipo di dati. È possibile configurare i log, le metriche e/o le tracce singolarmente.
Abilitare o disabilitare qualsiasi tipo di dati. È possibile scegliere di inviare solo tracce e nessun altro dato.
Inviare un tipo di dati a più endpoint. È possibile inviare i log sia a DataDog che a un endpoint configurato da OTLP.
Inviare tipi di dati diversi a posizioni diverse. È possibile inviare tracce a un endpoint e metriche OTLP a DataDog.
Disabilitare l'invio di tutti i tipi di dati. È possibile scegliere di non inviare dati tramite l'agente OpenTelemetry.

Per endpoint

  • È possibile configurare un solo endpoint di Application Insights e Datadog per volta.
  • Sebbene sia possibile definire più di un endpoint configurato da OTLP, ognuno deve avere un nome distinto.

Nell'esempio seguente viene illustrato come usare un endpoint OTLP denominato customDashboard. Invia:

  • tracce per informazioni dettagliate sull'app e customDashboard
  • log per informazioni dettagliate sull'app e customDashboard
  • metriche in DataDog e customDashboard
{
  ...
  "properties": {
    ...
    "openTelemetryConfiguration": {
      ...
      "tracesConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "logsConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "metricsConfiguration": {
        "destinations": [
          "dataDog",
          "customDashboard"
        ]
      }
    }
  }
}

## Example OpenTelemetry configuration

The following example ARM template shows how you might configure your container app to collect telemetry data using Azure Monitor Application Insights, Datadog, and with a custom OTLP agent named `customDashboard`.

Before you deploy this template, replace placeholders surrounded by `<>` with your values.

```json
{
  "location": "eastus",
  "properties": {
    "appInsightsConfiguration": {
      "connectionString": "<APP_INSIGHTS_CONNECTION_STRING>"
    },
    "openTelemetryConfiguration": {
      "destinationsConfiguration": {
        "dataDogConfiguration": {
          "site": "datadoghq.com",
          "key": "<YOUR_DATADOG_KEY>"
        },
        "otlpConfigurations": [
          {
            "name": "customDashboard",
            "endpoint": "<OTLP_ENDPOINT_URL>",
            "insecure": true
          }
        ]
      },
      "tracesConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "logsConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "metricsConfiguration": {
        "destinations": [
          "dataDog",
          "customDashboard"
        ]
      }
    }
  }
}

Variabili di ambiente

L'agente OpenTelemetry inserisce automaticamente un set di variabili di ambiente nell'applicazione in fase di esecuzione.

Le prime due variabili di ambiente seguono la configurazione standard dell'utilità di esportazione OpenTelemetry e vengono usate nei kit di sviluppo software standard OTLP. Se si imposta in modo esplicito la variabile di ambiente nella specifica dell'app contenitore, il valore sovrascrive il valore inserito automaticamente.

Informazioni sulla configurazione dell'utilità di esportazione OTLP, vedere Configurazione dell'utilità di esportazione OTLP.

Nome Descrizione
OTEL_EXPORTER_OTLP_ENDPOINT URL dell'endpoint di base per qualsiasi tipo di segnale, con un numero di porta facoltativamente specificato. Questa impostazione è utile quando si inviano più segnali allo stesso endpoint e si vuole che una variabile di ambiente controlli l'endpoint. Esempio: http://otel.service.k8se-apps:4317/
OTEL_EXPORTER_OTLP_PROTOCOL Specifica il protocollo di trasporto OTLP usato per tutti i dati di telemetria. L'agente gestito supporta grpcsolo . Valore: grpc.

Le altre tre variabili di ambiente sono specifiche delle app di Azure Container e vengono sempre inserite. Queste variabili contengono gli URL dell'endpoint dell'agente per ogni tipo di dati specifico (log, metriche, tracce).

Queste variabili sono necessarie solo se si usa sia l'agente OpenTelemetry gestito che un altro agente OpenTelemetry. L'uso di queste variabili consente di controllare come instradare i dati tra i diversi agenti OpenTelemetry.

Nome Descrizione Esempio
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT URL dell'endpoint solo per i dati di traccia. http://otel.service.k8se-apps:43178/v1/traces/
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT URL dell'endpoint solo per i dati di log. http://otel.service.k8se-apps:43178/v1/logs/
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT URL endpoint solo per i dati delle metriche. http://otel.service.k8se-apps:43178/v1/metrics/

Costi dell'agente OpenTelemetry

Viene addebitato il calcolo sottostante dell'agente.

Vedere il servizio di destinazione per la struttura di fatturazione e i termini. Ad esempio, se si inviano dati sia ad Application Insights che a Datadog di Monitoraggio di Azure, si è responsabili degli addebiti applicati da entrambi i servizi.

Limitazioni note

  • Gli agenti OpenTelemetry sono in anteprima.
  • I dati di sistema, ad esempio i log di sistema o le metriche standard di App contenitore, non sono disponibili per l'invio all'agente OpenTelemetry.
  • L'endpoint di Application Insights non accetta le metriche.
  • L'endpoint Datadog non accetta i log.

Passaggi successivi