Bagikan melalui


Menyelidiki kegagalan, performa, dan transaksi dengan Application Insights

Application Insights mengumpulkan telemetri dari aplikasi Anda untuk membantu mendiagnosis kegagalan dan menyelidiki transaksi lambat. Ini termasuk empat alat penting:

  • Tampilan kegagalan - Melacak kesalahan, pengecualian, dan kegagalan, menawarkan wawasan yang jelas untuk pemecahan masalah yang cepat dan efektif serta peningkatan stabilitas.

  • Tampilan performa - Mengidentifikasi dan membantu mengatasi hambatan aplikasi dengan cepat dengan menampilkan waktu respons dan jumlah operasi.

  • Tampilan pencarian - Memungkinkan pengguna menemukan dan memeriksa item telemetri individual seperti tampilan halaman, pengecualian, dan peristiwa kustom.

  • Diagnostik Transaksi - Membantu mengidentifikasi masalah dalam komponen dengan cepat melalui gambaran yang menyeluruh tentang detail transaksi end-to-end.

Bersama-sama, alat-alat ini memastikan kesehatan dan efisiensi aplikasi web yang sedang berlangsung. Anda dapat menggunakannya untuk menentukan masalah atau peningkatan yang akan berdampak paling besar pada pengguna.

Untuk masuk ke tampilan Kegagalan di Application Insights, pilih grafik Permintaan gagal pada panel Gambaran Umum , atau Kegagalan di bawah kategori Selidiki di menu sumber daya.

Cuplikan layar memperlihatkan cara mencapai tampilan 'Kegagalan' di Application Insights.

Anda juga bisa masuk ke tampilan kegagalan dari Peta Aplikasi dengan memilih sumber daya, lalu Menyelidiki kegagalan dari bagian triase.

Nota

Anda dapat mengakses diagnostik transaksi melalui salah satu dari tiga fitur lainnya. Untuk informasi selengkapnya, lihat Menyelidiki telemetri.

Gambaran Umum

Tampilan Kegagalan menunjukkan daftar semua operasi gagal yang dikumpulkan untuk aplikasi Anda dengan opsi untuk menelusuri masing-masing operasi. Ini memungkinkan Anda melihat frekuensi mereka dan jumlah pengguna yang terpengaruh, untuk membantu Anda memfokuskan upaya Anda pada masalah dengan dampak tertinggi.

Cuplikan layar memperlihatkan tampilan 'Kegagalan' di Application Insights.

Nota

Selain telemetri siap pakai yang dikirim oleh Azure Monitor OpenTelemetry Distro atau JavaScript SDK, Anda dapat menambahkan dan memodifikasi telemetri (misalnya, peristiwa kustom).

Untuk informasi selengkapnya, lihat Tambahkan dan ubah Azure Monitor OpenTelemetry untuk aplikasi .NET, Java, Node.js, dan Python.

Memfilter telemetri

Filter default

Semua pengalaman memungkinkan Anda memfilter telemetri berdasarkan rentang waktu. Selain itu, setiap pengalaman dilengkapi dengan filter defaultnya sendiri:

Anda dapat memilih layanan mana (Nama Peran Cloud) atau mesin/kontainer (Instans Peran Cloud) untuk dilihat dari menu filter Peran. Tindakan ini memungkinkan Anda untuk mengisolasi masalah atau tren performa dalam bagian tertentu dari aplikasi Anda.

Untuk mempelajari cara mengatur Cloud Role Name dan Cloud Role Instance, lihat Konfigurasi Azure Monitor OpenTelemetry.

Tambahkan filter

Anda dapat memfilter kejadian berdasarkan nilai propertinya. Properti yang tersedia tergantung pada jenis acara atau telemetri yang Anda pilih. Untuk menambahkan filter:

  1. Pilih ikon Filter untuk menambahkan filter.

    Filter pil

  2. Dari daftar dropdown sebelah kiri, pilih properti.

  3. Dari daftar dropdown tengah, pilih salah satu operator berikut: =, , !=contains, atau not contains.

  4. Dari daftar dropdown kanan, pilih semua nilai properti yang ingin Anda filter.

    Nota

    Perhatikan bahwa hitungan di sebelah kanan nilai filter memperlihatkan berapa banyak kemunculan yang ada di set yang difilter saat ini.

  5. Untuk menambahkan filter lain, pilih ikon Filter lagi.

