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 Application Insights, Datadog ve OpenTelemetry Protocol (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ı, CLI veya Terraform (AzAPI sağlayıcısı aracılığıyla) aracılığıyla yapılandırabilirsiniz.
Her uç nokta türünün (Azure İzleyici Application Insights, 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 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 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ı İçgörüleri | 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 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. İzleme anahtarları güvenlik belirteçleri veya güvenlik anahtarları değildir ve gizli dizi olarak kabul edilmez.
Application Insights kaynağınızı kötüye kullanıma karşı korumak istiyorsanız bkz . Application Insights için Microsoft Entra kimlik doğrulaması. 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 değerini değerlerinizle değiştirin <PLACEHOLDERS>
.
{
...
"properties": {
"appInsightsConfiguration ": {
"connectionString": "<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 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 gizli diziye başvuru kullanın.
Şablon dağıtımı için anahtar kasasını etkinleştirmeniz gerekir. Bunu yapmak için özelliğinin etkinleştirildiği anahtar kasasını enabledForTemplateDeployment
oluşturun veya değerini değerinizle değiştirerek <KEY_VAULT_NAME>
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.
- Dağıtım sırasında güvenli parametre geçirmek için Azure Key Vault’u kullanma
- Öğretici: Azure Key Vault'u ARM şablonunuzun dağıtımıyla tümleştirme
Azure Key Vault'tan Datadog API anahtarınızı almak için bir parametre dosyası oluşturun.
Aşağıdaki dosyaları dağıtmadan önce değerini değerlerinizle değiştirin <PLACEHOLDERS>
.
{
"$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 aşağıdaki Azure CLI komutunu çalıştırın ve değerini değerlerinizle değiştirin <PLACEHOLDERS>
.
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 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 |
---|---|
resource-group |
Kaynak grubunun adı. kullanarak varsayılan grubu az configure --defaults group=<NAME> 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 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, '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 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ı customDashboard
bir 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 ve ölçümleri
customDashboard
{
...
"properties": {
...
"openTelemetryConfiguration": {
...
"tracesConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"logsConfiguration": {
"destinations": [
"appInsights",
"customDashboard"
]
},
"metricsConfiguration": {
"destinations": [
"dataDog",
"customDashboard"
]
}
}
}
}
Örnek OpenTelemetry yapılandırması
Aşağıdaki örnek şablon, Azure İzleyici Application Insights, Datadog ve adlı customDashboard
ö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 değerini 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.
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 Application Insights'a 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.
- Application Insights uç noktası ölçümleri kabul etmez.
- Datadog uç noktası günlükleri kabul etmez.