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
Pilih Application Insights di panel kontrol Azure untuk layanan aplikasi Anda, kemudian pilih Aktifkan.
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.
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.
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_ENABLEDNilai:
falseSimpan pengaturan dan Mulai ulang aplikasi Anda.
Mengotomatiskan pemantauan
Untuk mengaktifkan koleksi telemetri dengan Application Insights, hanya pengaturan Aplikasi yang perlu diatur:
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.
Otomatiskan pembuatan sumber daya Application Insights dan tautkan ke App Service yang baru dibuat.
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.
Buat sumber daya App Service baru dengan informasi aplikasi web yang Anda inginkan. Aktifkan Application Insights pada tab Pemantauan.
Pilih Tinjau +buat lalu Unduh template untuk otomatisasi di bagian bawah.
Opsi ini menghasilkan templat Azure Resource Manager terbaru dengan semua pengaturan yang diperlukan dikonfigurasi.
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.
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:
Mutakhirkan dengan mengaktifkan melalui portal. (Bahkan jika Anda memiliki ekstensi Application Insights untuk Azure App Service diinstal, UI hanya menampilkan tombol Aktifkan. Di belakang layar, ekstensi situs pribadi lama akan dihapus.)
Mutakhirkan melalui PowerShell:
- Atur pengaturan aplikasi untuk mengaktifkan ekstensi situs yang telah diinstal sebelumnya ApplicationInsightsAgent. Lihat Mengaktifkan melalui PowerShell.
- Hapus ekstensi situs pribadi bernama ekstensi Application Insights secara manual untuk Azure App Service.
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.
Periksa apakah
ApplicationInsightsAgent_EXTENSION_VERSIONpengaturan aplikasi diatur ke nilai "~2".Telusuri
https://yoursitename.scm.azurewebsites.net/ApplicationInsights.
Konfirmasikan bahwa
Application Insights Extension StatusadalahPre-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.jsonJika 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
IKeyExistsadalahtrue. Jikafalse, tambahkanAPPINSIGHTS_INSTRUMENTATIONKEYdanAPPLICATIONINSIGHTS_CONNECTION_STRINGdengan 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
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
- Jalankan profiler di aplikasi langsung Anda.
- Pantau Azure Functions dengan Application Insights.
- Aktifkan diagnostik Azure untuk dikirim ke Application Insights.
- Pantau metrik kesehatan layanan untuk memastikan layanan Anda tersedia dan responsif.
- Terima pemberitahuan peringatan setiap kali peristiwa operasional terjadi atau metrik melewati ambang batas.
- Gunakan Application Insights untuk aplikasi dan halaman web JavaScript untuk mendapatkan telemetri klien dari browser yang mengunjungi halaman web.
- Siapkan Uji web Ketersediaan untuk diberi tahu jika situs Anda sedang down.
