Pemantauan aplikasi untuk Azure App Service dan ASP.NET Core

Mengaktifkan pemantauan pada aplikasi web berbasis ASP.NET Core Anda yang berjalan di Azure App Service sekarang lebih mudah daripada sebelumnya. Sebelumnya, Anda perlu melengkapi aplikasi Anda secara manual. Sekarang, ekstensi/agen terbaru dibangun ke dalam gambar App Service secara default. Artikel ini memanding Anda mengaktifkan pemantauan Application Insights Azure Monitor. Ini juga memberikan panduan awal untuk mengotomatiskan proses untuk penyebaran skala besar.

Catatan

Pada tanggal 31 Maret 2025, dukungan untuk penyerapan kunci instrumentasi akan berakhir. Penyerapan kunci instrumentasi akan berjalan terus, namun kami tidak akan lagi menyediakan pembaruan atau dukungan terhadap fitur tersebut. Transisi ke string koneksi untuk memanfaatkan kemampuan baru.

Mengaktifkan pemantauan autoinstrumentasi

Untuk daftar lengkap skenario autoinstrumentasi yang didukung, lihat Lingkungan, bahasa, dan penyedia sumber daya yang didukung.

Penting

Hanya Dukungan Jangka Panjang .NET Core yang didukung untuk autoinstrumentasi di Windows.

Memangkas penyebaran mandiritidak didukung. Gunakan instrumentasi manual melalui kode sebagai gantinya.

Catatan

Autoinstrumentasi digunakan untuk dikenal sebagai "lampiran tanpa kode" sebelum Oktober 2021.

Lihat bagian Aktifkan pemantauan berikut untuk mulai menyiapkan Application Insights dengan sumber daya App Service Anda.

Mengaktifkan pemantauan

  1. Pilih Application Insights di panel kiri untuk layanan aplikasi Anda. Lalu, pilih Aktifkan.

     Cuplikan layar yang memperlihatkan tab Application Insights dengan Aktifkan dipilih.

  2. Buat sumber daya baru atau pilih sumber daya Application Insights yang ada untuk aplikasi ini.

    Catatan

    Saat Anda memilih OK untuk membuat sumber daya baru, Anda akan diminta untuk Menerapkan pengaturan pemantauan. Memilih Lanjutkan menautkan sumber daya Application Insights baru Anda ke layanan aplikasi Anda. Layanan aplikasi Anda kemudian dimulai ulang.

    Cuplikan layar yang memperlihatkan menu dropdown Ubah sumber daya Anda.

  3. Setelah menentukan sumber daya mana yang akan digunakan, Anda dapat memilih bagaimana Anda ingin Application Insights mengumpulkan data per platform untuk aplikasi Anda. ASP.NET Opsi pengumpulan inti Direkomendasikan atau Dinonaktifkan.

     Cuplikan layar yang memperlihatkan bagian melengkapi aplikasi Anda.

Aktifkan pemantauan sisi klien

Pemantauan sisi klien diaktifkan secara default untuk aplikasi ASP.NET Core dengan Koleksi yang Direkomendasikan , terlepas dari apakah pengaturan APPINSIGHTS_JAVASCRIPT_ENABLED aplikasi ada.

Jika Anda ingin menonaktifkan pemantauan sisi klien:

  1. Pilih Konfigurasi>Pengaturan.

  2. Di bawah Pengaturan aplikasi, buat pengaturan Aplikasi baru dengan informasi berikut:

    • Nama: APPINSIGHTS_JAVASCRIPT_ENABLED
    • Nilai: false
  3. Simpan pengaturan. Mulai ulang aplikasi.

Mengotomatiskan pemantauan

Untuk mengaktifkan pengumpulan telemetri dengan Application Insights, hanya pengaturan aplikasi yang harus diatur.

Cuplikan layar yang memperlihatkan pengaturan aplikasi App Service dengan pengaturan Application Insights.

Definisi pengaturan aplikasi

Nama pengaturan aplikasi Definisi Nilai
ApplicationInsightsAgent_EXTENSION_VERSION Ekstensi utama, yang mengontrol pemantauan runtime. ~2 untuk Windows atau ~3 untuk Linux
XDT_MicrosoftApplicationInsights_Mode Dalam mode default, hanya fitur penting yang diaktifkan untuk memastikan kinerja optimal. disabled atau recommended.
XDT_MicrosoftApplicationInsights_PreemptSdk Hanya untuk ASP.NET Core. Mengaktifkan Interop (interopasi) dengan Application Insights SDK. Memuat ekstensi berdampingan dengan SDK dan menggunakannya untuk mengirim telemetri. (Menonaktifkan Application Insights SDK.) 1

Pengaturan aplikasi App Service dengan Azure Resource Manager

Pengaturan aplikasi untuk Azure App Service dapat dikelola dan dikonfigurasi dengan templat Azure Resource Manager. Anda dapat menggunakan metode ini saat menyebarkan sumber daya App Service baru dengan otomatisasi Resource Manager atau mengubah pengaturan sumber daya yang ada.

