Memecahkan masalah saat mengaktifkan Application Insights Snapshot Debugger atau melihat rekam jepret
Jika Anda mengaktifkan Application Insights Snapshot Debugger untuk aplikasi, tetapi tidak melihat rekam jepret untuk pengecualian, Anda dapat menggunakan petunjuk ini untuk memecahkan masalah.
Mungkin ada banyak alasan berbeda mengapa rekam jepret tidak dibuat. Anda dapat memulai dengan menjalankan pemeriksaan kesehatan rekam jepret untuk mengidentifikasi beberapa kemungkinan penyebab umum.
Skenario Tidak Didukung
Di bawah ini Anda dapat menemukan skenario tempat Pengumpul Snapshot tidak didukung:
Skenario | Efek Samping | Rekomendasi |
---|---|---|
Saat menggunakan Snapshot Pengumpul SDK di aplikasi Anda secara langsung (.csproj) dan Anda telah mengaktifkan opsi lanjutan "Interop". | SDK Application Insights lokal (termasuk telemetri Pengumpul Snapshot) akan hilang, oleh karena itu, tidak ada Snapshot yang akan tersedia. Aplikasi Anda bisa crash saat mulai dengan System.ArgumentException: telemetryProcessorTypedoes not implement ITelemetryProcessor Untuk informasi selengkapnya tentang fitur Application Insights "Interop", lihat dokumentasi. |
Jika Anda menggunakan opsi lanjutan "Interop", gunakan injeksi Pengumpul Snapshot tanpa kode (diaktifkan melalui portal Microsoft Azure UX) |
Pastikan Anda menggunakan Titik Akhir Snapshot Debugger yang sesuai
Saat ini satu-satunya wilayah yang memerlukan modifikasi titik akhir adalah Azure Government dan Microsoft Azure yang dioperasikan oleh 21Vianet.
Untuk App Service dan aplikasi yang menggunakan Application Insights SDK, Anda harus memperbarui string koneksi menggunakan penimpaan yang didukung untuk Snapshot Debugger seperti yang didefinisikan di bawah:
Properti String Koneksi | Cloud Pemerintah AS | Cloud Tiongkok |
---|---|---|
SnapshotEndpoint | https://snapshot.monitor.azure.us |
https://snapshot.monitor.azure.cn |
Untuk informasi selengkapnya tentang penimpaan koneksi lainnya, lihat dokumentasi Application Insights.
Untuk Aplikasi Fungsi, Anda harus memperbarui host.json
menggunakan penimpaan yang didukung di bawah:
Properti | Cloud Pemerintah AS | Cloud Tiongkok |
---|---|---|
AgentEndpoint | https://snapshot.monitor.azure.us |
https://snapshot.monitor.azure.cn |
Di bawah ini adalah contoh host.json
yang diperbarui dengan titik akhir agen Cloud Pemerintan AS:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingExcludedTypes": "Request",
"samplingSettings": {
"isEnabled": true
},
"snapshotConfiguration": {
"isEnabled": true,
"agentEndpoint": "https://snapshot.monitor.azure.us"
}
}
}
}
Menggunakan pemeriksaan kesehatan rekam jepret
Beberapa masalah umum mengakibatkan Open Debug Snapshot tidak muncul. Menggunakan Snapshot Collector yang sudah kedaluwarsa, misalnya; mencapai batas pengunggahan harian; atau mungkin rekam jepret hanya perlu waktu lama untuk diunggah. Gunakan Snapshot Health Check untuk memecahkan masalah umum.
Ada tautan di panel pengecualian tampilan jejak ujung ke ujung yang membawa Anda ke Snapshot Health Check.
Antarmuka interaktif seperti obrolan mencari masalah umum dan memandu Anda untuk memperbaikinya.
Jika ini tidak menyelesaikan masalah, lihat langkah-langkah pemecahan masalah manual berikut.
Memverifikasi kunci instrumentasi
Pastikan Anda menggunakan kunci instrumentasi yang benar di aplikasi yang diterbitkan. Biasanya, kunci instrumentasi dibaca dari file ApplicationInsights.config Anda. Verifikasi nilainya sama dengan kunci instrumentasi untuk sumber daya Application Insights yang Anda lihat di portal.
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.
Memeriksa pengaturan klien TLS/SSL (ASP.NET)
Jika Anda memiliki aplikasi ASP.NET yang dihosting di Azure App Service atau di IIS pada mesin virtual, aplikasi Anda bisa gagal tersambung ke layanan Snapshot Debugger karena protokol keamanan SSL yang hilang.
Titik akhir Snapshot Debugger memerlukan TLS versi 1.2. Set protokol keamanan SSL adalah salah satu kekhasan yang diaktifkan oleh nilai httpRuntime targetFramework
di bagian system.web
dari web.config
.
Jika httpRuntime targetFramework
adalah 4.5.2 atau lebih rendah, maka TLS 1.2 tidak disertakan secara default.
Catatan
Nilai httpRuntime targetFramework
tidak independen dari kerangka kerja target yang digunakan saat membuat aplikasi Anda.
Untuk memeriksa pengaturan, buka file web.config Anda dan temukan bagian system.web. Pastikan bahwa targetFramework
untuk httpRuntime
diatur ke 4.6 atau lebih.
<system.web>
...
<httpRuntime targetFramework="4.7.2" />
...
</system.web>
Catatan
Memodifikasi nilai httpRuntime targetFramework
mengubah kekhasan runtime yang diterapkan ke aplikasi Anda dan dapat menyebabkan perubahan perilaku halus lainnya. Pastikan untuk menguji aplikasi Anda secara menyeluruh setelah melakukan perubahan ini. Untuk daftar lengkap perubahan kompatibilitas, lihat Perubahan penargetan ulang.
Catatan
Jika targetFramework
adalah 4.7 atau lebih tinggi, Windows menentukan protokol yang tersedia. Di Azure App Service, TLS 1.2 tersedia. Namun, jika Anda menggunakan mesin virtual sendiri, Anda mungkin perlu mengaktifkan TLS 1.2 di OS.
Skenario overhead Snapshot Debugger
Snapshot Debugger dirancang untuk digunakan di lingkungan produksi. Pengaturan default mencakup batas tarif untuk meminimalkan dampak pada aplikasi Anda.
Namun, Anda mungkin mengalami overhead CPU, memori, dan I/O kecil yang terkait dengan Snapshot Debugger, seperti dalam skenario berikut.
Saat pengecualian dilemparkan dalam aplikasi Anda:
- Membuat tanda tangan untuk jenis masalah dan memutuskan apakah akan membuat rekam jepret menambahkan overhead CPU dan memori yang sangat kecil.
- Jika de-pengoptimalan diaktifkan, ada overhead untuk jitting ulang metode yang melemparkan pengecualian. Ini akan dikeluarkan saat berikutnya metode tersebut dijalankan. Tergantung pada ukuran metode, ini bisa antara 1ms dan 100ms waktu CPU.
Jika handler pengecualian memutuskan untuk membuat rekam jepret:
Membuat rekam jepret proses membutuhkan waktu sekitar setengah detik (P50=0,3s, P90=1,2s, P95=1,9s) selama waktu tersebut, utas yang melemparkan pengecualian dijeda. Utas lain tidak diblokir.
Mengonversi rekam jepret proses menjadi minidump dan mengunggahnya ke Application Insights membutuhkan waktu beberapa menit.
- Konversi: P50=63s, P90=187s, P95=275s.
- Unggah: P50=31s, P90=75s, P95=98s.
Ini dilakukan di Snapshot Uploader, yang berjalan dalam proses terpisah. Proses Snapshot Uploader berjalan pada prioritas CPU normal di bawah ini dan menggunakan I/O berprioritas rendah.
Minidump pertama kali ditulis ke disk dan jumlah disk yang diberi ruang kira-kira sama dengan set kerja proses asli. Menulis minidump dapat menginduksi kesalahan halaman saat memori dibaca.
Minidump dikompresi selama unggahan, yang menggunakan CPU dan memori dalam proses Snapshot Uploader. Overhead CPU, memori, dan disk untuk ini sebanding dengan ukuran rekam jepret proses. Snapshot Uploader memproses rekam jepret secara serial.
Ketika TrackException
dipanggil:
Snapshot Debugger memeriksa apakah pengecualiannya baru atau apakah rekam jepret telah dibuat untuknya. Ini menambahkan overhead CPU yang sangat kecil.
Pratinjau Versi .NET Core
Jika Anda menggunakan versi pratinjau .NET Core atau aplikasi Anda mereferensikan Application Insights SDK, secara langsung atau tidak langsung melalui perakitan dependen, ikuti petunjuk untuk Mengaktifkan Snapshot Debugger untuk lingkungan lain.
Periksa Halaman Status ekstensi situs Layanan Diagnostik
Jika Snapshot Debugger diaktifkan melalui panel Application Insights di portal, ini diaktifkan oleh ekstensi situs Layanan Diagnostik.
Catatan
Penginstalan tanpa kode Application Insights Snapshot Debugger mengikuti kebijakan dukungan.NET Core.
Untuk informasi selengkapnya tentang runtime yang didukung, lihat Kebijakan Dukungan.NET Core.
Anda dapat memeriksa Halaman Status ekstensi ini dengan masuk ke url berikut: https://{site-name}.scm.azurewebsites.net/DiagnosticServices
Catatan
Domain tautan Halaman Status akan bervariasi tergantung pada cloud. Domain ini akan sama dengan situs manajemen Kudu untuk App Service. Halaman Status ini menampilkan status penginstalan agen Profiler dan Snapshot Collector. Jika ada kesalahan yang tidak terduga, ini akan ditampilkan dan menunjukkan 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, atau cari Kudu.
- Pilih Buka.
- Setelah Anda berada di situs manajemen Kudu, di URL, tambahkan
/DiagnosticServices
berikut dan tekan enter. Ini akan berakhir seperti ini:https://<kudu-url>/DiagnosticServices
Meningkatkan ke versi terbaru paket NuGet
Berdasarkan cara Snapshot Debugger diaktifkan, lihat opsi berikut:
Jika Snapshot Debugger diaktifkan melalui panel Application Insights di portal, aplikasi Anda harus sudah menjalankan paket NuGet terbaru.
Jika Snapshot Debugger diaktifkan dengan menyertakan paket NuGet Microsoft.ApplicationInsights.SnapshotCollector, gunakan Manajer Paket NuGet Visual Studio untuk memastikan Anda menggunakan versi terbaru
Microsoft.ApplicationInsights.SnapshotCollector
.
Untuk mengetahui informasi terbaru dan perbaikan bug, lihat catatan rilis.
Memeriksa log pengunggah
Setelah snapshot dibuat, file minidump (.dmp) dibuat pada disk. Proses pengunggah terpisah membuat file minidump tersebut dan mengunggahnya, bersama dengan PDB terkait, ke penyimpanan Application Insights Debugger Snapshot. Setelah minidump berhasil diunggah, minidump dihapus dari disk. File log untuk proses pengunggah disimpan pada disk. Di lingkungan App Service, Anda dapat menemukan log ini di D:\Home\LogFiles
. Gunakan situs manajemen Kudu untuk App Service untuk menemukan file log ini.
- Buka aplikasi App Service Anda di portal Azure.
- Pilih Alat Tingkat Lanjut, atau cari Kudu.
- Pilih Buka.
- Di daftar drop-down Konsol debug, pilih CMD.
- Pilih LogFiles.
Anda akan melihat setidaknya satu file dengan nama yang dimulai dengan ekstensi Uploader_
atau SnapshotUploader_
dan .log
. Pilih ikon yang sesuai untuk mengunduh file log apa pun atau membukanya di browser.
Nama file menyertakan akhiran unik yang mengidentifikasi instans App Service. Jika instans App Service Anda dihosting di lebih dari satu komputer, ada file log terpisah untuk setiap komputer. Saat pengunggah mendeteksi file minidump baru, file tersebut direkam dalam file log. Berikut adalah contoh rekam jepret dan pengunggahan yang berhasil:
SnapshotUploader.exe Information: 0 : Received Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Creating minidump from Fork request ID 139e411a23934dc0b9ea08a626db16c5 from process 6368 (Low pri)
DateTime=2018-03-09T01:42:41.8571711Z
SnapshotUploader.exe Information: 0 : Dump placeholder file created: 139e411a23934dc0b9ea08a626db16c5.dm_
DateTime=2018-03-09T01:42:41.8728496Z
SnapshotUploader.exe Information: 0 : Dump available 139e411a23934dc0b9ea08a626db16c5.dmp
DateTime=2018-03-09T01:42:45.7525022Z
SnapshotUploader.exe Information: 0 : Successfully wrote minidump to D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Uploading D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp, 214.42 MB (uncompressed)
DateTime=2018-03-09T01:42:45.7681360Z
SnapshotUploader.exe Information: 0 : Upload successful. Compressed size 86.56 MB
DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Extracting PDB info from D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp.
DateTime=2018-03-09T01:42:59.6184651Z
SnapshotUploader.exe Information: 0 : Matched 2 PDB(s) with local files.
DateTime=2018-03-09T01:42:59.6809606Z
SnapshotUploader.exe Information: 0 : Stamp does not want any of our matched PDBs.
DateTime=2018-03-09T01:42:59.8059929Z
SnapshotUploader.exe Information: 0 : Deleted D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\139e411a23934dc0b9ea08a626db16c5.dmp
DateTime=2018-03-09T01:42:59.8530649Z
Catatan
Contoh di atas adalah dari versi 1.2.0 paket NuGet Microsoft.ApplicationInsights.SnapshotCollector
. Dalam versi sebelumnya, proses pengunggah disebut MinidumpUploader.exe
dan log kurang terperinci.
Dalam contoh sebelumnya, kunci instrumentasi adalah c12a605e73c44346a984e00000000000
. Nilai ini harus sesuai dengan kunci instrumentasi untuk aplikasi Anda.
Minidump dikaitkan dengan rekam jepret dengan 139e411a23934dc0b9ea08a626db16c5
ID. Anda dapat menggunakan ID ini nanti untuk menemukan data pengecualian terkait di Application Insights Analytics.
Pengunggah memindai PDF baru sekitar 15 menit sekali. Berikut contohnya:
SnapshotUploader.exe Information: 0 : PDB rescan requested.
DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Scanning D:\home\site\wwwroot for local PDBs.
DateTime=2018-03-09T01:47:19.4457768Z
SnapshotUploader.exe Information: 0 : Local PDB scan complete. Found 2 PDB(s).
DateTime=2018-03-09T01:47:19.4614027Z
SnapshotUploader.exe Information: 0 : Deleted PDB scan marker : D:\local\Temp\Dumps\c12a605e73c44346a984e00000000000\6368.pdbscan
DateTime=2018-03-09T01:47:19.4614027Z
Untuk aplikasi yang tidak dihosting di App Service, log pengunggah berada di folder yang sama dengan minidumps: %TEMP%\Dumps\<ikey>
(yang mana <ikey>
adalah kunci instrumentasi Anda).
Pemecahan masalah Cloud Services
Di Cloud Services, folder sementara default bisa terlalu kecil untuk menyimpan file minidump, yang mengarah ke rekam jepret yang hilang.
Ruang yang dibutuhkan tergantung pada total kumpulan kerja aplikasi Anda dan jumlah rekam jepret bersamaan.
Kumpulan kerja peran web 32-bit ASP.NET biasanya antara 200 MB dan 500 MB. Izinkan setidaknya dua rekam jepret bersamaan.
Misalnya, jika aplikasi Anda menggunakan 1 GB dari total kumpulan kerja, Anda harus memastikan setidaknya ada ruang disk 2 GB untuk menyimpan rekam jepret.
Ikuti langkah-langkah ini untuk mengonfigurasi peran Cloud Service Anda dengan sumber daya lokal khusus untuk rekam jepret.
Tambahkan sumber daya lokal baru ke Cloud Services Anda dengan mengedit file definisi Cloud Services (.csdef). Contoh berikut menentukan sumber daya yang disebut
SnapshotStore
dengan ukuran 5 GB.<LocalResources> <LocalStorage name="SnapshotStore" cleanOnRoleRecycle="false" sizeInMB="5120" /> </LocalResources>
Ubah kode startup peran Anda untuk menambahkan variabel lingkungan yang menunjuk ke sumber daya lokal
SnapshotStore
. Untuk Peran Pekerja, kode harus ditambahkan ke metodeOnStart
peran Anda:public override bool OnStart() { Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath); return base.OnStart(); }
Untuk Peran Web (ASP.NET), kode harus ditambahkan ke metode
Application_Start
aplikasi web Anda:using Microsoft.WindowsAzure.ServiceRuntime; using System; namespace MyWebRoleApp { public class MyMvcApplication : System.Web.HttpApplication { protected void Application_Start() { Environment.SetEnvironmentVariable("SNAPSHOTSTORE", RoleEnvironment.GetLocalResource("SnapshotStore").RootPath); // TODO: The rest of your application startup code } } }
Perbarui file ApplicationInsights.config peran Anda untuk menimpa lokasi folder sementara yang digunakan oleh
SnapshotCollector
<TelemetryProcessors> <Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector"> <!-- Use the SnapshotStore local resource for snapshots --> <TempFolder>%SNAPSHOTSTORE%</TempFolder> <!-- Other SnapshotCollector configuration options --> </Add> </TelemetryProcessors>
Menimpa folder Salinan Bayangan
Saat dimulai, Snapshot Collector mencoba menemukan folder di disk yang cocok untuk menjalankan proses Snapshot Uploader. Folder yang dipilih dikenal sebagai folder Salin Bayangan.
Snapshot Collector memeriksa beberapa lokasi terkenal, memastikan adanya izin untuk menyalin biner Snapshot Uploader. Variabel lingkungan berikut digunakan:
- Fabric_Folder_App_Temp
- LOCALAPPDATA
- APPDATA
- TEMP
Jika folder yang cocok tidak dapat ditemukan, Snapshot Collector melaporkan kesalahan yang mengatakan "Tidak dapat menemukan folder salinan bayangan yang cocok."
Jika salinan gagal, Snapshot Collector melaporkan kesalahan ShadowCopyFailed
.
Jika pengunggah tidak dapat diluncurkan, Snapshot Collector akan melaporkan kesalahan UploaderCannotStartFromShadowCopy
. Isi pesan sering berisi System.UnauthorizedAccessException
. Kesalahan ini biasanya terjadi karena aplikasi berjalan di bawah akun dengan izin yang berkurang. Akun ini memiliki izin untuk menulis ke folder salinan bayangan, tetapi tidak memiliki izin untuk mengeksekusi kode.
Karena kesalahan ini biasanya terjadi selama startup, kesalahan biasanya akan diikuti oleh kesalahan ExceptionDuringConnect
yang mengatakan Pengunggah gagal memulai."
Untuk mengatasi kesalahan ini, Anda dapat menentukan folder salinan bayangan secara manual melalui opsi konfigurasi ShadowCopyFolder
. Misalnya, menggunakan ApplicationInsights.config:
<TelemetryProcessors>
<Add Type="Microsoft.ApplicationInsights.SnapshotCollector.SnapshotCollectorTelemetryProcessor, Microsoft.ApplicationInsights.SnapshotCollector">
<!-- Override the default shadow copy folder. -->
<ShadowCopyFolder>D:\SnapshotUploader</ShadowCopyFolder>
<!-- Other SnapshotCollector configuration options -->
</Add>
</TelemetryProcessors>
Atau, jika Anda menggunakan appsettings.json dengan aplikasi .NET Core:
{
"ApplicationInsights": {
"InstrumentationKey": "<your instrumentation key>"
},
"SnapshotCollectorConfiguration": {
"ShadowCopyFolder": "D:\\SnapshotUploader"
}
}
Menggunakan pencarian Application Insights untuk menemukan pengecualian dengan rekam jepret
Saat rekam jepret dibuat, pengecualian pelemparan ditandai dengan ID rekam jepret. ID rekam jepret tersebut disertakan sebagai properti kustom saat pengecualian dilaporkan ke Application Insights. Dengan menggunakan Cari di Application Insights, Anda dapat menemukan semua data dengan properti kustom ai.snapshot.id
.
- Telusuri ke sumber daya Application Insights Anda di portal Azure.
- Pilih Telusuri.
- Ketik
ai.snapshot.id
kotak teks Cari dan tekan Enter.
Jika pencarian ini tidak menampilkan hasil, tidak ada rekam jepret yang dilaporkan ke Application Insights dalam rentang waktu yang dipilih.
Untuk mencari ID rekam jepret tertentu dari log Pengunggah, ketik ID tersebut di kotak Pencarian. Jika Anda tidak dapat menemukan data untuk rekam jepret yang Anda tahu telah diunggah, ikuti langkah-langkah berikut:
Periksa kembali apakah Anda melihat sumber daya Application Insights yang tepat dengan memverifikasi kunci instrumentasi.
Menggunakan tanda waktu dari log Pengunggah, sesuaikan filter Rentang Waktu pencarian untuk mencakup rentang waktu tersebut.
Jika Anda masih tidak melihat pengecualian dengan ID rekam jepret tersebut, data pengecualian tidak dilaporkan ke Application Insights. Situasi ini dapat terjadi jika aplikasi Anda mengalami crash setelah mengambil rekam jepret tetapi sebelum melaporkan data pengecualian. Dalam hal ini, periksa log App Service di bawah Diagnose and solve problems
untuk melihat apakah ada mulai ulang yang tidak terduga atau pengecualian yang tidak tertangani.
Mengedit proksi jaringan atau aturan firewall
Jika aplikasi Anda tersambung ke Internet melalui proksi atau firewall, Anda mungkin perlu memperbarui aturan untuk berkomunikasi dengan layanan Snapshot Debugger.
IP yang digunakan oleh Application Insights Snapshot Debugger disertakan dalam tag layanan Azure Monitor. Untuk informasi selengkapnya, lihat Dokumentasi Tag Layanan.
Apakah ada biaya penagihan saat menggunakan rekam jepret?
Tidak ada biaya terhadap langganan Anda khusus untuk Snapshot Debugger. File rekam jepret yang dikumpulkan akan disimpan secara terpisah dari telemetri yang dikumpulkan oleh SDK Application Insights dan tidak ada biaya untuk penyerapan atau penyimpanan snapshot.