Aracılığıyla paylaş


Azure Container Apps'te OpenTelemetry verilerini toplama ve okuma (önizleme)

Azure Container Apps ortamınızla openTelemetry veri aracısını kullanarak, gözlemlenebilirlik verilerini OpenTelemetry biçiminde göndermeyi seçebilirsiniz:

  • Bir aracıdan istenen uç noktaya veri borulama. Hedef seçenekler arasında Azure İzleyici Uygulama Analizler, Datadog ve OpenTelemetry Protokolü (OTLP) ile uyumlu uç noktalar bulunur.

  • Veri yayma şeklini yeniden yapılandırmak zorunda kalmadan ve bir OpenTelemetry aracısını el ile çalıştırmak zorunda kalmadan hedef uç noktaları kolayca değiştirme.

Bu makalede, kapsayıcı uygulamanız için openTelemetry aracısını ayarlama ve yapılandırma işlemi gösterilmektedir.

OpenTelemetry aracısı yapılandırma

OpenTelemetry aracıları kapsayıcı uygulaması ortamınızda yaşıyor. Aracı ayarlarını bir ARM şablonu veya ortama yapılan Bicep çağrıları veya CLI aracılığıyla yapılandırabilirsiniz.

Her uç nokta türünün (Azure İzleyici Uygulaması Analizler, DataDog ve OTLP) belirli yapılandırma gereksinimleri vardır.

Önkoşullar

Yönetilen OpenTelemetry aracısını ortamınıza etkinleştirmek, aracının otomatik olarak veri topladığı anlamına gelmez. Aracılar yalnızca yapılandırma ayarlarınıza göre ve kodunuzu doğru şekilde denetleerek veri gönderir.

Kaynak kodu yapılandırma

OpenTelemetry SDK'sını yükleyerek uygulamanızı veri toplamaya hazırlayın ve ölçümleri, günlükleri veya izlemeleri izlemek için OpenTelemetry yönergelerini izleyin.

Uç noktaları başlatma

Bir koleksiyon hedefine veri gönderebilmek için önce hedef hizmetin bir örneğini oluşturmanız gerekir. Örneğin, Azure İzleyici Uygulama Analizler'ne veri göndermek istiyorsanız, önceden bir Uygulama Analizler örneği oluşturmanız gerekir.

Yönetilen OpenTelemetry aracısı aşağıdaki hedefleri kabul eder:

  • Azure Monitor Application Insights
  • Datadog
  • Herhangi bir OTLP uç noktası (Örneğin: Yeni Relic veya Honeycomb)

Aşağıdaki tabloda her hedefe ne tür veriler gönderebileceğiniz gösterilmektedir:

Hedef Günlükler Ölçümler İzlemeler
Azure Uygulaması Analizler Yes Hayı Evet
Datadog Hayır Evet Yes
OpenTelemetry protokolü (OTLP) yapılandırılmış uç noktası Yes Evet Yes

Azure Monitor Application Insights

Application Analizler için gereken tek yapılandırma ayrıntısı bağlantı dizesi. bağlantı dizesi aldıktan sonra, kapsayıcı uygulamanızın ARM şablonu aracılığıyla veya Azure CLI komutları ile aracıyı yapılandırabilirsiniz.

Bu şablonu dağıtmadan önce, ile çevrelenen <> yer tutucuları değerlerinizle değiştirin.

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

Datadog

Datadog aracısı yapılandırması, Datadog örneğiniz için site ve key için bir değer gerektirir. Datadog örneğinizdeki bu değerleri şu tabloya göre toplayın:

Datadog aracısı özelliği Container Apps yapılandırma özelliği
DD_SITE site
DD_API_KEY key

Bu yapılandırma ayrıntılarına sahip olduktan sonra, kapsayıcı uygulamanızın ARM şablonu aracılığıyla veya Azure CLI komutları ile aracıyı yapılandırabilirsiniz.

Bu şablonu dağıtmadan önce, ile çevrelenen <> yer tutucuları değerlerinizle değiştirin.

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

OTLP uç noktası

OpenTelemetry protokolü (OTLP) uç noktası, OpenTelemetry verilerini kullanan bir telemetri veri hedefidir. Uygulama yapılandırmanızda birden çok OTLP uç noktası ekleyebilirsiniz. Aşağıdaki örnek iki uç nokta ekler ve aşağıdaki verileri bu uç noktalara gönderir.

Uç nokta adı Uç noktaya gönderilen veriler
oltp1 Ölçümler ve/veya izlemeler
oltp2 Günlükler ve/veya izlemeler

İstediğiniz kadar OTLP ile yapılandırılmış uç nokta ayarlayabilirsiniz ancak her uç noktanın ayrı bir adı olmalıdır.

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

Veri Akışı Adı Açıklama
name OTLP tarafından yapılandırılan uç noktanızı tanımlamak için seçtiğiniz ad.
endpoint Toplanan verileri alan hedefin URL'si.
insecure Varsayılan true. İhracatçının gRPC bağlantısı için istemci taşıma güvenliğinin etkinleştirilip etkinleştirilmeymeyeceğini tanımlar. False ise parametresi headers gereklidir.
headers OTLP uç noktalarının güvenliği için gerekli bilgileri sağlayan ve 'key=value' biçiminde boşlukla ayrılmış değerler. Örnek: "api-key=key other-config-value=value".

