Azure Container Apps'te OpenTelemetry verilerini toplama ve okuma

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

  • Bir acentadan istenen uç noktaya veri iletme. Hedef seçenekler arasında Azure İzleyici Application Insights, Datadog ve OpenTelemetry Protokolü (OTLP) ile uyumlu olan 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ı uygulama ortamınızda bulunur. Aracı ayarlarını bir ARM şablonu veya ortama yapılan Bicep çağrıları, CLI veya Terraform (AzAPI sağlayıcısı aracılığıyla) aracılığıyla yapılandırabilirsiniz.

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

Önkoşullar

Ortamınız için yönetilen OpenTelemetry aracısını 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şlat

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

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

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

Not

Microsoft, Azure İzleyici Application Insights'a gönderilen veriler için destek sağlar. Veriler Microsoft dışı herhangi bir sistemde depolandıktan sonra, veriyle ilgili destek uç noktanın kuruluşunun sorumluluğundadır.

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

Varış Noktası Günlükler Ölçümler İzler
Azure İzleyici Application Insights Evet Hayı Evet
Datadog Evet Evet Evet
Dynatrace Evet Evet Evet
New Relic Evet Evet Evet
Elastik Evet Evet Evet
OpenTelemetry Protokolü (OTLP) ile uyumlu uç nokta Evet Evet Evet

Hedef kılavuzlarını dışa aktar

Hedefe özgü kurulum ve doğrulama ayrıntıları için aşağıdaki kılavuzları kullanın.

Varış Noktası Guide
Datadog Azure Container Apps'te OpenTelemetry verilerini Datadog'a dışarı aktarın
Dynatrace Azure Container Apps'te OpenTelemetry verilerini Dynatrace'e aktarma
New Relic OpenTelemetry verilerini Azure Container Apps'te New Relic'e aktarma
Elastic Azure Container Apps'te OpenTelemetry verilerini Elastic'e aktarma
Azure İzleyici Application Insights (Azure İzleyici Uygulama Bilgileri) Azure İzleyici Application Insights
OtLP uyumlu diğer uç noktalar OTLP uç noktası

Azure İzleyici Application Insights (Azure İzleyici Uygulama Bilgileri)

Application Insights'ta gereken tek yapılandırma ayrıntısı bağlantı dizesi. bağlantı dizesi aldıktan sonra azure CLI komutları veya Terraform ile kapsayıcı uygulamanızın ARM şablonu aracılığıyla aracıyı yapılandırabilirsiniz.

bağlantı dizesi, telemetriyi belirli bir Application Insights kaynağıyla ilişkilendirmek için kullanılan benzersiz bir tanımlayıcı olan bir izleme anahtarı içerir. Enstrümantasyon anahtarları, güvenlik belirteçleri veya güvenlik anahtarları değildir ve gizli olarak kabul edilmez.

Application Insights kaynağınızı kötüye kullanıma karşı korumak istiyorsanız, Application Insights için Microsoft Entra kimlik doğrulaması konusuna bakın. Ancak Application Insights kaynağının OpenTelemetry veri aracısından veri almak için yerel kimlik doğrulamasına izin vermesi gerekir.

Bu şablonu dağıtmadan önce, mevcut değerleri sizin değerlerinizle değiştirin <PLACEHOLDERS>.

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

Datadog

Ortamınız için yönetilen OpenTelemetry aracısını etkinleştirirseniz kapsayıcı uygulamanızda Datadog aracısını çalıştırmanız gerekmez.

Ayrıntılı yönergeler için bkz. Azure Container Apps için yönetilen OpenTelemetry aracısından telemetri verilerini Datadog'a aktarma.

OpenTelemetry aracısı yapılandırması, Datadog örneğinizden site ve key değerlerini gerektirir. Datadog örneğinizdeki bu değerleri şu tabloya göre toplayın:

Datadog örneği özelliği OpenTelemetry ajan yapılandırma özelliği
DD_SITE site
DD_API_KEY key

Datadog örneğinizi Azure portalında oluşturduysanız daha fazla bilgi için bkz. API anahtarları .

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

Datadog API anahtarınız gibi bir gizli anahtarın değerini doğrudan üretim ortamında belirtmekten kaçının. Bunun yerine Azure Key Vault'ta depolanan bir gizliye başvuru kullanın.

Şablon dağıtımı için anahtar kasasını etkinleştirmeniz gerekir. Şablon dağıtımını etkinleştirmek için, enabledForTemplateDeployment özelliği etkinleştirilmiş olarak anahtar kasasını oluşturun veya <KEY_VAULT_NAME> değerini kendi değerinize değiştirerek aşağıdaki Azure CLI komutunu çalıştırın.

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

Daha fazla bilgi için bkz.

Azure Key Vault'tan Datadog API anahtarınızı almak için bir parametre dosyası oluşturun.

