Sdílet prostřednictvím


Shromažďování a čtení dat OpenTelemetry v Azure Container Apps (Preview)

Pomocí datového agenta OpenTelemetry s prostředím Azure Container Apps se můžete rozhodnout odesílat data pozorovatelnosti ve formátu OpenTelemetry:

  • Propojení dat z agenta do požadovaného koncového bodu Mezi cílové možnosti patří Azure Monitor Application Insights, Datadog a jakýkoli koncový bod kompatibilní s protokolem OpenTelemetry (OTLP).

  • Snadné změny cílových koncových bodů bez nutnosti překonfigurovat způsob generování dat a bez nutnosti ručního spuštění agenta OpenTelemetry.

V tomto článku se dozvíte, jak nastavit a nakonfigurovat agenta OpenTelemetry pro vaši aplikaci kontejneru.

Konfigurace agenta OpenTelemetry

Agenti OpenTelemetry žijí v prostředí vaší aplikace kontejneru. Nastavení agenta nakonfigurujete prostřednictvím šablony ARM nebo volání Bicep do prostředí nebo prostřednictvím rozhraní příkazového řádku.

Každý typ koncového bodu (Azure Monitor Application Insights, DataDog a OTLP) má specifické požadavky na konfiguraci.

Požadavky

Povolení spravovaného agenta OpenTelemetry pro vaše prostředí neznamená, že agent shromažďuje data. Agenti odesílají data jenom na základě nastavení konfigurace a instrumentace kódu správně.

Konfigurace zdrojového kódu

Připravte aplikaci na shromažďování dat instalací sady OpenTelemetry SDK a postupujte podle pokynů OpenTelemetry k instrumentaci metrik, protokolů nebo trasování.

Inicializace koncových bodů

Než budete moct odesílat data do cíle kolekce, musíte nejprve vytvořit instanci cílové služby. Pokud například chcete odesílat data do služby Azure Monitor Application Insights, musíte předem vytvořit instanci Application Insights.

Spravovaný agent OpenTelemetry přijímá následující cíle:

  • Azure Monitor Application Insights
  • Datadog
  • Libovolný koncový bod OTLP (například: New Relic nebo Honeycomb)

Následující tabulka ukazuje, jaký typ dat můžete odeslat do každého cíle:

Cíl Protokoly Metriky Trasování
Aplikace Azure Insights Yes Ne Ano
Datadog No Ano Yes
Nakonfigurovaný koncový bod protokolu OpenTelemetry (OTLP) Ano Ano Yes

Azure Monitor Application Insights

Jedinými podrobnostmi konfigurace, které application Insights vyžaduje, je připojovací řetězec. Jakmile budete mít připojovací řetězec, můžete agenta nakonfigurovat prostřednictvím šablony ARM vaší aplikace kontejneru nebo pomocí příkazů Azure CLI.

Před nasazením této šablony nahraďte zástupné symboly obklopené <> hodnotami.

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

Datadog

Konfigurace agenta Datadog vyžaduje hodnotu pro site instanci datadogu a key z vaší instance Datadog. Shromážděte tyto hodnoty z instance datadogu podle této tabulky:

Vlastnost agenta Datadog Vlastnost konfigurace Container Apps
DD_SITE site
DD_API_KEY key

Jakmile budete mít tyto podrobnosti o konfiguraci, můžete agenta nakonfigurovat prostřednictvím šablony ARM vaší aplikace kontejneru nebo pomocí příkazů Azure CLI.

Před nasazením této šablony nahraďte zástupné symboly obklopené <> hodnotami.

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

Koncový bod OTLP

Koncový bod protokolu OpenTelemetry (OTLP) je cíl telemetrických dat, který využívá data OpenTelemetry. V konfiguraci aplikace můžete přidat několik koncových bodů OTLP. Následující příklad přidá dva koncové body a do těchto koncových bodů odešle následující data.

Název koncového bodu Data odesílaná do koncového bodu
oltp1 Metriky a/nebo trasování
oltp2 Protokoly a/nebo trasování

I když můžete nastavit libovolný počet koncových bodů nakonfigurovaných OTLP, každý koncový bod musí mít jedinečný název.

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

Název Popis
resource-group Název skupiny prostředků. Výchozí skupinu můžete nakonfigurovat pomocí az configure --defaults group=<NAME>.
name Název prostředí Container Apps.
otlp-name Název, který vyberete k identifikaci koncového bodu nakonfigurovaného pro OTLP.
endpoint Adresa URL cíle, který přijímá shromážděná data.
insecure Výchozí hodnota true. Definuje, zda se má povolit zabezpečení přenosu klienta pro připojení gRPC vývozce. Pokud je hodnota false, headers je parametr povinný.
headers Hodnoty oddělené mezerami ve formátu key=value, které poskytují požadované informace pro zabezpečení koncových bodů OTLP. Příklad: "api-key=key other-config-value=value".