Veri Hedeflerini Yapılandırma

Aracı yapılandırmak için dizisini kullanarak uygulamanızın destinations hangi aracıların veri gönderdiğini tanımlayın. Geçerli anahtarlar , veya dataDogözel OTLP uç noktanızın adıdırappInsights. Bir aracının veri türüne ve uç noktayla ilgili seçeneklere göre nasıl davranacağını denetleyebilirsiniz.

Veri türüne göre

Seçenek Örnek
Bir veri türü seçin. Günlükleri, ölçümleri ve/veya izlemeleri tek tek yapılandırabilirsiniz.
Herhangi bir veri türünü etkinleştirin veya devre dışı bırakın. Yalnızca izlemeleri göndermeyi ve başka veri göndermemeyi seçebilirsiniz.
Birden çok uç noktaya bir veri türü gönderin. Günlükleri hem DataDog'a hem de OTLP tarafından yapılandırılmış bir uç noktaya gönderebilirsiniz.
Farklı konumlara farklı veri türleri gönderin. Bir OTLP uç noktasına izlemeler ve DataDog'a ölçümler gönderebilirsiniz.
Tüm veri türlerinin gönderilmesini devre dışı bırakın. OpenTelemetry aracısı aracılığıyla veri göndermemeyi seçebilirsiniz.

Uç noktaya göre

  • Her seferinde yalnızca bir Uygulama Analizler ve Datadog uç noktası ayarlayabilirsiniz.
  • Birden fazla OTLP tarafından yapılandırılmış uç nokta tanımlayabilirsiniz ancak her birinin ayrı bir adı olmalıdır.

Aşağıdaki örnekte adlı customDashboardbir OTLP uç noktasının nasıl kullanılacağı gösterilmektedir. Şu komutu gönderir:

  • uygulama içgörülerine yönelik izlemeler ve customDashboard
  • günlüklerini uygulama içgörülerine ve customDashboard
  • DataDog ve ölçümleri 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"
        ]
      }
    }
  }
}

Ortam değişkenleri

OpenTelemetry aracısı, çalışma zamanında uygulamanıza otomatik olarak bir dizi ortam değişkeni ekler.

İlk iki ortam değişkeni standart OpenTelemetry verme yapılandırmasına uyar ve OTLP standart yazılım geliştirme setlerinde kullanılır. Kapsayıcı uygulaması belirtiminde ortam değişkenini açıkça ayarlarsanız, değeriniz otomatik olarak eklenen değerin üzerine yazar.

OTLP verme yapılandırması hakkında bilgi edinin bkz . OTLP İhracatçı Yapılandırması.

Veri Akışı Adı Açıklama
OTEL_EXPORTER_OTLP_ENDPOINT İsteğe bağlı olarak belirtilen bağlantı noktası numarasıyla herhangi bir sinyal türü için temel uç nokta URL'si. Bu ayar, aynı uç noktaya birden fazla sinyal gönderdiğinizde ve bir ortam değişkeninin uç noktayı denetlemesini istediğinizde yararlıdır. Örnek: http://otel.service.k8se-apps:4317/
OTEL_EXPORTER_OTLP_PROTOCOL Tüm telemetri verileri için kullanılan OTLP aktarım protokolünü belirtir. Yönetilen aracı yalnızca destekler grpc. Değer: grpc.

Diğer üç ortam değişkeni Azure Container Apps'e özgüdür ve her zaman eklenir. Bu değişkenler her belirli veri türü (günlükler, ölçümler, izlemeler) için aracının uç nokta URL'lerini tutar.

Bu değişkenler yalnızca hem yönetilen OpenTelemetry aracısını hem de başka bir OpenTelemetry aracısını kullanıyorsanız gereklidir. Bu değişkenlerin kullanılması, verileri farklı OpenTelemetry aracıları arasında yönlendirmeyi denetlemenizi sağlar.

Veri Akışı Adı Açıklama Örnek
CONTAINERAPP_OTEL_TRACING_GRPC_ENDPOINT Yalnızca izleme verileri için uç nokta URL'si. http://otel.service.k8se-apps:43178/v1/traces/
CONTAINERAPP_OTEL_LOGGING_GRPC_ENDPOINT Yalnızca günlük verileri için uç nokta URL'si. http://otel.service.k8se-apps:43178/v1/logs/
CONTAINERAPP_OTEL_METRIC_GRPC_ENDPOINT Yalnızca ölçüm verileri için uç nokta URL'si. http://otel.service.k8se-apps:43178/v1/metrics/

OpenTelemetry aracısı maliyetleri

Aracının temel alınan işlem için faturalandırılırsınız.

Faturalama yapısı ve koşulları için hedef hizmete bakın. Örneğin, hem Azure İzleyici Uygulaması Analizler hem de Datadog'a veri gönderirseniz, her iki hizmet tarafından uygulanan ücretlerden siz sorumlu olursunuz.

Bilinen sınırlamalar

  • OpenTelemetry aracıları önizleme aşamasındadır.
  • Sistem günlükleri veya Container Apps standart ölçümleri gibi sistem verileri OpenTelemetry aracısına gönderilmek üzere kullanılamaz.
  • Uygulama Analizler uç noktası ölçümleri kabul etmez.
  • Datadog uç noktası günlükleri kabul etmez.

Sonraki adımlar