Udostępnij za pośrednictwem


Zbieranie i odczytywanie danych OpenTelemetry w usłudze Azure Container Apps (wersja zapoznawcza)

Korzystając z agenta danych OpenTelemetry w środowisku usługi Azure Container Apps, możesz wysłać dane z obserwacji w formacie OpenTelemetry, wykonując następujące czynności:

  • Potokowanie danych z agenta do żądanego punktu końcowego. Opcje docelowe obejmują Szczegółowe informacje aplikacji usługi Azure Monitor, usługę Datadog i dowolny punkt końcowy zgodny z protokołem OPENTelemetry Protocol (OTLP).

  • Łatwe zmienianie docelowych punktów końcowych bez konieczności ponownego konfigurowania sposobu emitowania danych i bez konieczności ręcznego uruchamiania agenta OpenTelemetry.

W tym artykule pokazano, jak skonfigurować i skonfigurować agenta OpenTelemetry dla aplikacji kontenera.

Konfigurowanie agenta OpenTelemetry

Agenci OpenTelemetry działają w środowisku aplikacji kontenera. Ustawienia agenta można skonfigurować za pośrednictwem szablonu usługi ARM lub wywołań Bicep do środowiska lub za pośrednictwem interfejsu wiersza polecenia.

Każdy typ punktu końcowego (usługa Azure Monitor Application Szczegółowe informacje, DataDog i OTLP) ma określone wymagania dotyczące konfiguracji.

Wymagania wstępne

Włączenie zarządzanego agenta OpenTelemetry do środowiska nie oznacza automatycznego zbierania danych przez agenta. Agenci wysyłają dane tylko na podstawie ustawień konfiguracji i prawidłowo instrumentując kod.

Konfigurowanie kodu źródłowego

Przygotuj aplikację do zbierania danych, instalując zestaw OpenTelemetry SDK i postępując zgodnie z wytycznymi OpenTelemetry, aby instrumentować metryki, dzienniki lub ślady.

Inicjowanie punktów końcowych

Przed wysłaniem danych do miejsca docelowego kolekcji należy najpierw utworzyć wystąpienie usługi docelowej. Jeśli na przykład chcesz wysłać dane do usługi Azure Monitor Application Szczegółowe informacje, musisz utworzyć wystąpienie aplikacji Szczegółowe informacje z wyprzedzeniem.

Zarządzany agent OpenTelemetry akceptuje następujące miejsca docelowe:

  • Azure Monitor Application Insights
  • Datadog
  • Dowolny punkt końcowy OTLP (na przykład: New Relic lub Honeycomb)

W poniższej tabeli przedstawiono typ danych, które można wysyłać do każdego miejsca docelowego:

Element docelowy Dzienniki Metryki Ślady
aplikacja systemu Azure Szczegółowe informacje Tak Nie Tak
Datadog Nie. Tak Tak
Punkt końcowy skonfigurowany przez protokół OpenTelemetry (OTLP) Tak Tak Tak

Azure Monitor Application Insights

Jedynymi szczegółami konfiguracji wymaganymi z Szczegółowe informacje aplikacji jest parametry połączenia. Po utworzeniu parametry połączenia możesz skonfigurować agenta za pomocą szablonu arm aplikacji kontenera lub poleceń interfejsu wiersza polecenia platformy Azure.

Przed wdrożeniem tego szablonu zastąp symbole zastępcze otoczone <> wartościami.

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

Datadog

Konfiguracja agenta usługi Datadog wymaga wartości dla site i key z wystąpienia usługi Datadog. Zbierz te wartości z wystąpienia usługi Datadog zgodnie z tą tabelą:

Właściwość agenta usługi Datadog Właściwość konfiguracji usługi Container Apps
DD_SITE site
DD_API_KEY key

Po utworzeniu tych szczegółów konfiguracji możesz skonfigurować agenta za pomocą szablonu arm aplikacji kontenera lub poleceń interfejsu wiersza polecenia platformy Azure.

Przed wdrożeniem tego szablonu zastąp symbole zastępcze otoczone <> wartościami.

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

Punkt końcowy OTLP

Punkt końcowy protokołu OpenTelemetry (OTLP) to miejsce docelowe danych telemetrycznych, które zużywa dane OpenTelemetry. W konfiguracji aplikacji można dodać wiele punktów końcowych OTLP. Poniższy przykład dodaje dwa punkty końcowe i wysyła następujące dane do tych punktów końcowych.

Nazwa punktu końcowego Dane wysyłane do punktu końcowego
oltp1 Metryki i/lub ślady
oltp2 Dzienniki i/lub ślady

Chociaż można skonfigurować dowolną liczbę punktów końcowych skonfigurowanych przez protokół OTLP, każdy punkt końcowy musi mieć odrębną nazwę.

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

Nazwa/nazwisko opis
name Wybrana nazwa identyfikująca punkt końcowy skonfigurowany przez protokół OTLP.
endpoint Adres URL miejsca docelowego, który odbiera zebrane dane.
insecure Wartość domyślna true. Określa, czy włączyć zabezpieczenia transportu klienta dla połączenia gRPC eksportera. Jeśli wartość false, headers parametr jest wymagany.
headers Wartości rozdzielone spacjami w formacie "key=value", które zapewniają wymagane informacje dotyczące zabezpieczeń punktów końcowych OTLP. Przykład: "api-key=key other-config-value=value".

