Azure Uygulaması Hizmeti ve Node.js için Uygulama İzleme

Azure Uygulaması Hizmetlerinde çalışan Node.js web uygulamalarınızı izlemek için kodda herhangi bir değişiklik yapılması gerekmez. Bu makale, Azure İzleyici Uygulaması Analizler izlemesini etkinleştirme konusunda size yol gösterir ve büyük ölçekli dağıtımlar için süreci otomatikleştirmeye yönelik ön yönergeler sağlar.

Application Insights’ı Etkinleştir

Azure Uygulaması Hizmetlerinde çalışan Node.js uygulamalar için uygulama izlemeyi etkinleştirmenin en kolay yolu Azure portalından geçmektir. Azure portalında uygulama izlemeyi açmak, uygulamanızı Uygulama Analizler ile otomatik olarak izler ve herhangi bir kod değişikliği gerektirmez.

Not

Otomatik olarak eklenen aracıyı, App Service Ortamı değişkeni dikey penceresindeki APPLICATIONINSIGHTS_CONFIGURATION_CONTENT ortam değişkenini kullanarak yapılandırabilirsiniz. Bu ortam değişkeni aracılığıyla geçirilebilen yapılandırma seçenekleri hakkında ayrıntılı bilgi için bkz . yapılandırma Node.js.

Not

Hem otomatik izleme hem de el ile SDK tabanlı izleme algılanırsa, yalnızca el ile izleme ayarları kabul edilir. Bu, yinelenen verilerin gönderilmesini önlemektir. Daha fazla bilgi 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ı.

Azure Uygulaması Hizmeti'nde çalışan Node.js uygulamalarınız için izlemeyi tek bir tıklamayla açabilirsiniz; kod değişikliği gerekmez. Node.js için uygulama Analizler, hem kod tabanlı hem de özel kapsayıcılar olan Linux'ta Azure Uygulaması Hizmeti ve kod tabanlı uygulamalar için Windows üzerinde App Service ile tümleştirilir. Tümleştirme genel önizleme aşamasındadır. Tümleştirme, GA'da bulunan Node.js SDK'yı 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. Hangi kaynağı kullanacağınızı belirttikten sonra, kullanmaya hazırsınız demektir.

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

Yapılandırma

Node.js aracısı JSON kullanılarak yapılandırılabilir. Ortam değişkenini APPLICATIONINSIGHTS_CONFIGURATION_CONTENT JSON dizesine ayarlayın veya ortam değişkenini APPLICATIONINSIGHTS_CONFIGURATION_FILE JSON içeren dosya yoluna ayarlayın.

"samplingPercentage": 80,
"enableAutoCollectExternalLoggers": true,
"enableAutoCollectExceptions": true,
"enableAutoCollectHeartbeat": true,
"enableSendLiveMetrics": true,
...
    

Tüm yapılandırmalar kullanılabilir durumdadır, yalnızca geçerli bir json dosyası kullanmanız yeterlidir.

İstemci Tarafı İzlemeyi Etkinleştirme

Node.js uygulamanızda istemci tarafı izlemeyi etkinleştirmek için istemci tarafı JavaScript SDK'sını uygulamanıza el ile eklemeniz gerekir.

İ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
ApplicationInsightsAgent_EXTENSION_VERSION Çalışma zamanı izlemeyi denetleyen ana uzantı. ~2 windows veya ~3 Linux'ta.
XDT_MicrosoftApplication Analizler_NodeJS Node.js aracısının dahil olup olmadığını denetlemek için bayrak. 0 veya 1 (yalnızca Windows'ta geçerlidir).

Not

Profil oluşturucu ve anlık görüntü hata ayıklayıcısı Node.js uygulamalarda kullanılamaz

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

Sorun giderme

aşağıda, Azure Uygulaması Hizmetlerinde çalışan Node.js tabanlı uygulamalar için uzantı/aracı tabanlı izleme için adım adım sorun giderme kılavuzumuz yer almaktadır.

  1. Uygulama ayarının ApplicationInsightsAgent_EXTENSION_VERSION "~2" değerine ayarlandığını denetleyin.

  2. https://yoursitename.scm.azurewebsites.net/ApplicationInsights adresine göz atın.

    Yukarıdaki sonuçlar sayfasının bağlantısının ekran görüntüsü.

    • Application Insights Extension StatusPre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Çalışmıyorsa Uygulama Analizler izleme yönergelerini etkinleştirin.

    • D:\local\Temp\status.json adresine gidin ve status.json açın.

    Bunun SDKPresent false, AgentInitializedSuccessfully true ve IKey geçerli bir iKey değerine sahip olduğunu onaylayın.

    Aşağıda JSON dosyasının bir örneği verilmiştir:

        "AppType":"node.js",
    
        "MachineName":"c89d3a6d0357",
    
        "PID":"47",
    
        "AgentInitializedSuccessfully":true,
    
        "SDKPresent":false,
    
        "IKey":"00000000-0000-0000-0000-000000000000",
    
        "SdkVersion":"1.8.10"
    
    

    SDKPresent True ise bu, uzantının SDK'nın bazı yönlerinin Uygulamada zaten mevcut olduğunu algıladığını ve geri çekileceğini gösterir.

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.

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.

Sürüm notları

En son güncelleştirmeler ve hata düzeltmeleri için sürüm notlarını inceleyin.

Sonraki adımlar