Cari telemetri

Anda dapat mencari operasi tertentu menggunakan bidang Cari untuk memfilter item... di atas daftar operasi.

Cuplikan layar yang memperlihatkan bidang 'Pencarian'.

Menggunakan data analitik

Semua data yang dikumpulkan oleh Application Insights disimpan di Analitik Log. Ini menyediakan bahasa kueri yang kaya untuk menganalisis permintaan yang menghasilkan pengecualian yang Anda selidiki.

Petunjuk / Saran

Mode sederhana di Log Analytics menawarkan antarmuka point-and-click yang intuitif untuk menganalisis dan memvisualisasikan data log.

  1. Pada tampilan performa, kegagalan, atau pencarian, pilih Tampilkan di Log di bilah navigasi atas dan pilih kueri dari menu dropdown.

    Cuplikan layar bilah tindakan atas dengan tombol 'Tampilkan dalam log' disorot.

  2. Tindakan ini membawa Anda ke tampilan Log , di mana Anda dapat mengubah kueri lebih lanjut atau memilih yang berbeda dari bilah sisi.

    Cuplikan layar memperlihatkan tampilan 'Log'.

Menyelidiki telemetri

Untuk menyelidiki akar penyebab kesalahan atau pengecualian, Anda dapat menelusuri operasi yang bermasalah untuk tampilan detail transaksi end-to-end terperinci yang mencakup dependensi dan detail pengecualian.

  1. Pilih operasi untuk melihat 3 kode respons teratas, 3 jenis pengecualian teratas, dan 3 dependensi gagal teratas untuk operasi tersebut.

  2. Di bawah Telusuri, pilih tombol dengan jumlah hasil yang difilter untuk melihat daftar operasi sampel.

  3. Pilih operasi sampel untuk membuka tampilan Detail transaksi end-to-end .

    Cuplikan layar memperlihatkan tampilan 'Kegagalan' dengan tombol 'Telusuri Lebih Dalam' disorot.

    Nota

    Sampel yang disarankan mencakup telemetri terkait dari semua komponen, bahkan jika pengambilan sampel sedang berlangsung di salah satunya.

    Petunjuk / Saran

    Jika Anda memerlukan informasi tumpukan panggilan selama kegagalan, buka pengecualian terkait di Detail transaksi end-to-end atau tab Pengecualian. Jejak tumpukan hanya ditampilkan ketika telemetri pengecualian dicatat untuk operasi tersebut.

Menganalisis performa dan kegagalan sisi klien

Jika Anda melengkapi halaman web dengan Application Insights, Anda dapat memperoleh visibilitas ke dalam tampilan halaman, operasi browser, dan dependensi. Mengumpulkan data browser ini memerlukan penambahan skrip ke halaman web Anda.

  1. Setelah menambahkan skrip, Anda dapat access tampilan halaman dan metrik performa terkait dengan memilih tombol Browser pada tampilan Performance atau Failures.

    Cuplikan layar menyoroti tombol 'Server / Browser' di bawah bilah tindakan atas.

    Tampilan ini menyediakan ringkasan visual berbagai telemetri aplikasi Anda dari perspektif browser.

    Petunjuk / Saran

    Untuk aplikasi satu halaman (SPAs), aktifkan enableAutoRouteTracking atau panggil trackPageView() pada perubahan rute sehingga setiap halaman logis membuat tampilan dan operasi halamannya sendiri. Jika tidak, beberapa perubahan rute dapat berkorelasi dengan satu operasi dan beberapa durasi tampilan halaman dapat muncul sebagai 0.

  2. Untuk operasi browser, tampilan detail transaksi end-to-end memperlihatkan Properti Tampilan Halaman klien yang meminta halaman, termasuk jenis browser dan lokasinya. Informasi ini dapat membantu menentukan apakah ada masalah performa yang terkait dengan jenis klien tertentu.

    Cuplikan layar memperlihatkan tampilan 'Detail transaksi end-to-end' dengan bagian 'Properti Tampilan Halaman' disorot.