Aşağıdaki dosyaları dağıtmadan önce <PLACEHOLDERS> öğesini kendi değerlerinizle değiştirin.

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

Artık ARM şablonunuzda parametresine datadogapikey başvurabilirsiniz.

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

Kaynağı dağıtmak için, <PLACEHOLDERS> öğesini kendi değerlerinizle değiştirerek aşağıdaki Azure CLI komutunu çalıştırın.

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

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 izler

İ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
resource-group Kaynak grubunun adı. Varsayılan grubu az configure --defaults group=<NAME> kullanarak yapılandırabilirsiniz.
name Container Apps ortamının adı.
otlp-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 doğru. İ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, '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, uygulamanızın veri göndereceği aracıyı tanımlamak amacıyla destinations dizisini kullanın. Geçerli anahtarlar ya appInsights, dataDog veya özel OTLP uç noktanızın adıdır. 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ış 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.

Bitiş noktasına göre

  • Her seferinde yalnızca bir Application Insights 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 örnek ARM şablonu, adlı customDashboardbir OTLP uç noktasının nasıl kullanılacağını gösterir. Ş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 için ölçümler ve customDashboard
{
  ...
  "properties": {
    ...
    "openTelemetryConfiguration": {
      ...
      "tracesConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "logsConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ]
      },
      "metricsConfiguration": {
        "destinations": [
          "dataDog",
          "customDashboard"
        ]
      }
    }
  }
}

Sistem bileşenlerinin OpenTelemetry sinyallerini dışarı aktarma

OpenTelemetry API sürümünden 2024-08-02-preview, sistem bileşenlerini OpenTelemetry sinyallerini veri hedeflerinize aktaracak şekilde kapsayıcı uygulama ortamınızı yapılandırabilirsiniz.

Dapr izlemelerini ve KEDA ölçümlerini dışarı aktarmak için aşağıdaki yapılandırmayı kullanın.

Dapr İzlemeleri

Aşağıdaki örnek ARM şablonu, Dapr İzlemelerini izleme hedeflerinize dışarı aktarmayı gösterir.

{
  ...
  "properties": {
    ...
    "openTelemetryConfiguration": {
      ...
      "tracesConfiguration": {
        "destinations": [
          "appInsights",
          "customDashboard"
        ],
        "includeDapr": true
      }
    }
  }
}

Kapsayıcı uygulamalarında Dapr'ı kullanma hakkında daha fazla bilgi edinmek için bkz. Dapr'a Genel Bakış.

KEDA ölçümleri

Aşağıdaki örnek ARM şablonu, KEDA ölçümlerini ölçüm hedeflerinize dışarı aktarmayı gösterir.

{
  ...
  "properties": {
    ...
    "openTelemetryConfiguration": {
      ...
      "metricsConfiguration": {
        "destinations": [
          "dataDog",
          "customDashboard"
        ],
        "includeKeda": true
      }
    }
  }
}

Container Apps'te KEDA desteği hakkında daha fazla bilgi edinmek için bkz. Ölçeklendirme kurallarını ayarlama.

Örnek OpenTelemetry yapılandırması

Aşağıdaki örnek şablon, Azure İzleyici Uygulama İçgörüleri, Datadog ve customDashboard adlı özel bir OTLP aracısı kullanarak kapsayıcı uygulamanızı telemetri verilerini toplayacak şekilde nasıl yapılandırabileceğinizi gösterir.

Bu örnek, Bir Azure Key Vault'tan Datadog API anahtarını almak için kullanılan parametre dosyasıyla çalışır.

Bu şablonu dağıtmadan önce, mevcut değerleri sizin değerlerinizle değiştirin <PLACEHOLDERS>.

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

Daha fazla bilgi için bkz . Microsoft.App/managedEnvironments.

Veri dayanıklılığı

Bir uç noktada mesajlaşma kesintisi olması durumunda, OpenTelemetry aracısı veri dayanıklılığını desteklemek için aşağıdaki yordamı kullanır:

  • Bellek içi arabelleğe alma ve yeniden denemeler: Aracı verileri bellekte tutar ve beş dakikaya kadar, (bekleme süresi artarak) yeniden denemeye devam ettirir.
  • Verileri bırakma: Arabelleğe alınan kuyruk dolarsa veya uç nokta yeniden denemelerden sonra hala çalışmıyorsa, bellek yetersiz kalmaması için aracı en eski veri topluluklarını atar.

Ortam değişkenleri

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