Struktur dasar pengaturan aplikasi JSON untuk sumber daya App Service:

      "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 Resource Manager dengan pengaturan aplikasi yang dikonfigurasi untuk Application Insights, templat ini dapat membantu. Secara khusus, lihat bagian yang dimulai pada baris 238.

Untuk membuat templat Resource Manager dengan pengaturan Application Insights default, 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 pilih Unduh templat untuk otomatisasi.

    Cuplikan layar yang memperlihatkan menu pembuatan aplikasi web App Service.

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

    Cuplikan layar yang memperlihatkan templat aplikasi web App Service.

Dalam sampel berikut, ganti semua instans AppMonitoredSite dengan nama situs Anda:

Catatan

Jika menggunakan Windows, atur ApplicationInsightsAgent_EXTENSION_VERSION ke ~2. Jika menggunakan Linux, atur ApplicationInsightsAgent_EXTENSION_VERSION ke ~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"
}

Mengaktifkan melalui PowerShell

Untuk mengaktifkan pemantauan aplikasi melalui PowerShell, hanya pengaturan aplikasi yang mendasar yang harus diubah. Sampel berikut memungkinkan pemantauan aplikasi untuk situs web yang disebut AppMonitoredSite dalam grup AppMonitoredRGsumber daya . Ini mengonfigurasi data yang akan dikirim ke 012345678-abcd-ef01-2345-6789abcd kunci instrumentasi.

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Catatan

Jika menggunakan Windows, atur ApplicationInsightsAgent_EXTENSION_VERSION ke ~2. Jika menggunakan Linux, atur ApplicationInsightsAgent_EXTENSION_VERSION ke ~3.

$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

Meningkatkan ekstensi/agen pemantauan - .NET

Untuk meningkatkan ekstensi/agen pemantauan, ikuti langkah-langkah di bagian berikutnya.

Tingkatkan dari versi 2.8.9 dan yang lebih tinggi

Pemutakhiran dari versi 2.8.9 terjadi secara otomatis, tanpa tindakan tambahan. Bit pemantauan baru dikirimkan di latar belakang ke layanan aplikasi target, dan saat aplikasi dimulai ulang, bit tersebut akan diambil.

Untuk memeriksa versi ekstensi yang Anda jalankan, buka https://yoursitename.scm.azurewebsites.net/ApplicationInsights.

Cuplikan layar yang memperlihatkan jalur URL untuk memeriksa versi ekstensi yang Anda jalankan.

Upgrade dari versi 1.0.0 - 2.6.5

Dimulai dengan versi 2.8.9, ekstensi situs yang telah diinstal sebelumnya digunakan. Jika Anda menggunakan versi yang lebih lama, Anda dapat memperbarui melalui salah satu dari dua cara:

  • Tingkatkan dengan mengaktifkan melalui portal: Bahkan jika Anda memiliki ekstensi Application Insights untuk App Service yang terinstal, UI hanya menampilkan tombol Aktifkan . Di balik layar, ekstensi situs privat lama akan dihapus.

  • Mutakhirkan melalui PowerShell:

    1. Atur pengaturan aplikasi untuk mengaktifkan ekstensi ApplicationInsightsAgentsitus yang telah diinstal sebelumnya. Untuk informasi selengkapnya, lihat Mengaktifkan melalui PowerShell.
    2. Hapus ekstensi situs privat bernama ekstensi Application Insights secara manual untuk Azure App Service.

Jika peningkatan dilakukan dari versi sebelum 2.5.1, periksa apakah ApplicationInsights DLL dihapus dari folder bin aplikasi. Untuk informasi selengkapnya, lihat Langkah-langkah pemecahan masalah.

Pemecahan Masalah

Catatan

Saat Anda membuat aplikasi web dengan ASP.NET Core runtime di App Service, aplikasi tersebut menyebarkan satu halaman HTML statis sebagai situs web pemula. Kami tidak menyarankan Anda memecahkan masalah dengan templat default. Sebarkan aplikasi sebelum Anda memecahkan masalah.

Berikut ini adalah panduan pemecahan masalah langkah demi langkah kami untuk pemantauan berbasis ekstensi/agen untuk aplikasi berbasis ASP.NET Core yang berjalan di App Service.

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

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

    Cuplikan layar yang memperlihatkan tautan di atas halaman hasil.

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

      Jika tidak berjalan, ikuti instruksi di bagian Mengaktifkan pemantauan Application Insights.

    • Konfirmasikan bahwa sumber status ada dan terlihat seperti Status source D:\home\LogFiles\ApplicationInsights\status\status_RD0003FF0317B6_4248_1.json.

      Jika nilai serupa tidak ada, itu berarti aplikasi saat ini tidak berjalan atau tidak didukung. Untuk memastikan bahwa aplikasi berjalan, coba kunjungi url aplikasi/titik akhir aplikasi secara manual, yang akan memungkinkan informasi runtime tersedia.

    • Konfirmasikan bahwa IKeyExists adalah True. Jika False, tambahkan APPINSIGHTS_INSTRUMENTATIONKEY dan APPLICATIONINSIGHTS_CONNECTION_STRING dengan panduan kunci GUID ke pengaturan aplikasi Anda.

    • Jika aplikasi Anda mengacu pada paket Application Insights apa pun, mengaktifkan integrasi App Service mungkin tidak berlaku dan data mungkin tidak muncul di Application Insights. Contohnya adalah jika sebelumnya Anda telah melengkapi, atau mencoba melengkapi, aplikasi Anda dengan ASP.NET Core SDK. Untuk memperbaiki masalah ini, di portal, aktifkan Interop dengan Application Insights SDK. Anda akan mulai melihat data di Application Insights.

      Penting

      Fungsionalitas ini dalam pratinjau.

       Cuplikan layar yang memperlihatkan pengaturan interop diaktifkan.

      Data sekarang akan dikirim dengan menggunakan pendekatan tanpa kode, bahkan jika Application Insights SDK awalnya digunakan atau dicoba untuk digunakan.

      Penting

      Jika aplikasi menggunakan Application Insights SDK untuk mengirim telemetri apa pun, telemetri akan dinonaktifkan. Dengan kata lain, telemetri kustom (misalnya, metode apa pun Track*() ) dan pengaturan kustom (seperti pengambilan sampel) akan dinonaktifkan.