Konfigurowanie miejsc docelowych danych

Aby skonfigurować agenta destinations , użyj tablicy, aby zdefiniować, którzy agenci wysyłają dane przez aplikację. Prawidłowe klucze to appInsights, dataDoglub nazwa niestandardowego punktu końcowego OTLP. Możesz kontrolować zachowanie agenta na podstawie typu danych i opcji związanych z punktem końcowym.

Według typu danych

Opcja Przykład
Wybierz typ danych. Dzienniki, metryki i/lub ślady można skonfigurować indywidualnie.
Włącz lub wyłącz dowolny typ danych. Możesz wybrać opcję wysyłania tylko śladów i żadnych innych danych.
Wyślij jeden typ danych do wielu punktów końcowych. Dzienniki można wysyłać zarówno do usługi DataDog, jak i do punktu końcowego skonfigurowanego przez protokół OTLP.
Wysyłaj różne typy danych do różnych lokalizacji. Możesz wysyłać ślady do punktu końcowego i metryk OTLP do usługi DataDog.
Wyłącz wysyłanie wszystkich typów danych. Możesz nie wysyłać żadnych danych za pośrednictwem agenta OpenTelemetry.

Według punktu końcowego

  • Jednocześnie można skonfigurować tylko jeden punkt końcowy aplikacji Szczegółowe informacje i datadog.
  • Chociaż można zdefiniować więcej niż jeden punkt końcowy skonfigurowany przez otLP, każdy z nich musi mieć odrębną nazwę.

W poniższym przykładzie pokazano, jak używać punktu końcowego OTLP o nazwie customDashboard. Wysyła:

  • śledzenie do szczegółowych informacji o aplikacji i customDashboard
  • dzienniki do szczegółowych informacji o aplikacji i customDashboard
  • metryki do usługi DataDog i 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"
        ]
      }
    }
  }
}

Zmienne środowiskowe

Agent OpenTelemetry automatycznie wprowadza zestaw zmiennych środowiskowych do aplikacji w czasie wykonywania.

Pierwsze dwie zmienne środowiskowe są zgodne ze standardową konfiguracją eksportera OpenTelemetry i są używane w standardowych zestawach programistycznych OTLP. Jeśli jawnie ustawisz zmienną środowiskową w specyfikacji aplikacji kontenera, wartość zastępuje automatycznie wstrzykniętą wartość.

Dowiedz się więcej o konfiguracji eksportera OTLP zobacz Konfiguracja eksportera OTLP.

Nazwa/nazwisko opis
OTEL_EXPORTER_OTLP_ENDPOINT Podstawowy adres URL punktu końcowego dla dowolnego typu sygnału z opcjonalnym numerem portu. To ustawienie jest przydatne, gdy wysyłasz więcej niż jeden sygnał do tego samego punktu końcowego i chcesz, aby jedna zmienna środowiskowa kontrolować punkt końcowy. Przykład: http://otel.service.k8se-apps:4317/
OTEL_EXPORTER_OTLP_PROTOCOL Określa protokół transportu OTLP używany dla wszystkich danych telemetrycznych. Zarządzany agent obsługuje tylko program grpc. Wartość: grpc.

Pozostałe trzy zmienne środowiskowe są specyficzne dla usługi Azure Container Apps i są zawsze wstrzykiwane. Te zmienne przechowują adresy URL punktów końcowych agenta dla każdego określonego typu danych (dzienniki, metryki, ślady).

Te zmienne są konieczne tylko wtedy, gdy używasz zarówno zarządzanego agenta OpenTelemetry, jak i innego agenta OpenTelemetry. Użycie tych zmiennych pozwala kontrolować sposób kierowania danych między różnymi agentami OpenTelemetry.

Nazwa/nazwisko opis Przykład
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT Adres URL punktu końcowego tylko dla danych śledzenia. http://otel.service.k8se-apps:43178/v1/traces/
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT Adres URL punktu końcowego tylko dla danych dziennika. http://otel.service.k8se-apps:43178/v1/logs/
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT Adres URL punktu końcowego tylko dla danych metryk. http://otel.service.k8se-apps:43178/v1/metrics/

Koszty agenta OpenTelemetry

Opłaty są naliczane za bazowe obliczenia agenta.

Zobacz usługę docelową, aby zapoznać się ze strukturą rozliczeń i warunkami. Jeśli na przykład wysyłasz dane do usługi Azure Monitor Application Szczegółowe informacje i Datadog, odpowiadasz za opłaty stosowane przez obie usługi.

Znane ograniczenia

  • Agenci OpenTelemetry są w wersji zapoznawczej.
  • Dane systemowe, takie jak dzienniki systemowe lub metryki standardowe usługi Container Apps, nie są dostępne do wysłania do agenta OpenTelemetry.
  • Punkt końcowy aplikacji Szczegółowe informacje nie akceptuje metryk.
  • Punkt końcowy usługi Datadog nie akceptuje dzienników.

Następne kroki