Share via


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:

İzleme Desteklenen kitaplık Adı Desteklenen sürümler
OpenTelemetry Django Instrumentation django Bağlantı
OpenTelemetry FastApi Instrumentation fastapi Bağlantı
OpenTelemetry Flask Instrumentation flask Bağlantı
OpenTelemetry Psycopg2 Instrumentation psycopg2 Bağlantı
OpenTelemetry İstekleri İzleme requests Bağlantı
OpenTelemetry UrlLib Instrumentation urllib Tümünü
OpenTelemetry UrlLib3 Instrumentation urllib3 Bağlantı

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.

  1. Uygulama hizmetinizin Azure denetim masasında Uygulama Analizler'ni ve ardından Etkinleştir'i seçin.

    Etkinleştir'in seçili olduğu Uygulama Analizler sekmesinin ekran görüntüsü.

  2. 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ğınızı değiştirin açılan listesinin ekran görüntüsü.

  3. Kaynağı belirtirsiniz ve kullanıma hazırdır.

    Uygulamanızı izleme ekran görüntüsü.

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.nameiç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 Noneayarlanırsa, ölçüm telemetrisinin toplanmasını ve dışarı aktarımını devre dışı bırakır.
OTEL_TRACES_EXPORTER olarak Noneayarlanı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:

Kullanılabilir Uygulama Analizler ayarlarıyla App Service Uygulama Ayarlar ekran görüntüsü.

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.

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.

  1. İstediğiniz web uygulaması bilgileriyle yeni bir App Service kaynağı oluşturun. İzleme sekmesinde Uygulama Analizler'ni etkinleştirin.

  2. Gözden geçir ve oluştur’u seçin. Ardından Otomasyon için şablon indir'i seçin.

    App Service web uygulaması oluşturma menüsünü gösteren ekran görüntüsü.

    Bu seçenek, tüm gerekli ayarların yapılandırıldığı en son Resource Manager şablonunu oluşturur.

    App Service web uygulaması şablonunu gösteren ekran görüntüsü.

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 AppMonitoredRGadlı 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 ~2ayarlayın. Linux kullanıyorsanız, Application Analizler Agent_EXTENSION_VERSION değerini olarak ~3ayarlayı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:

Etkinleştir'in seçili olduğu Uygulama Analizler sekmesinin ekran görüntüsü.

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.

Kullanılabilir Uygulama Analizler ayarlarıyla App Service Uygulama Ayarlar ekran görüntüsü.

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