Memecahkan masalah Profiler Application Insights untuk .NET
Artikel ini menyajikan langkah-langkah pemecahan masalah dan informasi untuk memungkinkan Anda menggunakan Application Insights Profiler untuk .NET.
Apakah Anda menggunakan titik akhir .NET Profiler yang sesuai?
Saat ini, satu-satunya wilayah yang memerlukan modifikasi titik akhir adalah Azure Government dan Microsoft Azure yang dioperasikan oleh 21Vianet.
Pengaturan aplikasi | Cloud Pemerintah AS | Cloud Tiongkok |
---|---|---|
ApplicationInsightsProfilerEndpoint | https://profiler.monitor.azure.us |
https://profiler.monitor.azure.cn |
ApplicationInsightsEndpoint | https://dc.applicationinsights.us |
https://dc.applicationinsights.azure.cn |
Apakah aplikasi Anda berjalan pada versi yang tepat?
Profiler didukung pada .NET Framework lebih lambat dari 4.6.2.
Jika aplikasi web Anda adalah aplikasi ASP.NET Core, itu harus berjalan pada runtime ASP.NET Core terbaru yang didukung.
Apakah Anda menggunakan paket layanan Azure yang tepat?
Profiler untuk .NET saat ini tidak didukung pada paket layanan aplikasi gratis atau bersama. Tingkatkan ke salah satu paket dasar agar Profiler mulai bekerja.
Catatan
Paket konsumsi Azure Functions tidak didukung. Lihat Membuat profil aplikasi Azure Functions langsung dengan Application Insights.
Apakah Anda mencari data .NET Profiler dalam jangka waktu yang tepat?
Jika data yang coba Anda lihat lebih lama dari dua minggu, coba batasi filter waktu Anda dan coba lagi. Jejak dihapus setelah tujuh hari.
Apakah Anda mengetahui laju pengambilan sampel dan overhead .NET Profiler?
.NET Profiler secara acak berjalan dua menit per jam pada setiap aplikasi hosting komputer virtual dengan Profiler diaktifkan.
Catatan
Ketika Profiler secara aktif menjalankan dan mengumpulkan jejak, profiler biasanya menambahkan antara 5% hingga 15% dari CPU dan overhead memori ke server Anda.
Tidak ada biaya tambahan untuk menyimpan data yang diambil oleh Profiler. Data dihapus secara otomatis setelah 15 hari.
Bisakah Anda mengakses gateway?
Periksa apakah firewall atau proksi tidak memblokir akses Anda ke halaman web ini.
Apakah Anda melihat batas waktu atau apakah Anda perlu memeriksa untuk melihat apakah .NET Profiler berjalan?
Data pembuatan profil hanya jika dapat dilampirkan ke permintaan yang terjadi saat Profiler sedang berjalan. .NET Profiler mengumpulkan data selama dua menit setiap jam. Anda juga dapat memicu Profiler dengan memulai sesi pembuatan profil.
Profiler menulis pesan pelacakan dan peristiwa kustom ke sumber daya Application Insights Anda. Anda dapat menggunakan peristiwa ini untuk melihat cara Profiler berjalan.
Cari pesan pelacakan dan peristiwa kustom yang dikirim oleh .NET Profiler ke sumber daya Application Insights Anda.
Di sumber daya Application Insights Anda, pilih Cari dari menu atas.
Gunakan string pencarian berikut untuk menemukan data yang relevan:
stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
Hasil pencarian sebelumnya mencakup dua contoh pencarian dari dua sumber daya AI:
Jika aplikasi tidak menerima permintaan saat Profiler berjalan, pesan menjelaskan bahwa unggahan dibatalkan karena tidak ada aktivitas.
Di sebelah kanan, Profiler memulai dan mengirim peristiwa kustom ketika mendeteksi permintaan yang terjadi saat Profiler sedang berjalan. Jika peristiwa kustom
ServiceProfilerSample
ditampilkan, itu berarti profil telah diambil dan tersedia di panel Performa Application Insights.
Jika tidak ada rekaman yang ditampilkan, Profiler tidak berjalan atau membutuhkan waktu terlalu lama untuk merespons. Pastikan Profiler diaktifkan di layanan Azure Anda.
Profiler .NET aktif, tetapi tidak ada jejak yang diambil
Bahkan ketika Profiler diaktifkan, profiler mungkin tidak menangkap atau mengunggah jejak, terutama dalam situasi ini:
Tidak ada permintaan masuk ke aplikasi Anda:
Anda dapat memanggil aplikasi anda secara manual atau membuat uji ketersediaan, atau uji beban.Tidak ada telemetri masuk yang diakui oleh Application Insights:
- Jika ada lalu lintas yang masuk ke aplikasi Anda: validasi bahwa ada permintaan masuk yang ditampilkan di Metrik Langsung Application Insights.
Incoming Requests
Jika bagan kosong (tidak ada data atau menunjukkan nol): pecahkan masalah Application Insights.- Jika Anda menghosting aplikasi .NET Anda di Azure App Service: coba langkah-langkah pemecahan masalah App Service .NET.
Pengaturan profiler untuk Pengambilan Sampel dinonaktifkan:
Jika masih tidak ada jejak profiler yang tersedia, periksa pengaturan Pengambilan Sampel Profiler.- Buka bilah Performa Application Insights>.
- Klik Profiler.
- Klik tombol Pemicu .
- Di Pengaturan Pemicu, pastikan tombol Pengambilan Sampel aktif.
Masih tidak ada jejak yang diunggah?
Buat permintaan dukungan, atau minta dukungan komunitas Azure. Anda juga dapat mengirimkan umpan balik produk ke komunitas umpan balik Azure.
Penghitungan ganda dalam alur paralel
Ketika dua atau beberapa utas paralel dikaitkan dengan permintaan, total metrik waktu di penampil tumpukan mungkin lebih dari durasi permintaan. Dalam hal ini, total waktu alur lebih dari waktu berlalu yang sebenarnya.
Misalnya, satu utas mungkin menunggu utas yang lain untuk diselesaikan. Penampil mencoba mendeteksi situasi ini dan menghilangkan waktu tunggu yang tidak menarik. Dalam melakukannya, itu errr di sisi menampilkan terlalu banyak informasi daripada menghilangkan apa yang mungkin menjadi informasi penting.
Saat Anda melihat alur paralel di jejak Anda, tentukan alur mana yang menunggu sehingga Anda dapat mengidentifikasi hot path untuk permintaan tersebut. Biasanya, utas yang dengan cepat masuk ke status tunggu sedang menunggu di utas lainnya. Konsentrasi pada utas lain dan abaikan waktu di utas tunggu.
Memecahkan masalah .NET Profiler pada layanan Azure spesifik Anda
Bagian berikut memancarkan Anda melalui langkah-langkah pemecahan masalah untuk menggunakan Profiler di Azure App Service atau Azure Cloud Services.
Azure App Service
Agar .NET Profiler berfungsi dengan baik, pastikan:
Aplikasi web Anda mengaktifkan Application Insights dengan pengaturan yang tepat.
Webjob ApplicationInsightsProfiler3 harus dijalankan. Untuk memeriksa webjob:
Buka Kudu. Di portal Microsoft Azure:
- Di instans App Service Anda, pilih Alat Tingkat Lanjut di panel kiri.
- Pilih Buka.
Di menu atas, pilih dasbor Alat>WebJobs. Panel WebJobs terbuka.
Jika ApplicationInsightsProfiler3 tidak muncul, mulai ulang aplikasi App Service Anda.
Untuk melihat detail WebJob, termasuk log, pilih tautan ApplicationInsightsProfiler3 . Panel Detail WebJob Berkelanjutan terbuka.
Jika .NET Profiler masih tidak berfungsi untuk Anda, unduh log dan kirimkan tiket dukungan Azure.
Periksa halaman status ekstensi situs Layanan Diagnostik
Jika Anda mengaktifkan .NET Profiler melalui panel Application Insights di portal, itu dikelola oleh ekstensi situs Layanan Diagnostik. Anda dapat memeriksa halaman status ekstensi ini dengan masuk ke https://{site-name}.scm.azurewebsites.net/DiagnosticServices
.
Catatan
Domain tautan halaman status bervariasi tergantung pada cloud. Domain ini sama dengan situs manajemen Kudu untuk App Service.
Halaman status menunjukkan status penginstalan agen .NET Profiler dan Snapshot Debugger . Jika ada kesalahan yang tidak terduga, kesalahan tersebut muncul bersama dengan langkah-langkah tentang cara memperbaikinya.
Anda dapat menggunakan situs manajemen Kudu untuk App Service untuk mendapatkan URL dasar halaman status ini:
- Buka aplikasi App Service Anda di portal Azure.
- Pilih Alat Tingkat Lanjut.
- Pilih Buka.
- Pada situs manajemen Kudu:
- Tambahkan
/DiagnosticServices
ke URL. - Pilih Masukkan.
- Tambahkan
Ini berakhir seperti https://<kudu-url>/DiagnosticServices
.
Halaman status tampak mirip dengan contoh berikut.
Catatan
Penginstalan tanpa kode Application Insights Profiler untuk .NET mengikuti kebijakan dukungan .NET Core. Untuk informasi selengkapnya tentang runtime yang didukung, lihat kebijakan dukungan .NET Core.
Penginstalan manual
Saat Anda mengonfigurasi .NET Profiler, pembaruan dilakukan pada pengaturan aplikasi web. Jika perlu, Anda dapat menerapkan pembaruan secara manual.
Terlalu banyak sesi pembuatan profil yang aktif
Di Azure App Service, hanya ada batas satu sesi pembuatan profil pada satu waktu. Batas ini diberlakukan pada tingkat VM di semua aplikasi dan slot penyebaran yang berjalan dalam Paket App Service. Batas ini berlaku sama untuk sesi pembuatan profil yang dimulai melalui Diagnosis dan selesaikan masalah, Kudu, dan Application Insights Profiler untuk .NET.
Jika .NET Profiler mencoba memulai sesi ketika sesi lain sudah berjalan, kesalahan dicatat di Log Aplikasi dan juga log WebJob berkelanjutan untuk ApplicationInsightsProfiler3
.
Anda mungkin melihat salah satu pesan berikut di log:
Microsoft.ServiceProfiler.Exceptions.TooManyETWSessionException
Error: StartProfiler failed. Details: System.Runtime.InteropServices.COMException (0xE111005E): Exception from HRESULT: 0xE111005E
Kode 0xE111005E
kesalahan menunjukkan bahwa sesi pembuatan profil tidak dapat dimulai karena sesi lain sudah berjalan.
Untuk menghindari kesalahan, pindahkan beberapa aplikasi web ke Paket App Service yang berbeda atau nonaktifkan Profiler pada beberapa aplikasi. Jika Anda menggunakan slot penyebaran, pastikan untuk menghentikan slot yang tidak digunakan.
Kesalahan penyebaran: Direktori Tidak Kosong 'D:\home\site\wwwroot\App_Data\jobs'
Jika Anda menyebarkan ulang aplikasi web ke sumber daya Web Apps dengan .NET Profiler diaktifkan, Anda mungkin melihat pesan berikut:
"Direktori Tidak Kosong 'D:\home\site\wwwroot\App_Data\jobs'"
Kesalahan ini terjadi jika Anda menjalankan Web Deploy dari skrip atau dari Azure Pipelines. Atasi dengan menambahkan parameter penyebaran berikut ke tugas Web Deploy:
-skip:Directory='.*\\App_Data\\jobs\\continuous\\ApplicationInsightsProfiler.*' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs\\continuous$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data\\jobs$' -skip:skipAction=Delete,objectname='dirPath',absolutepath='.*\\App_Data$'
Parameter ini menghapus folder yang digunakan oleh Application Insights Profiler untuk .NET dan membuka blokir proses penyebaran ulang. Mereka tidak memengaruhi instans Profiler yang saat ini sedang berjalan.
Apakah Application Insights Profiler untuk .NET berjalan?
Profiler berjalan sebagai WebJob berkelanjutan di aplikasi web. Anda dapat membuka sumber daya aplikasi web di portal Microsoft Azure. Di panel WebJobs, periksa status ApplicationInsightsProfiler. Jika tidak berjalan, buka Log untuk mendapatkan informasi selengkapnya.
VM dan Azure Cloud Services
Untuk melihat apakah .NET Profiler dikonfigurasi dengan benar oleh Azure Diagnostics:
Verifikasi bahwa konten konfigurasi Azure Diagnostics yang disebarkan adalah yang Anda harapkan.
Pastikan Azure Diagnostics meneruskan iKey yang tepat pada baris perintah Profiler.
Periksa file log Profiler untuk melihat apakah .NET Profiler berjalan tetapi mengembalikan kesalahan.
Untuk memeriksa pengaturan yang digunakan untuk mengonfigurasi Azure Diagnostics:
Masuk ke mesin virtual (VM).
Buka file log di lokasi ini. Versi plug-in mungkin lebih baru di komputer Anda.
Untuk VM:
c:\WindowsAzure\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
Untuk Azure Cloud Services:
c:\logs\Plugins\Microsoft.Azure.Diagnostics.PaaSDiagnostics\1.11.3.12\DiagnosticsPlugin.log
Dalam file, Anda dapat mencari string
WadCfg
untuk menemukan pengaturan yang diteruskan ke VM untuk mengonfigurasi Azure Diagnostics.Periksa untuk melihat apakah iKey yang digunakan oleh sink .NET Profiler sudah benar.
Periksa baris perintah yang memulai Profiler. Argumen baris perintah ada dalam file berikut (drive bisa atau
c:
d:
dan direktori mungkin tersembunyi):Untuk VM:
C:\ProgramData\ApplicationInsightsProfiler\config.json
Untuk Azure Cloud Services:
D:\ProgramData\ApplicationInsightsProfiler\config.json
Pastikan bahwa iKey pada baris perintah Profiler sudah benar.
Dengan menggunakan jalur yang ditemukan dalam file config.json sebelumnya, periksa file log Profiler, yang disebut
BootstrapN.log
. Laporan ini menampilkan:- Informasi debug yang menunjukkan pengaturan yang digunakan Profiler.
- Status dan pesan kesalahan dari Profiler.
Anda dapat menemukan file-nya:
Untuk VM:
C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
Untuk Azure Cloud Services:
C:\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics\1.17.0.6\ApplicationInsightsProfiler
Jika .NET Profiler berjalan saat aplikasi Anda menerima permintaan, pesan berikut muncul: "Aktivitas terdeteksi dari iKey."
Saat jejak sedang diunggah, pesan berikut muncul: "Mulai unggah jejak."
Mengedit proksi jaringan atau aturan firewall
Jika aplikasi Anda terhubung ke internet melalui proksi atau firewall, Anda mungkin perlu memperbarui aturan untuk berkomunikasi dengan .NET Profiler.
IP yang digunakan oleh Application Insights Profiler untuk .NET disertakan dalam tag layanan Azure Monitor. Untuk informasi selengkapnya, lihat Dokumentasi tag layanan.
Dukungan
Jika Anda masih memerlukan bantuan, kirimkan tiket dukungan di portal Azure. Pastikan untuk menyertakan ID korelasi dari pesan kesalahan.