Delen via


OpenTelemetry-gegevens verzamelen en lezen in Azure Container Apps (preview)

Met behulp van een OpenTelemetry-gegevensagent met uw Azure Container Apps-omgeving kunt u ervoor kiezen om waarneembaarheidsgegevens te verzenden in een OpenTelemetry-indeling door:

  • Gegevens van een agent doorspitten naar een gewenst eindpunt. Doelopties zijn onder andere Azure Monitor Application Insights, Datadog en een met OpenTelemetry Protocol (OTLP) compatibel eindpunt.

  • U kunt eenvoudig doeleindpunten wijzigen zonder dat u opnieuw hoeft te configureren hoe ze gegevens verzenden en zonder dat u handmatig een OpenTelemetry-agent hoeft uit te voeren.

In dit artikel leest u hoe u een OpenTelemetry-agent instelt en configureert voor uw container-app.

Een OpenTelemetry-agent configureren

OpenTelemetry-agents bevinden zich in uw container-app-omgeving. U configureert agentinstellingen via een ARM-sjabloon of Bicep-aanroepen naar de omgeving, of via de CLI of via Terraform (via de AzAPI-provider).

Elk eindpunttype (Azure Monitor Application Insights, DataDog en OTLP) heeft specifieke configuratievereisten.

Vereisten

Als u de beheerde OpenTelemetry-agent inschakelt voor uw omgeving, betekent dit niet automatisch dat de agent gegevens verzamelt. Agents verzenden alleen gegevens op basis van uw configuratie-instellingen en instrumenteren uw code correct.

Broncode configureren

Bereid uw toepassing voor om gegevens te verzamelen door de OpenTelemetry SDK te installeren en de OpenTelemetry-richtlijnen te volgen voor het instrumenteren van metrische gegevens, logboeken of traceringen.

Eindpunten initialiseren

Voordat u gegevens naar een verzamelingsbestemming kunt verzenden, moet u eerst een exemplaar van de doelservice maken. Als u bijvoorbeeld gegevens wilt verzenden naar Azure Monitor Application Insights, moet u van tevoren een Application Insights-exemplaar maken.

De beheerde OpenTelemetry-agent accepteert de volgende bestemmingen:

  • Azure Monitor Application Insights
  • Datadog
  • Elk OTLP-eindpunt (bijvoorbeeld: New Relic of Honeycomb)

In de volgende tabel ziet u welk type gegevens u naar elke bestemming kunt verzenden:

Bestemming Logboeken Metrische gegevens Traceringen
inzichten Azure-app Ja No Ja
Datadog Nr. Ja Ja
Geconfigureerd eindpunt van OpenTelemetry Protocol (OTLP) Ja Ja Ja

Azure Monitor Application Insights

De enige configuratiedetails die zijn vereist vanuit Application Insights, zijn de verbindingsreeks. Zodra u de verbindingsreeks hebt, kunt u de agent configureren via de ARM-sjabloon van uw container-app, met Azure CLI-opdrachten of Terraform.

De verbindingsreeks bevat een instrumentatiesleutel, een unieke id die wordt gebruikt om telemetrie te koppelen aan een specifieke Application Insights-resource. Instrumentatiesleutels zijn geen beveiligingstokens of beveiligingssleutels en worden niet beschouwd als geheimen.

Als u uw Application Insights-resource wilt beveiligen tegen misbruik, raadpleegt u Microsoft Entra-verificatie voor Application Insights.

Voordat u deze sjabloon implementeert, vervangt u tijdelijke aanduidingen tussen <> uw waarden.

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

Datadog

De configuratie van de Datadog-agent vereist een waarde voor site en key van uw Datadog-exemplaar. Verzamel deze waarden van uw Datadog-exemplaar volgens deze tabel:

Eigenschap Datadog-agent Configuratie-eigenschap Container Apps
DD_SITE site
DD_API_KEY key

Zodra u deze configuratiegegevens hebt, kunt u de agent configureren via de ARM-sjabloon van uw container-app of met Azure CLI-opdrachten.

Vermijd het opgeven van de waarde van een geheim, zoals uw Datadog-API-sleutel, rechtstreeks in een productieomgeving. Gebruik in plaats daarvan een verwijzing naar een geheim dat is opgeslagen in Azure Key Vault.