Nota

Seperti data yang dikumpulkan untuk performa server, Application Insights membuat semua data klien tersedia untuk analisis mendalam dengan menggunakan log.

Pengalaman diagnostik transaksi

Pengalaman diagnostik transaksi, juga disebut pandangan detail transaksi menyeluruh, menunjukkan bagan Gantt transaksi, yang mencantumkan semua peristiwa dengan durasi dan kode respons mereka.

Pengalaman diagnostik ini secara otomatis menghubungkan telemetri sisi server dari semua komponen yang dipantau Application Insights Anda ke dalam satu tampilan dan mendukung beberapa sumber daya. Application Insights mendeteksi hubungan yang mendasarinya dan memungkinkan Anda untuk dengan mudah mendiagnosis komponen aplikasi, dependensi, atau pengecualian yang menyebabkan perlambatan atau kegagalan transaksi.

Memilih peristiwa tertentu mengungkapkan propertinya, termasuk informasi tambahan seperti perintah yang mendasari atau tumpukan panggilan.

Tampilan ini memiliki empat bagian utama:

Cuplikan layar yang memperlihatkan tampilan transaksi dengan daftar hasil disorot.

Panel yang bisa diciutkan ini memperlihatkan hasil lain yang memenuhi kriteria filter. Pilih hasil apa pun untuk memperbarui detail masing-masing dari tiga bagian sebelumnya. Kami mencoba menemukan sampel yang kemungkinan besar memiliki detail yang tersedia dari semua komponen, bahkan jika pengambilan sampel berlaku di salah satu dari mereka. Sampel ini ditampilkan sebagai saran.

Nota

Pengalaman diagnostik Transaksi sekarang menawarkan tampilan sederhana, yang menunjukkan langkah-langkah agen dengan cara yang jelas dan seperti cerita. Untuk informasi selengkapnya, lihat Memantau agen AI dengan Application Insights.

Catatan rilis

Anotasi rilis menandai penyebaran dan peristiwa signifikan lainnya pada bagan Application Insights, memungkinkan korelasi perubahan dengan performa, kegagalan, dan penggunaan.

Anotasi otomatis dengan Azure Pipelines

Azure Pipelines membuat anotasi rilis selama penyebaran ketika semua kondisi berikut ini benar:

  • Sumber daya target ditautkan ke Application Insights melalui APPLICATIONINSIGHTS_CONNECTION_STRING pengaturan aplikasi.
  • Sumber daya Application Insights berada dalam langganan yang sama dengan sumber daya target.
  • Penyebaran menggunakan salah satu tugas Azure Pipelines berikut:
Kode tugas Nama tugas Versions
AzureAppServiceSettings Pengaturan Azure App Service Apa saja
AzureRmWebAppDeployment Azure App Service V3+
AzureFunctionApp Azure Functions Apa saja
AzureFunctionAppContainer Azure Functions untuk kontainer Apa saja
AzureWebAppContainer Azure Web App untuk Kontainer Apa saja
AzureWebApp Aplikasi Web Azure Apa saja

Nota

Jika Anda masih menggunakan tugas penyebaran anotasi Application Insights yang lebih lama, hapus.

Mengonfigurasi anotasi dalam alur dengan menggunakan skrip dalam baris

