Dela via


Samla in och läsa OpenTelemetry-data i Azure Container Apps (förhandsversion)

Med hjälp av en OpenTelemetry-dataagent med din Azure Container Apps-miljö kan du välja att skicka observerbarhetsdata i ett OpenTelemetry-format genom att:

  • Skicka data från en agent till en önskad slutpunkt. Målalternativen är Azure Monitor Application Insights, Datadog och alla OTLP-kompatibla slutpunkter (OpenTelemetry Protocol).

  • Ändra enkelt målslutpunkter utan att behöva konfigurera om hur de genererar data och utan att behöva köra en OpenTelemetry-agent manuellt.

Den här artikeln visar hur du konfigurerar en OpenTelemetry-agent för din containerapp.

Konfigurera en OpenTelemetry-agent

OpenTelemetry-agenter finns i din containerappmiljö. Du konfigurerar agentinställningar via en ARM-mall eller Bicep-anrop till miljön eller via CLI.

Varje slutpunktstyp (Azure Monitor Application Insights, DataDog och OTLP) har specifika konfigurationskrav.

Förutsättningar

Att aktivera den hanterade OpenTelemetry-agenten i din miljö innebär inte automatiskt att agenten samlar in data. Agenter skickar endast data baserat på dina konfigurationsinställningar och instrumenterar koden korrekt.

Konfigurera källkod

Förbered ditt program för att samla in data genom att installera OpenTelemetry SDK och följa Riktlinjerna för OpenTelemetry för att instrumentera mått, loggar eller spårningar.

Initiera slutpunkter

Innan du kan skicka data till ett insamlingsmål måste du först skapa en instans av måltjänsten. Om du till exempel vill skicka data till Azure Monitor Application Insights måste du skapa en Application Insights-instans i förväg.

Den hanterade OpenTelemetry-agenten accepterar följande mål:

  • Azure Monitor Application Insights
  • Datadog
  • Valfri OTLP-slutpunkt (till exempel New Relic eller Honeycomb)

I följande tabell visas vilken typ av data du kan skicka till varje mål:

Mål Loggar Mått Spårningar
Azure App Insights Ja No Ja
Datadog Nej Ja Ja
OpenTelemetry Protocol (OTLP) konfigurerad slutpunkt Ja Ja Ja

Azure Monitor Application Insights

Den enda konfigurationsinformation som krävs från Application Insights är niska veze. När du har niska veze kan du konfigurera agenten via containerappens ARM-mall eller med Azure CLI-kommandon.

Innan du distribuerar den här mallen ersätter du platshållarna som omges av <> med dina värden.

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

Datadog

Datadog-agentkonfigurationen kräver ett värde för site och key från din Datadog-instans. Samla in dessa värden från din Datadog-instans enligt den här tabellen:

Datadog-agentegenskap Konfigurationsegenskap för Container Apps
DD_SITE site
DD_API_KEY key

När du har den här konfigurationsinformationen kan du konfigurera agenten via din containerapps ARM-mall eller med Azure CLI-kommandon.

Innan du distribuerar den här mallen ersätter du platshållarna som omges av <> med dina värden.

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

OTLP-slutpunkt

En Slutpunkt för OpenTelemetry Protocol (OTLP) är ett telemetridatamål som använder OpenTelemetry-data. I programkonfigurationen kan du lägga till flera OTLP-slutpunkter. I följande exempel läggs två slutpunkter till och följande data skickas till dessa slutpunkter.

Slutpunktnamn Data som skickas till slutpunkten
oltp1 Mått och/eller spårningar
oltp2 Loggar och/eller spårningar

Du kan konfigurera så många OTLP-konfigurerade slutpunkter som du vill, men varje slutpunkt måste ha ett distinkt namn.