U moet de sleutelkluis inschakelen voor sjabloonimplementatie. Hiervoor maakt u de sleutelkluis met de enabledForTemplateDeployment eigenschap ingeschakeld of voert u de volgende Azure CLI-opdracht uit, waarbij u de waarde vervangt door uw <KEY_VAULT_NAME> waarde:

az keyvault update --name <KEY_VAULT_NAME> --enabled-for-template-deployment true

Zie voor meer informatie:

Maak een parameterbestand om uw Datadog-API-sleutel op te halen uit een Azure Key Vault.

Voordat u de volgende bestanden implementeert, vervangt u tijdelijke aanduidingen tussen <> uw waarden.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "datadogapikey": {
      "reference": {
        "keyVault": {
          "id": "/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.KeyVault/vaults/<KEY_VAULT_NAME>"
        },
        "secretName": "<KEY_VAULT_SECRET_NAME>"
      }
    }
  }
}

U kunt nu verwijzen naar de datadogapikey parameter in uw ARM-sjabloon.

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

Als u de resource wilt implementeren, voert u de volgende Azure CLI-opdracht uit, waarbij u de tijdelijke aanduidingen <> vervangt door uw waarden.

az deployment group create \
  --resource-group <RESOURCE_GROUP> \
  --template-file <ARM_TEMPLATE_FILE> \
  --parameters <PARAMETER_FILE>

OTLP-eindpunt

Een OTLP-eindpunt (OpenTelemetry Protocol) is een doel voor telemetriegegevens dat OpenTelemetry-gegevens verbruikt. In de toepassingsconfiguratie kunt u meerdere OTLP-eindpunten toevoegen. In het volgende voorbeeld worden twee eindpunten toegevoegd en worden de volgende gegevens naar deze eindpunten verzonden.

Naam Eeindpunt Gegevens die naar het eindpunt worden verzonden
oltp1 Metrische gegevens en/of traceringen
oltp2 Logboeken en/of traceringen

Hoewel u zoveel OTLP-geconfigureerde eindpunten kunt instellen als u wilt, moet elk eindpunt een afzonderlijke naam hebben.

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

Name Beschrijving
resource-group De naam van de resourcegroep. U kunt de standaardgroep configureren met behulp van az configure --defaults group=<NAME>.
name Naam van de Container Apps-omgeving.
otlp-name Een naam die u selecteert om uw door OTLP geconfigureerde eindpunt te identificeren.
endpoint De URL van de bestemming die verzamelde gegevens ontvangt.
insecure Standaard waar. Hiermee definieert u of clienttransportbeveiliging moet worden ingeschakeld voor de gRPC-verbinding van de exporteur. Als dit onwaar is, is de headers parameter vereist.
headers Door spaties gescheiden waarden, in de indeling 'key=value', die vereiste informatie biedt voor de beveiliging van de OTLP-eindpunten. Voorbeeld: "api-key=key other-config-value=value".

Gegevensbestemmingen configureren

Als u een agent wilt configureren, gebruikt u de destinations matrix om te definiëren welke agents uw toepassing gegevens verzendt. Geldige sleutels zijn appInsights, dataDogof de naam van uw aangepaste OTLP-eindpunt. U kunt bepalen hoe een agent zich gedraagt op basis van gegevenstype en opties voor eindpunten.

Op gegevenstype

Optie Opmerking
Selecteer een gegevenstype. U kunt logboeken, metrische gegevens en/of traceringen afzonderlijk configureren.
Schakel een gegevenstype in of uit. U kunt ervoor kiezen om alleen traceringen en geen andere gegevens te verzenden.
Eén gegevenstype verzenden naar meerdere eindpunten. U kunt logboeken verzenden naar zowel DataDog als een door OTLP geconfigureerd eindpunt.
Verschillende gegevenstypen verzenden naar verschillende locaties. U kunt traceringen verzenden naar een OTLP-eindpunt en metrische gegevens naar DataDog.
Schakel het verzenden van alle gegevenstypen uit. U kunt ervoor kiezen geen gegevens te verzenden via de OpenTelemetry-agent.

Op eindpunt

  • U kunt slechts één Application Insights- en Datadog-eindpunt per keer instellen.
  • Hoewel u meerdere OTLP-geconfigureerde eindpunten kunt definiëren, moet elk eindpunt een afzonderlijke naam hebben.

