Pemantauan Aplikasi untuk App Service Azure

Pemantauan aplikasi web Node.js Anda yang berjalan di Azure App Services tidak memerlukan modifikasi apa pun pada kode. Artikel ini akan memandu Anda dalam mengaktifkan pemantauan Application Insights Azure Monitor serta memberikan panduan awal untuk mengotomatiskan proses penyebaran skala besar.

Aktifkan Application Insights

Cara termudah untuk mengaktifkan pemantauan aplikasi pada aplikasi Node.js yang berjalan di Azure App Services adalah melalui portal Microsoft Azure. Mengaktifkan pemantauan aplikasi di portal Microsoft Azure akan secara otomatis melengkapi aplikasi Anda dengan Application Insights, dan tidak memerlukan perubahan kode apa pun.

Catatan

Jika pemantauan instrumentasi otomatis dan instrumentasi berbasis SDK manual terdeteksi, hanya pengaturan instrumentasi manual yang akan diterapkan. Hal ini untuk mencegah data duplikat dikirim. Untuk mempelajari lebih lanjut tentang ini, lihat bagian pemecahan masalah di bawah ini.

Auto-instrumentation melalui portal Microsoft Azure

Anda dapat mengaktifkan pemantauan untuk aplikasi Node.js Anda yang berjalan di Azure App Service hanya dengan satu klik, tanpa perlu mengubah kode. Application Insights untuk Node.js terintegrasi dengan Azure App Service di Linux - kontainer berbasis kode dan kustom, dan dengan App Service di Windows untuk aplikasi berbasis kode. Integrasinya ada di pratinjau publik. Integrasi ini menambahkan Node.js SDK, yang ada di GA.

  1. Pilih Application Insights di panel kontrol Azure untuk layanan aplikasi Anda, lalu pilih Aktifkan.

    Screenshot of Application Insights tab with enable selected.

  2. Pilih untuk membuat sumber daya baru atau pilih sumber daya Application Insights yang sudah ada untuk aplikasi ini.

    Catatan

    Ketika Anda mengklik OK untuk membuat sumber daya baru, Anda akan diminta untuk Menerapkan pengaturan pemantauan. Memilih Lanjutkan akan menautkan sumber daya Application Insights baru ke layanan aplikasi Anda, dengan melakukan hal tersebut juga akan memicu restart layanan aplikasi Anda.

    Screenshot of Change your resource dropdown.

  3. Setelah Anda menentukan sumber daya mana yang akan digunakan, Anda siap untuk pergi.

    Screenshot of instrument your application.

Aktifkan pemantauan sisi klien

Untuk mengaktifkan pemantauan sisi klien pada aplikasi Node.js, Anda perlu menambahkan SDK JavaScript sisi klien secara manual ke aplikasi Anda.

Mengotomatiskan pemantauan

Untuk mengaktifkan koleksi telemetri dengan Application Insights, hanya pengaturan Aplikasi yang perlu diatur:

Screenshot of App Service Application Settings with available Application Insights settings.

Definisi pengaturan aplikasi

Nama pengaturan aplikasi Definisi Nilai
ApplicationInsightsAgent_EXTENSION_VERSION Ekstensi utama, yang mengontrol pemantauan runtime. ~2 di Windows atau ~3 di Linux.
XDT_MicrosoftApplicationInsights_NodeJS Tandai untuk mengontrol apakah agen Node.js disertakan. 0 atau 1 (hanya berlaku di Windows).

Catatan

Profiler dan snapshot debugger tidak tersedia untuk aplikasi Node.js

Pengaturan Aplikasi Layanan Aplikasi dengan Azure Resource Manager

Pengaturan aplikasi untuk App Services dapat dikelola dan dikonfigurasi dengan templat Azure Resource Manager. Metode ini dapat digunakan saat menggunakan sumber daya Layanan Aplikasi baru dengan otomatisasi Azure Resource Manager, atau untuk memodifikasi pengaturan sumber daya yang ada.

Struktur dasar pengaturan aplikasi JSON untuk layanan aplikasi di bawah ini:

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

Untuk contoh templat Azure Resource Manager dengan pengaturan Aplikasi yang dikonfigurasi untuk Application Insights, template ini dapat membantu, khususnya bagian yang dimulai pada baris 238.

