Bagikan melalui


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.

  1. Di sumber daya Application Insights Anda, pilih Cari dari menu atas.

    Cuplikan layar yang memperlihatkan pemilihan tombol Pencarian dari sumber daya Application Insights.

  2. Gunakan string pencarian berikut untuk menemukan data yang relevan:

    stopprofiler OR startprofiler OR upload OR ServiceProfilerSample
    

    Cuplikan layar yang memperlihatkan hasil pencarian dari string pencarian yang disebutkan di atas.

    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:

  1. Tidak ada permintaan masuk ke aplikasi Anda:
    Anda dapat memanggil aplikasi anda secara manual atau membuat uji ketersediaan, atau uji beban.

  2. 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.
  3. Pengaturan profiler untuk Pengambilan Sampel dinonaktifkan:
    Jika masih tidak ada jejak profiler yang tersedia, periksa pengaturan Pengambilan Sampel Profiler.

    1. Buka bilah Performa Application Insights>.
    2. Klik Profiler.
    3. Klik tombol Pemicu .
    4. Di Pengaturan Pemicu, pastikan tombol Pengambilan Sampel aktif.
  4. 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:

    1. Buka Kudu. Di portal Microsoft Azure:

      1. Di instans App Service Anda, pilih Alat Tingkat Lanjut di panel kiri.
      2. Pilih Buka.
    2. Di menu atas, pilih dasbor Alat>WebJobs. Panel WebJobs terbuka.

      Jika ApplicationInsightsProfiler3 tidak muncul, mulai ulang aplikasi App Service Anda.

      Cuplikan layar yang memperlihatkan panel WebJobs, yang menampilkan nama, status, dan runtime terakhir pekerjaan.

    3. Untuk melihat detail WebJob, termasuk log, pilih tautan ApplicationInsightsProfiler3 . Panel Detail WebJob Berkelanjutan terbuka.

      Cuplikan layar yang memperlihatkan panel Detail WebJob Berkelanjutan.

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:

  1. Buka aplikasi App Service Anda di portal Azure.
  2. Pilih Alat Tingkat Lanjut.
  3. Pilih Buka.
  4. Pada situs manajemen Kudu:
    1. Tambahkan /DiagnosticServices ke URL.
    2. Pilih Masukkan.

Ini berakhir seperti https://<kudu-url>/DiagnosticServices.

Halaman status tampak mirip dengan contoh berikut.

Cuplikan layar yang memperlihatkan halaman status Layanan Diagnostik.

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:

  1. Verifikasi bahwa konten konfigurasi Azure Diagnostics yang disebarkan adalah yang Anda harapkan.

  2. Pastikan Azure Diagnostics meneruskan iKey yang tepat pada baris perintah Profiler.

  3. Periksa file log Profiler untuk melihat apakah .NET Profiler berjalan tetapi mengembalikan kesalahan.

Untuk memeriksa pengaturan yang digunakan untuk mengonfigurasi Azure Diagnostics:

  1. Masuk ke mesin virtual (VM).

  2. 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
    
  3. Dalam file, Anda dapat mencari string WadCfg untuk menemukan pengaturan yang diteruskan ke VM untuk mengonfigurasi Azure Diagnostics.

  4. Periksa untuk melihat apakah iKey yang digunakan oleh sink .NET Profiler sudah benar.

  5. 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
    
  6. Pastikan bahwa iKey pada baris perintah Profiler sudah benar.

  7. 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
    
  8. Jika .NET Profiler berjalan saat aplikasi Anda menerima permintaan, pesan berikut muncul: "Aktivitas terdeteksi dari iKey."

  9. 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.