Jika Anda tidak menggunakan tugas di bagian sebelumnya, tambahkan skrip inline di tahap penyebaran.

  1. Buka alur yang sudah ada atau buat yang baru, dan pilih tugas di bawah Tahapan.

  2. Tambahkan tugas Azure CLI baru.

  3. Pilih langganan Azure. Atur Jenis Skrip ke PowerShell, dan atur Lokasi Skrip ke Sebaris.

  4. Tambahkan skrip PowerShell dari langkah 2 di Buat anotasi rilis dengan Azure CLI ke Inline Script.

  5. Tambahkan argumen skrip. Ganti placeholder dalam tanda kurung sudut.

    -aiResourceId "<aiResourceId>" `
    -releaseName "<releaseName>" `
    -releaseProperties @{"ReleaseDescription"="<a description>";
        "TriggerBy"="<Your name>" }
    

    Contoh berikut menunjukkan metadata yang dapat Anda atur dalam argumen opsional releaseProperties dengan menggunakan variabel build dan rilis. Pilih Simpan.

    -releaseProperties @{
    "BuildNumber"="$(Build.BuildNumber)";
    "BuildRepositoryName"="$(Build.Repository.Name)";
    "BuildRepositoryProvider"="$(Build.Repository.Provider)";
    "ReleaseDefinitionName"="$(Build.DefinitionName)";
    "ReleaseDescription"="Triggered by $(Build.DefinitionName) $(Build.BuildNumber)";
    "ReleaseEnvironmentName"="$(Release.EnvironmentName)";
    "ReleaseId"="$(Release.ReleaseId)";
    "ReleaseName"="$(Release.ReleaseName)";
    "ReleaseRequestedFor"="$(Release.RequestedFor)";
    "ReleaseWebUrl"="$(Release.ReleaseWebUrl)";
    "SourceBranch"="$(Build.SourceBranch)";
    "TeamFoundationCollectionUri"="$(System.TeamFoundationCollectionUri)" }
    

Membuat anotasi rilis dengan Azure CLI

Gunakan skrip PowerShell berikut untuk membuat anotasi rilis dari proses apa pun, tanpa Azure DevOps.

  1. Masuk ke Azure CLI.

  2. Simpan skrip berikut sebagai CreateReleaseAnnotation.ps1.

    param(
        [parameter(Mandatory = $true)][string]$aiResourceId,
        [parameter(Mandatory = $true)][string]$releaseName,
        [parameter(Mandatory = $false)]$releaseProperties = @()
    )
    
    # Function to ensure all Unicode characters in a JSON string are properly escaped
    function Convert-UnicodeToEscapeHex {
      param (
        [parameter(Mandatory = $true)][string]$JsonString
      )
      $JsonObject = ConvertFrom-Json -InputObject $JsonString
      foreach ($property in $JsonObject.PSObject.Properties) {
        $name = $property.Name
        $value = $property.Value
        if ($value -is [string]) {
          $value = [regex]::Unescape($value)
          $OutputString = ""
          foreach ($char in $value.ToCharArray()) {
            $dec = [int]$char
            if ($dec -gt 127) {
              $hex = [convert]::ToString($dec, 16)
              $hex = $hex.PadLeft(4, '0')
              $OutputString += "\u$hex"
            }
            else {
              $OutputString += $char
            }
          }
          $JsonObject.$name = $OutputString
        }
      }
      return ConvertTo-Json -InputObject $JsonObject -Compress
    }
    
    $annotation = @{
        Id = [GUID]::NewGuid();
        AnnotationName = $releaseName;
        EventTime = (Get-Date).ToUniversalTime().GetDateTimeFormats("s")[0];
        Category = "Deployment"; #Application Insights only displays annotations from the "Deployment" Category
        Properties = ConvertTo-Json $releaseProperties -Compress
    }
    
    $annotation = ConvertTo-Json $annotation -Compress
    $annotation = Convert-UnicodeToEscapeHex -JsonString $annotation  
    
    $accessToken = (az account get-access-token | ConvertFrom-Json).accessToken
    $headers = @{
        "Authorization" = "Bearer $accessToken"
        "Accept"        = "application/json"
        "Content-Type"  = "application/json"
    }
    $params = @{
        Headers = $headers
        Method  = "Put"
        Uri     = "https://management.azure.com$($aiResourceId)/Annotations?api-version=2015-05-01"
        Body    = $annotation
    }
    Invoke-RestMethod @params
    