Untuk membuat templat Azure Resource Manager dengan semua pengaturan Application Insights default yang telah dikonfigurasi, mulai proses seolah-olah Anda akan membuat Aplikasi Web baru dengan Application Insights diaktifkan.

  1. Buat sumber daya App Service baru dengan informasi aplikasi web yang Anda inginkan. Aktifkan Application Insights pada tab Pemantauan.

  2. Pilih Tinjau +buat lalu Unduh template untuk otomatisasi di bagian bawah.

    Screenshot of App Service web app creation menu.

    Opsi ini menghasilkan templat Azure Resource Manager terbaru dengan semua pengaturan yang diperlukan dikonfigurasi.

    Screenshot of App Service web app template.

Di bawah ini adalah sampel, ganti semua instans AppMonitoredSite dengan nama situs Anda:

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

Mengaktifkan melalui PowerShell

Untuk mengaktifkan pemantauan aplikasi melalui PowerShell, hanya pengaturan aplikasi yang mendasarinya yang perlu diubah. Di bawah ini adalah sampel, yang mengaktifkan pemantauan aplikasi untuk situs web dengan nama "AppMonitoredSite" dalam grup sumber daya "AppMonitoredRG", dan mengonfigurasi data untuk dikirim ke kunci instrumentasi "012345678-abcd-ef01-2345-6789abcd".

Catatan

Artikel ini menggunakan modul Azure Az PowerShell, yang merupakan modul PowerShell yang direkomendasikan untuk berinteraksi dengan Azure. Untuk mulai menggunakan modul Az PowerShell, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

$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

Pemecahan Masalah

Di bawah ini adalah panduan pemecahan masalah langkah demi langkah kami untuk pemantauan berbasis ekstensi/agen untuk aplikasi berbasis ASP.NET dan ASP.NET Core yang berjalan di Azure App Services.

  1. Periksa apakah ApplicationInsightsAgent_EXTENSION_VERSION pengaturan aplikasi diatur ke nilai "~2".

  2. Telusuri https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

    Screenshot of the link above results page.

    • Konfirmasikan bahwa Application Insights Extension Status adalah Pre-Installed Site Extension, version 2.8.x.xxxx, is running.

      Jika tidak berjalan, ikuti instruksi aktifkan pemantauan Application Insights.

    • Arahkan ke D:\local\Temp\status.json dan buka status.json.

    Konfirmasikan bahwa SDKPresent diatur ke salah, AgentInitializedSuccessfully ke benar, dan IKey untuk memiliki iKey yang valid.

    Di bawah ini adalah contoh file JSON:

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

    Jika SDKPresent bernilai benar, maka hal ini menunjukkan bahwa ekstensi mendeteksi beberapa aspek SDK sudah ada dalam Aplikasi, dan akan menerapkan back-off.

String koneksi dan kunci instrumentasi

Ketika pemantauan tanpa kode sedang digunakan, hanya string koneksi yang diperlukan. Namun, kami masih merekomendasikan pengaturan kunci instrumentasi untuk mempertahankan kompatibilitas mundur dengan versi SDK yang lebih lama saat instrumentasi manual sedang dilakukan.

Perbedaan antara Metrik Standar dari metrik Application Insights vs Azure App Service?

Application Insights mengumpulkan telemetri untuk permintaan tersebut yang berhasil masuk ke aplikasi. Jika kegagalan terjadi di WebApps/WebServer, dan permintaan tidak mencapai aplikasi pengguna, maka Application Insights tidak akan memiliki telemetri tentang hal itu.

Durasi untuk serverresponsetime dihitung oleh Application Insights tidak selalu cocok dengan waktu respons server yang diamati oleh Web Apps. Hal ini karena Application Insights hanya menghitung durasi ketika permintaan yang sebenarnya mencapai aplikasi pengguna. Jika permintaan macet/antre di WebServer, waktu tunggu tersebut akan disertakan dalam metrik Aplikasi Web, tetapi tidak dalam metrik Application Insights.

Catatan rilis

Untuk pembaruan terbaru dan perbaikan bug, lihat catatan rilis.

Langkah berikutnya