Konfigurace cílů dat

Ke konfiguraci agenta použijte destinations pole k definování agentů, které aplikace odesílá data. Platné klíče jsou buď appInsights, dataDognebo název vlastního koncového bodu OTLP. Můžete řídit chování agenta na základě datových typů a možností souvisejících s koncovým bodem.

Podle datového typu

Možnost Příklad
Vyberte datový typ. Protokoly, metriky a/nebo trasování můžete nakonfigurovat jednotlivě.
Povolte nebo zakažte libovolný datový typ. Můžete se rozhodnout odesílat pouze trasování a žádná jiná data.
Odešlete jeden datový typ do více koncových bodů. Protokoly můžete odesílat do služby DataDog i do koncového bodu nakonfigurovaného pro OTLP.
Odesílání různých datových typů do různých umístění Trasování můžete odeslat do koncového bodu OTLP a metrik do služby DataDog.
Zakažte odesílání všech datových typů. Prostřednictvím agenta OpenTelemetry se můžete rozhodnout, že se žádná data neodesílají.

Podle koncového bodu

  • Vždy můžete nastavit jenom jeden koncový bod Application Insights a Datadog.
  • I když můžete definovat více než jeden koncový bod nakonfigurovaný OTLP, každý z nich musí mít jedinečný název.

Následující příklad ukazuje, jak použít koncový bod OTLP s názvem customDashboard. Odesílá:

  • trasování do App Insights a customDashboard
  • protokoly do App Insights a customDashboard
  • metriky pro DataDog a 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"
        ]
      }
    }
  }
}

Proměnné prostředí

Agent OpenTelemetry automaticky vloží sadu proměnných prostředí do vaší aplikace za běhu.

První dvě proměnné prostředí se řídí standardní konfigurací exportéru OpenTelemetry a používají se ve standardních sadách OTLP pro vývoj softwaru. Pokud explicitně nastavíte proměnnou prostředí ve specifikaci aplikace kontejneru, vaše hodnota přepíše automaticky vloženou hodnotu.

Další informace o konfiguraci vývozce OTLP najdete v tématu Konfigurace vývozce OTLP.

Název Popis
OTEL_EXPORTER_OTLP_ENDPOINT Adresa URL základního koncového bodu pro libovolný typ signálu s volitelně zadaným číslem portu. Toto nastavení je užitečné, když odesíláte více než jeden signál do stejného koncového bodu a chcete, aby koncový bod řídila jedna proměnná prostředí. Příklad: http://otel.service.k8se-apps:4317/
OTEL_EXPORTER_OTLP_PROTOCOL Určuje přenosový protokol OTLP používaný pro všechna telemetrická data. Spravovaný agent podporuje grpcpouze . Hodnota: grpc.

Další tři proměnné prostředí jsou specifické pro Azure Container Apps a vždy se vloží. Tyto proměnné obsahují adresy URL koncových bodů agenta pro každý konkrétní datový typ (protokoly, metriky, trasování).

Tyto proměnné jsou nezbytné pouze v případě, že používáte spravovaného agenta OpenTelemetry i jiného agenta OpenTelemetry. Pomocí těchto proměnných můžete řídit, jak směrovat data mezi různými agenty OpenTelemetry.

Název Popis Příklad
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT Adresa URL koncového bodu pouze pro data trasování http://otel.service.k8se-apps:43178/v1/traces/
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT Adresa URL koncového bodu pouze pro data protokolu. http://otel.service.k8se-apps:43178/v1/logs/
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT Adresa URL koncového bodu pouze pro data metrik. http://otel.service.k8se-apps:43178/v1/metrics/

Náklady na agenta OpenTelemetry

Účtuje se vám základní výpočetní prostředky agenta.

Podívejte se na cílovou službu pro jejich fakturační strukturu a podmínky. Pokud například odesíláte data do služby Azure Monitor Application Insights i Datadog, zodpovídáte za poplatky použité oběma službami.

Známá omezení

  • Agenti OpenTelemetry jsou ve verzi Preview.
  • Systémová data, jako jsou systémové protokoly nebo standardní metriky Container Apps, nejsou dostupná k odeslání agentovi OpenTelemetry.
  • Koncový bod Application Insights nepřijímá metriky.
  • Koncový bod Datadog nepřijímá protokoly.

Další kroky