{
  "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 beskrivning
resource-group Namnet på resursgruppen. Du kan konfigurera standardgruppen med .az configure --defaults group=<NAME>
name Namnet på Container Apps-miljön.
otlp-name Ett namn som du väljer för att identifiera din OTLP-konfigurerade slutpunkt.
endpoint URL:en för målet som tar emot insamlade data.
insecure Standard sant. Definierar om du vill aktivera klienttransportsäkerhet för exportörens gRPC-anslutning. Om det är falskt krävs parametern headers .
headers Blankstegsavgränsade värden i formatet "key=value" som ger nödvändig information för OTLP-slutpunkternas säkerhet. Exempel: "api-key=key other-config-value=value".

Konfigurera datamål

Om du vill konfigurera en agent använder du matrisen destinations för att definiera vilka agenter programmet skickar data till. Giltiga nycklar är antingen appInsights, dataDogeller namnet på din anpassade OTLP-slutpunkt. Du kan styra hur en agent beter sig baserat på datatyp och slutpunktsrelaterade alternativ.

Efter datatyp

Alternativ Exempel
Välj en datatyp. Du kan konfigurera loggar, mått och/eller spårningar individuellt.
Aktivera eller inaktivera alla datatyper. Du kan välja att endast skicka spårningar och inga andra data.
Skicka en datatyp till flera slutpunkter. Du kan skicka loggar till både DataDog och en OTLP-konfigurerad slutpunkt.
Skicka olika datatyper till olika platser. Du kan skicka spårningar till en OTLP-slutpunkt och mått till DataDog.
Inaktivera sändning av alla datatyper. Du kan välja att inte skicka några data via OpenTelemetry-agenten.

Efter slutpunkt

  • Du kan bara konfigurera en Application Insights- och Datadog-slutpunkt i taget.
  • Du kan definiera mer än en OTLP-konfigurerad slutpunkt, men var och en måste ha ett distinkt namn.

I följande exempel visas hur du använder en OTLP-slutpunkt med namnet customDashboard. Den skickar:

  • spårningar till appinsikter och customDashboard
  • loggar till appinsikter och customDashboard
  • mått till DataDog och 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"
        ]
      }
    }
  }
}

Miljövariabler

OpenTelemetry-agenten matar automatiskt in en uppsättning miljövariabler i ditt program vid körning.

De två första miljövariablerna följer standardkonfigurationen för OpenTelemetry-exportören och används i OTLP-standardpaket för programvaruutveckling. Om du uttryckligen anger miljövariabeln i containerappspecifikationen skriver ditt värde över det automatiskt inmatade värdet.

Läs mer om konfigurationen av OTLP-exportören i KONFIGURATION av OTLP-exportör.

Name beskrivning
OTEL_EXPORTER_OTLP_ENDPOINT En basslutpunkts-URL för valfri signaltyp, med ett valfritt angivet portnummer. Den här inställningen är användbar när du skickar mer än en signal till samma slutpunkt och vill att en miljövariabel ska styra slutpunkten. Exempel: http://otel.service.k8se-apps:4317/
OTEL_EXPORTER_OTLP_PROTOCOL Anger otlp-transportprotokollet som används för alla telemetridata. Den hanterade agenten stöder grpcendast . Värde: grpc.

De övriga tre miljövariablerna är specifika för Azure Container Apps och matas alltid in. Dessa variabler innehåller agentens slutpunkts-URL:er för varje specifik datatyp (loggar, mått, spårningar).

Dessa variabler är bara nödvändiga om du använder både den hanterade OpenTelemetry-agenten och en annan OpenTelemetry-agent. Med hjälp av dessa variabler får du kontroll över hur du dirigerar data mellan de olika OpenTelemetry-agenterna.

Name Beskrivning Exempel
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT Slutpunkts-URL endast för spårningsdata. http://otel.service.k8se-apps:43178/v1/traces/
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT Slutpunkts-URL endast för loggdata. http://otel.service.k8se-apps:43178/v1/logs/
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT Slutpunkts-URL endast för måttdata. http://otel.service.k8se-apps:43178/v1/metrics/

Kostnader för OpenTelemetry-agenten

Du debiteras för den underliggande beräkningen av agenten.

Se måltjänsten för deras faktureringsstruktur och villkor. Om du till exempel skickar data till både Azure Monitor Application Insights och Datadog ansvarar du för de avgifter som tillämpas av båda tjänsterna.

Kända begränsningar

  • OpenTelemetry-agenter finns i förhandsversion.
  • Systemdata, till exempel systemloggar eller standardmått för Container Apps, är inte tillgängliga för att skickas till OpenTelemetry-agenten.
  • Application Insights-slutpunkten accepterar inte mått.
  • Datadog-slutpunkten accepterar inte loggar.

Nästa steg