Azure Uygulaması Hizmeti ve Python için uygulama izleme (Önizleme)
Önemli
Beta veya önizleme aşamasında olan ya da başka bir şekilde henüz genel kullanıma sunulmamış olan Azure özelliklerinde geçerli olan yasal koşullar için bkz. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları.
Kodu değiştirmeden python web uygulamalarınızı Azure Uygulaması Hizmetleri'ni izleyin. Bu kılavuz, Azure İzleyici Uygulama Analizler'yi etkinleştirmeyi gösterir ve büyük ölçekli dağıtımları otomatikleştirmeye yönelik ipuçları sunar.
Tümleştirme, kodunuzdaki popüler Python kitaplıklarını kullanarak bağımlılıkları, günlükleri ve ölçümleri otomatik olarak toplamanıza ve ilişkilendirmenize olanak sağlar. İzlemeden sonra, şu Python kitaplıklarından çağrıları ve ölçümleri toplarsınız:
Not
Django kullanıyorsanız, bu makaledeki ek Django İzleme bölümüne bakın.
Günlük telemetrisi kök günlükçü düzeyinde toplanır. Python'ın yerel günlük hiyerarşisi hakkında daha fazla bilgi edinmek için Python günlüğü belgelerini ziyaret edin.
Önkoşullar
- Python sürüm 3.11 veya öncesi.
- App Service kod olarak dağıtılmalıdır. Özel kapsayıcılar desteklenmez.
Application Insights’ı Etkinleştir
Azure Uygulaması Hizmetlerinde Python uygulamalarını izlemenin en kolay yolu Azure portalından geçmektir.
Azure portalında izlemeyi etkinleştirmek, uygulamanızı Uygulama Analizler ile otomatik olarak izler ve kod değişikliği gerektirmez.
Not
App Service'te otomatik müdahaleyi yalnızca kodunuzda Azure İzleyici OpenTelemetry Distro veya Azure İzleyici OpenTelemetry Exporter gibi OpenTelemetry'nin el ile izlemesini kullanmıyorsanız kullanmanız gerekir. Bu, yinelenen verilerin gönderilmesini önlemektir. Bu konuda daha fazla bilgi edinmek için bu makaledeki sorun giderme bölümüne bakın.
Azure portalı aracılığıyla otomatik yetkisiz erişim
Desteklenen otomatik dağıtım senaryolarının tam listesi için bkz . Desteklenen ortamlar, diller ve kaynak sağlayıcıları.
Kod değişikliği gerekmeden Azure Uygulaması Hizmeti'nde Python uygulamalarınız için izlemeyi açın.
Python için uygulama Analizler, kod tabanlı Linux Azure Uygulaması Hizmeti ile tümleştirilir.
Tümleştirme genel önizleme aşamasındadır. Ga'da bulunan Python SDK'sını ekler.
Uygulama hizmetinizin Azure denetim masasında Uygulama Analizler'ni ve ardından Etkinleştir'i seçin.
Yeni bir kaynak oluşturmayı seçin veya bu uygulama için mevcut bir Uygulama Analizler kaynağı seçin.
Not
Yeni kaynağı oluşturmak için Tamam'ı seçtiğinizde İzleme ayarlarını uygula'yı seçmeniz istenir. Devam'ı seçtiğinizde yeni Uygulama Analizler kaynağınız uygulama hizmetinize bağlanır ve bu işlem uygulama hizmetinizin yeniden başlatılmasını da tetikler.
Kaynağı belirtirsiniz ve kullanıma hazırdır.
Yapılandırma
OpenTelemetry ortam değişkenleriyle yapılandırabilirsiniz, örneğin:
Ortam Değişkeni | Açıklama |
---|---|
OTEL_SERVICE_NAME , OTEL_RESOURCE_ATTRIBUTES |
Uygulamanızla ilişkili OpenTelemetry Kaynak Özniteliklerini belirtir. OTEL_RESOURCE_ATTRIBUTES ile herhangi bir Kaynak Özniteliği ayarlayabilir veya yalnızca ayarlamak service.name için OTEL_SERVICE_NAME kullanabilirsiniz. |
OTEL_LOGS_EXPORTER |
olarak ayarlanırsa None , günlük telemetrisinin toplanmasını ve dışarı aktarımını devre dışı bırakır. |
OTEL_METRICS_EXPORTER |
olarak None ayarlanırsa, ölçüm telemetrisinin toplanmasını ve dışarı aktarımını devre dışı bırakır. |
OTEL_TRACES_EXPORTER |
olarak None ayarlanırsa, dağıtılmış izleme telemetrisinin toplanmasını ve dışarı aktarımını devre dışı bırakır. |
OTEL_BLRP_SCHEDULE_DELAY |
Günlüğe kaydetme dışarı aktarma aralığını milisaniye cinsinden belirtir. Varsayılan değer 5000'tir. |
OTEL_BSP_SCHEDULE_DELAY |
Dağıtılmış izleme dışarı aktarma aralığını milisaniye cinsinden belirtir. Varsayılan değer 5000'tir. |
OTEL_PYTHON_DISABLED_INSTRUMENTATIONS |
Devre dışı bırakacak OpenTelemetry izlemelerini belirtir. Devre dışı bırakıldığında, izlemeler otomatik yetkisiz erişim kapsamında yürütülemez. Küçük harf kitaplık adlarının virgülle ayrılmış listesini kabul eder. Örneğin, Psycopg2 ve FastAPI izlemelerini devre dışı bırakmak için "psycopg2,fastapi" olarak ayarlayın. Varsayılan olarak boş bir listeye sahiptir ve desteklenen tüm izlemeleri etkinleştirir. |
Topluluk izleme kitaplığı ekleme
OpenTelemetry topluluğundan izleme kitaplıkları eklediğinizde otomatik olarak daha fazla veri toplayabilirsiniz.
Dikkat
Topluluk izleme kitaplıklarının kalitesini desteklemiyoruz veya garanti vermiyoruz. Dağıtım, gönderi veya geri bildirim topluluğumuzda oy verme önerisinde bulunmak için. Bazıları deneysel OpenTelemetry belirtimlerini temel alır ve gelecekteki hataya neden olabilecek değişikliklere neden olabilir.
Topluluk OpenTelemetry Instrumentation Library'yi eklemek için uygulamanızın requirements.txt
dosyası aracılığıyla yükleyin. OpenTelemetry autoinstrumentation, tüm yüklü kitaplıkları otomatik olarak alır ve bu kitaplıkları izler. Topluluk kitaplıklarının listesini burada bulabilirsiniz.
İzlemeyi otomatikleştirme
Telemetri koleksiyonunu Application Analizler ile etkinleştirmek için yalnızca aşağıdaki Uygulama ayarlarının ayarlanması gerekir:
Uygulama ayarları tanımları
Uygulama ayarı adı | Tanım | Değer |
---|---|---|
APPLICATIONINSIGHTS_CONNECTION_STRING | Uygulama Analizler kaynağınız için Bağlan ions dizesi | Örnek: abcd1234-ab12-cd34-abcd1234abcd |
ApplicationInsightsAgent_EXTENSION_VERSION | Çalışma zamanı izlemeyi denetleyen ana uzantı. | ~3 |
Not
Python uygulamaları için profil oluşturucu ve anlık görüntü hata ayıklayıcısı kullanılamıyor
Azure Resource Manager ile App Service uygulama ayarları
Azure Uygulaması Hizmeti için uygulama ayarları Azure Resource Manager şablonlarıyla yönetilebilir ve yapılandırılabilir. Resource Manager otomasyonu ile yeni App Service kaynaklarını dağıtırken veya mevcut kaynakların ayarlarını değiştirirken bu yöntemi kullanabilirsiniz.
App Service kaynağı için uygulama ayarları JSON'un temel yapısı:
"resources": [
{
"name": "appsettings",
"type": "config",
"apiVersion": "2015-08-01",
"dependsOn": [
"[resourceId('Microsoft.Web/sites', variables('webSiteName'))]"
],
"tags": {
"displayName": "Application Insights Settings"
},
"properties": {
"key1": "value1",
"key2": "value2"
}
}
]
Uygulama Analizler için yapılandırılmış uygulama ayarlarıyla resource manager şablonu örneği için bu şablon yararlı olabilir. Özellikle, 238. satırda başlayan bölüme bakın.
Uygulama Analizler kaynağı oluşturmayı otomatikleştirme ve yeni oluşturduğunuz App Service kaynağına bağlanma
Varsayılan Uygulama Analizler ayarlarıyla bir Resource Manager şablonu oluşturmak için, Uygulama Analizler etkin olarak yeni bir web uygulaması oluşturacak gibi işlemi başlatın.
İstediğiniz web uygulaması bilgileriyle yeni bir App Service kaynağı oluşturun. İzleme sekmesinde Uygulama Analizler'ni etkinleştirin.
Gözden geçir ve oluştur’u seçin. Ardından Otomasyon için şablon indir'i seçin.
Bu seçenek, tüm gerekli ayarların yapılandırıldığı en son Resource Manager şablonunu oluşturur.
Aşağıdaki örnekte, tüm örneklerini AppMonitoredSite
site adınız ile değiştirin:
Not
Windows kullanıyorsanız olarak ayarlayın ApplicationInsightsAgent_EXTENSION_VERSION
~2
. Linux kullanıyorsanız olarak ayarlayın ApplicationInsightsAgent_EXTENSION_VERSION
~3
.
{
"resources": [
{
"name": "[parameters('name')]",
"type": "Microsoft.Web/sites",
"properties": {
"siteConfig": {
"appSettings": [
{
"name": "APPINSIGHTS_INSTRUMENTATIONKEY",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').InstrumentationKey]"
},
{
"name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
"value": "[reference('microsoft.insights/components/AppMonitoredSite', '2015-05-01').ConnectionString]"
},
{
"name": "ApplicationInsightsAgent_EXTENSION_VERSION",
"value": "~2"
}
]
},
"name": "[parameters('name')]",
"serverFarmId": "[concat('/subscriptions/', parameters('subscriptionId'),'/resourcegroups/', parameters('serverFarmResourceGroup'), '/providers/Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"dependsOn": [
"[concat('Microsoft.Web/serverfarms/', parameters('hostingPlanName'))]",
"microsoft.insights/components/AppMonitoredSite"
],
"apiVersion": "2016-03-01",
"location": "[parameters('location')]"
},
{
"apiVersion": "2016-09-01",
"name": "[parameters('hostingPlanName')]",
"type": "Microsoft.Web/serverfarms",
"location": "[parameters('location')]",
"properties": {
"name": "[parameters('hostingPlanName')]",
"workerSizeId": "[parameters('workerSize')]",
"numberOfWorkers": "1",
"hostingEnvironment": "[parameters('hostingEnvironment')]"
},
"sku": {
"Tier": "[parameters('sku')]",
"Name": "[parameters('skuCode')]"
}
},
{
"apiVersion": "2015-05-01",
"name": "AppMonitoredSite",
"type": "microsoft.insights/components",
"location": "West US 2",
"properties": {
"ApplicationId": "[parameters('name')]",
"Request_Source": "IbizaWebAppExtensionCreate"
}
}
],
"parameters": {
"name": {
"type": "string"
},
"hostingPlanName": {
"type": "string"
},
"hostingEnvironment": {
"type": "string"
},
"location": {
"type": "string"
},
"sku": {
"type": "string"
},
"skuCode": {
"type": "string"
},
"workerSize": {
"type": "string"
},
"serverFarmResourceGroup": {
"type": "string"
},
"subscriptionId": {
"type": "string"
}
},
"$schema": "https://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0"
}
PowerShell aracılığıyla etkinleştirme
PowerShell aracılığıyla uygulama izlemeyi etkinleştirmek için yalnızca temel uygulama ayarlarının değiştirilmesi gerekir. Aşağıdaki örnek, kaynak grubunda AppMonitoredRG
adlı AppMonitoredSite
bir web sitesi için uygulama izlemeyi etkinleştirir. İzleme anahtarına gönderilecek 012345678-abcd-ef01-2345-6789abcd
verileri yapılandırıyor.
Not
Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.
Not
Windows kullanıyorsanız, Uygulama Analizler Agent_EXTENSION_VERSION olarak ~2
ayarlayın. Linux kullanıyorsanız, Application Analizler Agent_EXTENSION_VERSION değerini olarak ~3
ayarlayın.
$app = Get-AzWebApp -ResourceGroupName "AppMonitoredRG" -Name "AppMonitoredSite" -ErrorAction Stop
$newAppSettings = @{} # case-insensitive hash map
$app.SiteConfig.AppSettings | %{$newAppSettings[$_.Name] = $_.Value} # preserve non Application Insights application settings.
$newAppSettings["APPINSIGHTS_INSTRUMENTATIONKEY"] = "012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights instrumentation key
$newAppSettings["APPLICATIONINSIGHTS_CONNECTION_STRING"] = "InstrumentationKey=012345678-abcd-ef01-2345-6789abcd"; # set the Application Insights connection string
$newAppSettings["ApplicationInsightsAgent_EXTENSION_VERSION"] = "~2"; # enable the ApplicationInsightsAgent
$app = Set-AzWebApp -AppSettings $newAppSettings -ResourceGroupName $app.ResourceGroup -Name $app.Name -ErrorAction Stop
Django Instrumentation
OpenTelemetry Django Instrumentation'ı kullanmak için App Service ayarlarında ortam değişkenini uygulama klasörünüzden ayarlar modülünüze işaret etmek üzere ayarlamanız DJANGO_SETTINGS_MODULE
gerekir. Daha fazla bilgi için Django belgelerine bakın.
Sık sorulan sorular
Uygulama Analizler ile Azure Uygulaması Hizmeti ölçümleri arasındaki standart ölçümler arasındaki fark nedir?
Uygulama Analizler, uygulamaya yapılan istekler için telemetri toplar. WebApps/WebServer'da hata oluşursa ve istek kullanıcı uygulamasına ulaşmadıysa, Uygulama Analizler bu konuda telemetrisi yoktur.
Uygulama Analizler tarafından hesaplanan süreserverresponsetime
, Web Apps tarafından gözlemlenen sunucu yanıt süresiyle eşleşmez. Bu davranışın nedeni, Uygulama Analizler yalnızca isteğin kullanıcı uygulamasına ulaştığı süreyi saymadır. İstek WebServer'da takıldıysa veya kuyruğa alındıysa, bekleme süresi Web Apps ölçümlerine dahil edilir ancak Uygulama Analizler ölçümlerine eklenmez.
Sorun giderme
Burada, otomatik yetkisiz erişim kullanarak Azure Uygulaması Hizmetlerinde Python uygulamalarını izlemeye yönelik sorun giderme kılavuzumuzu sağlıyoruz.
Yinelenen telemetri
App Service'te otomatik müdahaleyi yalnızca kodunuzda Azure İzleyici OpenTelemetry Distro veya Azure İzleyici OpenTelemetry Exporter gibi OpenTelemetry'nin el ile izlemesini kullanmıyorsanız kullanmanız gerekir. El ile izlemenin üzerinde otomatik yetkisiz erişim kullanılması yinelenen telemetriye neden olabilir ve maliyetinizi artırabilir. App Service OpenTelemetry otomatik müdahalesini kullanmak için, önce kodunuzdan OpenTelemetry'nin el ile izlemesini kaldırın.
Telemetri eksik
Telemetriniz eksikse, otomatik yetkisiz erişim özelliğinin doğru etkinleştirildiğini onaylamak için bu adımları izleyin.
1. Adım: App Service kaynağınızdaki Uygulama Analizler dikey penceresini denetleyin
App Service Kaynağınızdaki Uygulama Analizler dikey penceresinde otomatik yetkisiz girişin etkinleştirildiğini onaylayın:
2. Adım: Uygulama Ayarlar doğru olduğunu onaylayın
Uygulama ayarının ApplicationInsightsAgent_EXTENSION_VERSION
değerine ~3
ayarlandığını ve uygun Uygulama Analizler kaynağına işaret ettiğini APPLICATIONINSIGHTS_CONNECTION_STRING
onaylayın.
3. Adım: Otomatik yetkisiz erişim tanılamalarını ve durum günlüklerini denetleme
/var/log/applicationinsights/ adresine gidin ve status_*.json açın.
Bunun AgentInitializedSuccessfully
true olarak ayarlandığını ve IKey
geçerli bir iKey'e sahip olduğunu onaylayın.
Aşağıda örnek bir JSON dosyası verilmişti:
"AgentInitializedSuccessfully":true,
"AppType":"python",
"MachineName":"c89d3a6d0357",
"PID":"47",
"IKey":"00000000-0000-0000-0000-000000000000",
"SdkVersion":"1.0.0"
applicationinsights-extension.log
Aynı klasördeki dosya diğer yararlı tanılamaları gösterebilir.
Django uygulamaları
Uygulamanız Django kullanıyorsa ve başlatılamıyorsa veya yanlış ayarlar kullanıyorsa ortam değişkenini ayarladığınızdan DJANGO_SETTINGS_MODULE
emin olun. Ayrıntılar için Django İzleme bölümüne bakın.
Uygulama konağınızla alma hizmeti arasındaki bağlantıyı test etme
Uygulama Analizler SDK'ları ve aracıları, alma uç noktalarımıza REST çağrıları olarak alınabilmek için telemetri gönderir. PowerShell veya curl komutlarından ham REST istemcilerini kullanarak web sunucunuzdan veya uygulama konak makinenizden alma hizmeti uç noktalarına bağlantıyı test edebilirsiniz. Bkz. Azure İzleyici Uygulama Analizler eksik uygulama telemetri sorunlarını giderme.
En son güncelleştirmeler ve hata düzeltmeleri için sürüm notlarını inceleyin. -->
Sonraki adımlar
- Azure tanılamalarının Uygulama Analizler gönderilmesini etkinleştirme
- Hizmetinizin kullanılabilir ve duyarlı olduğundan emin olmak için hizmet durumu ölçümlerini izleme
- İşletimsel olaylar gerçekleştiğinde veya ölçümler bir eşiği geçtiğinde uyarı bildirimleri alma
- Kullanılabilirliğe genel bakış