Nota

Atur Category ke Deployment atau anotasi tidak muncul di Azure portal.

Panggil skrip dan berikan nilai untuk parameter. Parameter -releaseProperties bersifat opsional.

.\CreateReleaseAnnotation.ps1 `
 -aiResourceId "<aiResourceId>" `
 -releaseName "<releaseName>" `
 -releaseProperties @{"ReleaseDescription"="<a description>";
     "TriggerBy"="<Your name>" }
Argumen Definition Nota
aiResourceId ID sumber daya dari sumber daya Application Insights target. Contoh: /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MyRGName/providers/microsoft.insights/components/MyResourceName
releaseName Nama anotasi rilis baru.
releaseProperties Metadata kustom untuk dilampirkan ke anotasi. Fakultatif

Menampilkan anotasi

Nota

Anotasi rilis tidak tersedia di panel Metrik .

Application Insights menampilkan anotasi rilis dalam pengalaman berikut:

Anotasi divisualisasikan sebagai penanda di bagian atas bagan.

Cuplikan layar bagan pengecualian dengan anotasi.

Untuk mengaktifkan anotasi dalam buku kerja, buka Pengaturan Tingkat Lanjut lalu pilih Perlihatkan anotasi. Pilih penanda anotasi apa pun untuk membuka detail rilis seperti pemohon, cabang kontrol sumber, alur rilis, dan lingkungan.

Tanya jawab umum

Bagian ini menyediakan jawaban atas pertanyaan umum.

Tampilan pencarian

Apa itu komponen?

Komponen adalah bagian yang dapat disevarkan secara independen dari aplikasi terdistribusi atau layanan mikro Anda. Pengembang dan tim operasi memiliki akses atau visibilitas tingkat kode ke telemetri yang dihasilkan oleh komponen aplikasi ini.

  • Komponen berbeda dari dependensi eksternal yang "diamati", seperti SQL dan pusat peristiwa, yang mungkin tidak memiliki akses ke (kode atau telemetri) oleh tim atau organisasi Anda.
  • Komponen berjalan pada sejumlah instance server, peran, atau kontainer.
  • Komponen dapat terdiri dari string koneksi terpisah untuk Application Insights, bahkan jika langganannya berbeda. Komponen juga dapat memiliki peran berbeda yang melaporkan ke satu string koneksi Application Insights. Pengalaman baru menampilkan rincian pada setiap komponen, terlepas dari cara pengaturannya.

Berapa banyak data yang disimpan?

Lihat Ringkasan batas.


Bagaimana cara melihat data POST di permintaan server saya?

Kami tidak mencatat data POST secara otomatis, tetapi Anda dapat menggunakan TrackTrace atau panggilan log. Masukkan data POST ke dalam parameter pesan. Anda tidak dapat memfilter pesan dengan cara yang sama seperti memfilter properti, tetapi batas ukurannya lebih panjang.


Mengapa pencarian Fungsi Azure saya tidak memberikan hasil?

Azure Functions tidak mencatat string kueri URL.

Diagnostik transaksi

Mengapa saya melihat satu komponen pada bagan dan komponen lain hanya ditampilkan sebagai dependensi eksternal tanpa detail apa pun?

Kemungkinan alasan:

  • Apakah komponen lain diinstrumentasikan dengan Application Insights?
  • Apakah komponen tersebut menggunakan SDK Application Insights stabil terbaru?
  • Jika komponen ini adalah sumber daya Application Insights terpisah, validasi bahwa Anda memiliki access. Jika Anda memiliki akses dan komponen-komponen telah diinstrumentasikan menggunakan Application Insights Software Development Kits (SDKs) terbaru, beri tahu kami melalui kanal masukan di sudut kanan atas.

Saya melihat baris duplikat untuk dependensi. Apakah perilaku ini diharapkan?

Saat ini, kami menampilkan panggilan dependensi keluar yang terpisah dari permintaan masuk. Biasanya, kedua panggilan terlihat identik dengan perbedaan hanya pada durasi akibat perjalanan bolak-balik jaringan. Ikon yang menonjol dan gaya berbeda dari bilah durasi membantu membedakan di antara bilah-bilah tersebut. Apakah presentasi data ini membingungkan? Berikan umpan balik Anda!


Bagaimana menangani pergeseran waktu di berbagai instance komponen?

Jadwal waktu disesuaikan untuk ketidaksesuaian jam dalam bagan transaksi. Anda dapat melihat tanda waktu yang tepat di panel detail atau dengan menggunakan Analitik Log.


Mengapa sebagian besar kueri item terkait hilang dalam pengalaman baru ini?

Perilaku ini dirancang. Semua item terkait, di semua komponen, sudah tersedia di sisi kiri di bagian atas dan bawah. Pengalaman baru ini memiliki dua item terkait yang tidak termasuk di sisi kiri: semua telemetri dari lima menit sebelum dan sesudah peristiwa ini serta timeline pengguna.


Apakah ada cara untuk melihat lebih sedikit peristiwa per transaksi saat saya menggunakan Application Insights JavaScript SDK?

Pengalaman diagnostik transaksi menunjukkan semua telemetri dalam satu operasi yang berbagi ID Operasional. Secara default, SDK Application Insights untuk JavaScript membuat operasi baru untuk setiap tampilan halaman unik. Dalam aplikasi satu halaman (SPA), hanya satu peristiwa tampilan halaman yang dibuat dan satu ID Operasi digunakan untuk semua telemetri yang dihasilkan. Akibatnya, banyak peristiwa mungkin berkorelasi dengan operasi yang sama.

Dalam skenario ini, Anda dapat menggunakan Pelacakan Rute Otomatis untuk membuat operasi baru secara otomatis untuk navigasi di SPA Anda. Anda harus mengaktifkan enableAutoRouteTracking sehingga sistem membuat tampilan halaman setiap kali rute URL diperbarui (tampilan halaman logis terjadi). Jika Anda ingin me-refresh ID Operasi secara manual, panggil appInsights.properties.context.telemetryTrace.traceID = Microsoft.ApplicationInsights.Telemetry.Util.generateW3CId(). Memicu peristiwa PageView secara manual juga mengatur ulang ID Operasi.


Mengapa durasi detail transaksi tidak ditambahkan hingga durasi permintaan teratas?

Waktu yang tidak dijelaskan dalam bagan Gantt adalah waktu yang tidak tercakup oleh dependensi terlacak. Masalah ini dapat terjadi karena panggilan eksternal tidak diinstrumentasikan, baik secara otomatis atau manual. Ini juga dapat terjadi karena waktu yang digunakan untuk pemrosesan daripada karena panggilan eksternal.

Jika semua panggilan diinstrumentasi, proses yang berjalan kemungkinan merupakan penyebab utama untuk waktu yang dihabiskan. Alat yang berguna untuk mendiagnosis prosesnya adalah .NET Profiler.


Apa jika saya melihat pesan "Kesalahan mengambil data" saat menavigasi Application Insights di Azure portal?

Kesalahan ini menunjukkan bahwa browser tersebut tidak dapat memanggil API yang diperlukan atau API mengembalikan respon kegagalan. Untuk memecahkan masalah perilaku, buka jendela InPrivate browser dan nonaktifkan ekstensi browser apa pun yang berjalan, lalu identifikasi apakah Anda masih dapat mereproduksi perilaku portal. Jika kesalahan portal masih terjadi, coba uji dengan browser lain, atau komputer lain, selidiki Sistem Nama Domain (DNS) atau masalah terkait jaringan lainnya dari komputer klien tempat panggilan API gagal. Jika kesalahan portal berlanjut, kumpulkan log jaringan browser ketika mereproduksi perilaku tak terduga. Kemudian buka kasus dukungan dari portal Azure.

Langkah selanjutnya