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 Services kini lebih mudah dari sebelumnya. Meskipun sebelumnya Anda perlu secara manual menginstrumentasi aplikasi Anda, ekstensi/agen terbaru sekarang dibangun ke dalam gambar App Service secara default. Artikel ini akan memandu Anda melalui pengaktifan pemantauan Application Insights Azure Monitor serta memberikan panduan awal untuk mengotomatiskan proses penyebaran skala besar.

Catatan

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

Mengaktifkan pemantauan instrumentasi otomatis

Penting

Hanya .NET Core LTS yang didukung untuk instrumentasi otomatis di Windows.

Catatan

Auto-instrumentasi dulu dikenal sebagai "melampirkan tanpa kode" sebelum Oktober 2021.

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

Lihat bagian mengaktifkan pemantauan di bawah ini untuk mulai menyiapkan Application Insights dengan sumber daya App Service.

Mengaktifkan pemantauan

  1. Pilih Application Insights di panel kontrol Azure untuk layanan aplikasi Anda, kemudian 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 menentukan sumber daya mana yang akan digunakan, Anda dapat memilih bagaimana Anda ingin Application Insights mengumpulkan data per platform untuk aplikasi Anda. ASP.NET Core menawarkan Koleksi yang Direkomendasikan atau Dinonaktifkan.

     Screenshot of instrument your application section.

Aktifkan pemantauan sisi klien

Pemantauan sisi klien diaktifkan secara default untuk aplikasi ASP.NET Core dengan Koleksi yang disarankan, terlepas dari adanya pengaturan aplikasi 'APPINSIGHTS_JAVASCRIPT_ENABLED' yang muncul.

Jika karena alasan tertentu Anda ingin menonaktifkan pemantauan pihak klien:

  • Pengaturan>Konfigurasi
    • Di bagian pengaturan Aplikasi, buat pengaturan aplikasi baru:

      nama: APPINSIGHTS_JAVASCRIPT_ENABLED

      Nilai: false

    • Simpan pengaturan dan Mulai ulang aplikasi Anda.

Mengotomatiskan pemantauan

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

Screenshot of App Service Application Settings with Application Insights settings.

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. Memungkinkan Interop (interoperasi) dengan Application Insights SDK. Memuat ekstensi berdampingan dengan SDK dan menggunakannya untuk mengirim telemetri (menonaktifkan Application Insights SDK). 1

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

Meningkatkan ekstensi/agen pemantauan - .NET

Tingkatkan dari versi 2.8.9 dan 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.

Screenshot of the URL path to check the version of the extension you're running.

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:

Jika pemutakhiran dilakukan dari versi sebelum 2.5.1, periksa apakah dll ApplicationInsigths dihapus dari folder bin aplikasi lihat langkah-langkah pemecahan masalah.

Pemecahan Masalah

Catatan

Saat Anda membuat aplikasi web dengan runtime ASP.NET Core di Azure App Service, aplikasi web tersebut menyebarkan satu halaman HTML statik sebagai situs web awal. Tidak disarankan untuk memecahkan masalah dengan templat default. Sebarkan aplikasi sebelum memecahkan masalah.

Di bawah ini adalah panduan pemecahan masalah langkah demi langkah kami untuk pemantauan berbasis ekstensi/agen untuk aplikasi berbasis 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.

    • 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 ke 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" dan Anda akan mulai melihat data di Application Insights.

    • Penting

      Fungsionalitas ini dalam pratinjau

       Screenshot of interop setting enabled.

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

      Penting

      Jika aplikasi menggunakan Application Insights SDK untuk mengirim telemetri apa pun, telemetri tersebut akan dinonaktifkan - dengan kata lain, telemetri kustom - jika ada, seperti misalnya metode Track*(), dan pengaturan kustom apa pun, 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 Azure App Services, aplikasi tersebut menyebarkan satu halaman HTML statis sebagai situs web pemula. Halaman web statis juga memuat komponen web ASP.NET dikelola di IIS. Perilaku ini memungkinkan pengujian pemantauan sisi server tanpa kode, tetapi tidak mendukung pemantauan dari sisi klien secara otomatis.

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

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.

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. Namun, Instrumentasi transaksi sisi klien pada situs PHP atau WordPress dengan menambahkan JavaScript sisi klien ke halaman web Anda dapat dicapai dengan menggunakan JavaScript SDK.

Tabel di bawah ini memberikan penjelasan yang lebih rinci tentang apa arti dari nilai-nilai ini, penyebab yang mendasarinya, dan perbaikan yang direkomendasikan:

Nilai Masalah Penjelasan Perbaikan
AppAlreadyInstrumented:true Nilai ini menunjukkan bahwa ekstensi mendeteksi beberapa aspek SDK sudah ada dalam Aplikasi, dan akan mundur. Hal ini dapat disebabkan oleh referensi ke Microsoft.ApplicationInsights.AspNetCore, atau Microsoft.ApplicationInsights Hapus referensi. Beberapa referensi ini ditambahkan secara default dari templat Visual Studio tertentu, dan versi lama dari referensi Visual Studio Microsoft.ApplicationInsights.
AppAlreadyInstrumented:true Nilai ini juga dapat disebabkan oleh adanya Microsoft.ApplicationsInsights dll di folder aplikasi dari penerapan sebelumnya. Bersihkan folder aplikasi untuk memastikan bahwa dll ini dihapus. Periksa direktori bin aplikasi lokal Anda, dan direktori wwwroot di App Service. (Untuk mengecek direktoriwwwroot of your apl web App Service: Advanced Tools (Kudu) > Debug konsol > CMD > home\site\wwwroot).
IKeyExists:false Nilai ini menunjukkan bahwa kunci instrumentasi tidak ada di AppSetting, APPINSIGHTS_INSTRUMENTATIONKEY. Kemungkinan penyebab: Nilai mungkin telah dihapus secara tidak sengaja, lupa untuk mengatur nilai dalam skrip otomatisasi, dll. Pastikan pengaturan ada di pengaturan App Service.

Catatan rilis

Untuk pembaruan terbaru dan perbaikan bug, lihat catatan rilis.

Langkah berikutnya