Situs web default yang diterapkan dengan aplikasi web tidak mendukung pemantauan sisi klien otomatis

Saat Anda membuat aplikasi web dengan runtime ASP.NET Core di App Service, aplikasi ini menyebarkan satu halaman HTML statis sebagai situs web pemula. Halaman web statis juga memuat ASP. Bagian web yang dikelola NET di IIS. Perilaku ini memungkinkan pengujian pemantauan sisi server tanpa kode tetapi tidak mendukung pemantauan sisi klien otomatis.

Jika Anda ingin menguji server tanpa kode dan pemantauan sisi klien untuk ASP.NET Core di aplikasi web App Service, kami sarankan Anda mengikuti panduan resmi untuk membuat aplikasi web ASP.NET Core. Kemudian gunakan instruksi dalam artikel saat ini untuk mengaktifkan pemantauan.

Apa perbedaan antara metrik standar dari metrik Application Insights vs. Azure App Service?

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

Durasi untuk serverresponsetime dihitung oleh Application Insights tidak selalu cocok dengan waktu respons server yang diamati oleh Web Apps. Perilaku ini karena Application Insights hanya menghitung durasi ketika permintaan benar-benar mencapai aplikasi pengguna. Jika permintaan macet atau diantrekan di WebServer, waktu tunggu disertakan dalam metrik Web Apps tetapi tidak dalam metrik Application Insights.

Menguji konektivitas antara host aplikasi Anda dan layanan penyerapan

Application Insights SDK dan agen mengirim telemetri untuk diserap sebagai panggilan REST ke titik akhir penyerapan kami. Anda dapat menguji konektivitas dari server web atau komputer host aplikasi Anda ke titik akhir layanan penyerapan dengan menggunakan klien REST mentah dari PowerShell atau perintah curl. Lihat Memecahkan masalah telemetri aplikasi yang hilang di Azure Monitor Application Insights.

Situs PHP dan WordPress tidak didukung

Situs PHP dan WordPress tidak didukung. Saat ini tidak ada SDK/agen yang didukung secara resmi untuk pemantauan beban kerja dari sisi server. Untuk melengkapi transaksi sisi klien secara manual di situs PHP atau WordPress dengan menambahkan JavaScript sisi klien ke halaman web Anda, gunakan JavaScript SDK.

Tabel berikut ini memberikan penjelasan tentang apa arti nilai-nilai ini, penyebab mendasarnya, dan perbaikan yang direkomendasikan.

Nilai masalah Penjelasan Perbaikan
AppAlreadyInstrumented:true Nilai ini menunjukkan bahwa ekstensi mendeteksi bahwa beberapa aspek SDK sudah ada dalam aplikasi dan akan mundur. Ini bisa karena referensi ke Microsoft.ApplicationInsights.AspNetCore atau Microsoft.ApplicationInsights. Hapus referensi. Beberapa referensi ini ditambahkan secara default dari templat Visual Studio tertentu. Versi lama referensi Microsoft.ApplicationInsightsVisual Studio .
AppAlreadyInstrumented:true Nilai ini juga dapat disebabkan oleh adanya Microsoft.ApplicationsInsights DLL di folder aplikasi dari penyebaran sebelumnya. Bersihkan folder aplikasi untuk memastikan bahwa DLL ini dihapus. Periksa direktori bin aplikasi lokal Anda dan direktori wwwroot di App Service. (Untuk memeriksa direktori wwwroot aplikasi web App Service Anda, pilih Konsol Debug Advanced Tools (Kudu) >CMD>home\site\wwwroot).>
IKeyExists:false Nilai ini menunjukkan bahwa kunci instrumentasi tidak ada di pengaturan APPINSIGHTS_INSTRUMENTATIONKEYaplikasi . Kemungkinan penyebabnya termasuk menghapus nilai secara tidak sengaja atau lupa mengatur nilai dalam skrip otomatisasi. Pastikan pengaturan ada di pengaturan App Service.

Catatan rilis

Untuk pembaruan terbaru dan perbaikan bug, lihat Catatan rilis.

Langkah berikutnya