In het volgende voorbeeld van een ARM-sjabloon ziet u hoe u een OTLP-eindpunt met de naam customDashboardKUNT gebruiken. Er wordt het volgende verzonden:

  • traceringen naar app-inzichten en customDashboard
  • logboeken voor app-inzichten en customDashboard
  • metrische gegevens voor DataDog en customDashboard
{
  ...
  "properties": {
    ...
    "openTelemetryConfiguration": {
      ...
      "tracesConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "logsConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "metricsConfiguration": {
        "destinations": [
          "dataDog",
          "customDashboard"
        ]
      }
    }
  }
}

Voorbeeld van configuratie van OpenTelemetry

In het volgende VOORBEELD van een ARM-sjabloon ziet u hoe u uw container-app kunt configureren voor het verzamelen van telemetriegegevens met behulp van Azure Monitor Application Insights, Datadog en met een aangepaste OTLP-agent met de naam customDashboard.

Dit voorbeeld werkt met het parameterbestand dat wordt gebruikt om de Datadog-API-sleutel op te halen uit een Azure Key Vault.

Voordat u deze sjabloon implementeert, vervangt u tijdelijke aanduidingen tussen <> uw waarden.

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

Zie Microsoft.App/managedEnvironments voor meer informatie.

Omgevingsvariabelen

De OpenTelemetry-agent injecteert automatisch een set omgevingsvariabelen in uw toepassing tijdens runtime.

De eerste twee omgevingsvariabelen volgen de standaard configuratie van de OpenTelemetry-exporteur en worden gebruikt in OTLP-standaardsoftwareontwikkelingskits. Als u de omgevingsvariabele expliciet instelt in de specificatie van de container-app, overschrijft uw waarde de automatisch geïnjecteerde waarde.

Meer informatie over de configuratie van de OTLP-exporteur raadpleegt u otLP-exporteurconfiguratie.

Name Beschrijving
OTEL_EXPORTER_OTLP_ENDPOINT Een basiseindpunt-URL voor elk signaaltype, met een optioneel opgegeven poortnummer. Deze instelling is handig wanneer u meer dan één signaal naar hetzelfde eindpunt verzendt en één omgevingsvariabele het eindpunt wilt beheren. Voorbeeld: http://otel.service.k8se-apps:4317/
OTEL_EXPORTER_OTLP_PROTOCOL Hiermee geeft u het OTLP-transportprotocol dat wordt gebruikt voor alle telemetriegegevens. De beheerde agent ondersteunt grpcalleen . Waarde: grpc.

De andere drie omgevingsvariabelen zijn specifiek voor Azure Container Apps en worden altijd geïnjecteerd. Deze variabelen bevatten de eindpunt-URL's van de agent voor elk specifiek gegevenstype (logboeken, metrische gegevens, traceringen).

Deze variabelen zijn alleen nodig als u zowel de beheerde OpenTelemetry-agent als een andere OpenTelemetry-agent gebruikt. Als u deze variabelen gebruikt, hebt u controle over het routeren van gegevens tussen de verschillende OpenTelemetry-agents.

Name Omschrijving Voorbeeld
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT Eindpunt-URL voor alleen traceringsgegevens. http://otel.service.k8se-apps:43178/v1/traces/
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT Eindpunt-URL voor alleen logboekgegevens. http://otel.service.k8se-apps:43178/v1/logs/
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT Eindpunt-URL voor alleen metrische gegevens. http://otel.service.k8se-apps:43178/v1/metrics/

Kosten van OpenTelemetry-agent

U wordt gefactureerd voor de onderliggende berekening van de agent.

Zie de doelservice voor hun factureringsstructuur en voorwaarden. Als u bijvoorbeeld gegevens verzendt naar Zowel Azure Monitor Application Insights als Datadog, bent u verantwoordelijk voor de kosten die door beide services worden toegepast.

Bekende beperkingen

  • OpenTelemetry-agents zijn in preview.
  • Systeemgegevens, zoals systeemlogboeken of metrische standaardgegevens van Container Apps, kunnen niet worden verzonden naar de OpenTelemetry-agent.
  • Het Application Insights-eindpunt accepteert geen metrische gegevens.
  • Het Datadog-eindpunt accepteert geen logboeken.

Volgende stappen