İlk üç ortam değişkeni standart OpenTelemetry yapılandırmasını izler 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 İhracatçı yapılandırması hakkında bilgi edinin; daha fazla bilgi için 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 grpc'yi destekler. Değer: grpc.
OTEL_RESOURCE_ATTRIBUTES Tüm telemetri verilerine bağlı kaynak özniteliklerini tanımlayan anahtar-değer çiftlerinin virgülle ayrılmış listesi. Yönetilen aracı, bu değişkeni uygulama adı ve ortam gibi kapsayıcı uygulama öznitelikleriyle doldurur. Bazı OpenTelemetry SDK uygulamaları, bu öznitelikleri kullanmak için ortam tabanlı kaynak algılamayı açıkça etkinleştirmenizi gerektirir. Kapsayıcı uygulaması belirtiminde bu değişkeni ayarlarsanız, değeriniz otomatik olarak eklenen değerin üzerine yazar.

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

Yönetilen OpenTelemetry aracısı sizin için ek işlem maliyeti olmadan çalışır. Microsoft, Container Apps ortamınızda aracı altyapısını sağlar ve yönetir.

Ancak, telemetri verilerinizi gönderdiğiniz hedef hizmetler tarafından uygulanan ücretler sizin sorumluluğunuzdadır. Faturalama yapısı ve koşulları için hedef hizmete bakın. Örneğin, hem Azure İzleyici Application Insights'a hem de Datadog'a veri gönderirseniz, her iki hizmet tarafından uygulanan ücretlerden siz sorumlu olursunuz.

Aracı kaynak tahsisi

Yönetilen OpenTelemetry ajanı aşağıdaki sabit kaynaklarla donatılmıştır.

  • CPU: 0,5 vCPU çekirdeği
  • Bellek: 1,5 BG RAM
  • Çoğaltmalar: Tek çoğaltma (yapılandırılamaz)

Bu kaynaklar Microsoft tarafından yönetilir ve faturalama veya kaynak tüketimi ölçümlerinizde görünmez.

Bilinen sınırlamalar

  • Sistem günlükleri veya Container Apps standart ölçümleri gibi sistem verileri OpenTelemetry aracısına gönderilmek üzere kullanılamaz.
  • Application Insights uç noktası ölçümleri kabul etmez.
  • Yapılandırma ayarları ortam düzeyinde bulunur. Farklı hedeflere farklı veri türleri gönderebilirsiniz, ancak verilerinizi uygulamaya göre bölemezsiniz. Örneğin, aynı uygulamada Datadog'a ölçümler ve App Insights'a izlemeler gönderebilirsiniz.
  • Yönetilen aracı yalnızca telemetri verileri için gRPC aktarım protokollerini destekler.
  • Yönetilen OpenTelemetry aracısı tek bir çoğaltma olarak çalışır ve yüksek kullanılabilirlik için ölçeklendirilemez veya yapılandırılamaz.
  • Aracı durumu ve sağlık metrikleri şu anda Azure portalında veya izleme API'leri aracılığıyla gösterilmez.
  • Gizli diziler (API anahtarları gibi) doğrudan şablonlarda belirtilmelidir. Aracı yapılandırması için Azure Key Vault tümleştirmesi şu anda desteklenmemektedir.

Sıkça sorulan sorular

  • Kodumda OpenTelemetry SDK'sına başvurmam gerekiyor mu?

    Evet. SDK telemetri verileri oluşturur ve yönetilen aracı yalnızca verileri yönlendirmekle sorumludur.

  • list Komut neden null döndürmektedir?

    az containerapp env telemetry otlp list'yi çalıştırdığınızda, yanıt null değerin hassas bir belirteç olduğu ve korunması gerektiği zamandır.

  • OpenTelemetry aracısının işlem kaynakları için ücretlendirildim mi?

    Hayır. Microsoft, aracı altyapısını ek işlem maliyeti olmadan sağlar ve yönetir. Yalnızca telemetri verilerinizi alan hedef hizmetler için ücretlendirilirsiniz.

  • OpenTelemetry aracısını ölçeklendirebilir veya birden çok çoğaltma çalıştırabilir miyim?

    Hayır. Yönetilen aracı, şu anda sabit kaynak ayırma (0,5 CPU, 1,5 GB RAM) ile tek bir çoğaltma olarak çalışmaktadır. Yüksek kullanılabilirlik yapılandırmaları şu anda desteklenmemektedir.

  • OpenTelemetry aracısının sağlık ve durumunu nasıl izleyebilirim?

    Ajan durumu ve sağlık ölçümleri şu anda gösterilmiyor. Bu özellik gelecekteki bir sürüm için planlanıyor.

Özel DNS yapılandırması

Yönetilen OpenTelemetry toplayıcısı, Container Apps ortamınızdaki özel DNS yapılandırmasını dikkate alır. Özel DNS ayarlarını yapılandırdıysanız, toplayıcı dış uç noktalara bağlanırken ad çözümlemesi için bu ayarları otomatik olarak kullanır. Bu, OpenTelemetry verilerinizin ağ altyapınız üzerinden doğru şekilde yönlendirilmesini sağlar.

Sonraki adımlar