Menganalisis telemetri Azure Functions dalam Application Insights

Azure Functions terintegrasi dengan Application Insights untuk lebih memungkinkan Anda memantau aplikasi fungsi Anda. Application Insights mengumpulkan data telemetri yang dihasilkan oleh aplikasi fungsi Anda, termasuk informasi yang ditulis aplikasi Anda ke log. Integrasi Application Insights biasanya diaktifkan saat aplikasi fungsi Anda dibuat. Jika aplikasi Anda tidak memiliki set kunci instrumentasi, Anda harus terlebih dahulu mengaktifkan integrasi Application Insights.

Secara default, data yang dikumpulkan dari aplikasi fungsi Anda disimpan di Application Insights. Di portal Microsoft Azure, Application Insights menyediakan serangkaian visualisasi data telemetri Anda yang luas. Anda bisa menelusuri log kesalahan, peristiwa, dan metrik kueri. Artikel ini menyediakan contoh dasar tentang cara menampilkan dan mengajukan kueri data yang Anda kumpulkan. Untuk mempelajari selengkapnya tentang menjelajahi data aplikasi fungsi Anda di Application Insights, lihat Apa itu Application Insights?.

Agar dapat melihat data Application Insights dari aplikasi fungsi, Anda harus memiliki setidaknya izin peran Kontributor pada aplikasi fungsi. Anda juga harus memiliki izin Pembaca Pemantauan pada instans Application Insights. Anda memiliki izin ini secara default untuk aplikasi fungsi apa pun dan instans Application Insights yang Anda buat.

Untuk mempelajari lebih lanjut tentang retensi data dan potensi biaya penyimpanan, lihat Pengumpulan, retensi, dan penyimpanan data di Application Insights.

Menampilkan telemetri di tab Monitor

Dengan integrasi Application Insights diaktifkan, Anda dapat menampilkan data telemetri di tab Monitor.

  1. Di halaman aplikasi fungsi, pilih fungsi yang telah berjalan setidaknya sekali setelah Application Insights dikonfigurasi. Lalu, pilih Pantau dari panel kiri. Pilih Refresh secara berkala, hingga daftar pemanggilan fungsi muncul.

    Invocations list

    Catatan

    Dibutuhkan waktu hingga lima menit agar daftar muncul saat klien telemetri mengelompokkan data untuk transmisi ke server. Penundaan tidak berlaku untuk Stream Metrik Langsung. Layanan tersebut terhubung ke host Functions saat Anda memuat halaman, sehingga log di-streaming langsung ke halaman.

  2. Untuk melihat log untuk pemanggilan fungsi tertentu, pilih tautan kolom Tanggal (UTC) untuk pemanggilan tersebut. Output pengelogan untuk pemanggilan tersebut muncul di halaman baru.

    Invocation details

  3. Pilih Jalankan di Application Insights untuk menampilkan sumber kueri yang mengambil data log Azure Monitor di Azure Log. Jika ini pertama kalinya Anda menggunakan Analitik Log Azure dalam langganan, Anda akan diminta untuk mengaktifkannya.

  4. Setelah Anda mengaktifkan Analitik Log, kueri berikut ditampilkan. Anda bisa melihat bahwa hasil kueri dibatasi hingga 30 hari terakhir (where timestamp > ago(30d)), dan hasilnya memperlihatkan tidak lebih dari 20 baris (take 20). Sebaliknya, daftar detail pemanggilan untuk fungsi Anda adalah selama 30 hari terakhir tanpa batas.

    Application Insights Analytics invocation list

Untuk informasi selengkapnya, lihat Data telemetri kueri nanti di artikel ini.

Menampilkan telemetri dalam Application Insights

Untuk membuka Application Insights dari aplikasi fungsi di portal Microsoft Azure:

  1. Telusuri ke aplikasi fungsi Anda di portal.

  2. Pilih Application Insights di bawah Pengaturan di halaman kiri.

  3. Jika ini pertama kalinya Anda menggunakan Application Insights dengan langganan, Anda akan diminta untuk mengaktifkannya. Untuk melakukan ini, pilih Aktifkan Application Insights, lalu pilih Terapkan pada halaman berikutnya.

Open Application Insights from the function app Overview page

Untuk informasi tentang cara menggunakan Application Insights, lihat dokumentasi Application Insights. Bagian ini memperlihatkan beberapa contoh cara menampilkan data di Application Insights. Jika Anda sudah terbiasa dengan Application Insights, Anda dapat langsung masuk ke bagian tentang cara mengonfigurasi dan menyesuaikan data telemetri.

Application Insights Overview tab

Area Application Insights berikut ini dapat membantu saat mengevaluasi perilaku, performa, dan kesalahan dalam fungsi Anda:

Selidiki Deskripsi
Kegagalan Membuat bagan dan peringatan berdasarkan kegagalan fungsi dan pengecualian server. Nama Operasi adalah nama fungsi. Kegagalan dalam dependensi tidak ditampilkan kecuali Anda menerapkan telemetri kustom untuk dependensi.
Performa Menganalisis masalah performa dengan melihat pemanfaatan sumber daya dan throughput per instans peran Cloud. Data performa ini dapat berguna untuk skenario penelusuran kesalahan tempat fungsi menghambat sumber daya yang mendasari milik Anda.
Metrik Membuat bagan dan pemberitahuan yang didasarkan pada metrik. Metrik mencakup jumlah pemanggilan fungsi, waktu eksekusi, dan tingkat keberhasilan.
Metrik Langsung Lihat data metrik saat dibuat hampir secara real time.

Data telemetri kueri

Analitik Application Insights memberi Anda akses ke semua data telemetri dalam bentuk tabel dalam database. Analitik menyediakan bahasa kueri untuk mengekstrak, memanipulasi, dan memvisualisasikan data.

Pilih Log untuk menjelajahi atau membuat kueri untuk kejadian yang dicatat.

Analytics example

Berikut ini contoh kueri yang memperlihatkan distribusi permintaan per pekerja selama 30 menit terakhir.

requests
| where timestamp > ago(30m) 
| summarize count() by cloud_RoleInstance, bin(timestamp, 1m)
| render timechart

Tabel yang tersedia diperlihatkan di tab Skema di sebelah kiri. Anda dapat menemukan data yang dihasilkan oleh pemanggilan fungsi dalam tabel berikut:

Table Deskripsi
jejak Log yang dibuat oleh runtime, pengontrol skala, dan jejak dari kode fungsi Anda.
permintaan Satu permintaan untuk setiap pemanggilan fungsi.
pengecualian Setiap pengecualian yang dilemparkan oleh runtime.
customMetrics Jumlah pemanggilan yang berhasil dan gagal, tingkat keberhasilan, dan durasi.
customEvents Peristiwa yang dilacak oleh runtime, misalnya: Permintaan HTTP yang memicu fungsi.
performanceCounters Informasi tentang performa server yang dijalankan fungsi.

Tabel lainnya adalah untuk uji ketersediaan, dan telemetri klien dan browser. Anda dapat mengimplementasikan telemetri kustom untuk menambahkan data ke dalamnya.

Dalam setiap tabel, beberapa data spesifik Functions berada dalam bidang customDimensions. Misalnya, kueri berikut mengambil semua jejak yang memiliki tingkat log Error.

traces 
| where customDimensions.LogLevel == "Error"

Runtime menyediakan bidang customDimensions.LogLevel dan customDimensions.Category. Anda dapat menyediakan bidang tambahan dalam log yang Anda tulis di kode fungsi Anda. Untuk contoh di C#, lihat Pengelogan terstruktur di panduan pengembang pustaka kelas .NET.

Pemanggilan fungsi kueri

Setiap pemanggilan fungsi diberi ID unik. InvocationId disertakan dalam dimensi kustom dan dapat digunakan untuk menghubungkan semua log dari eksekusi fungsi tertentu.

traces
| project customDimensions["InvocationId"], message

Korelasi telemetri

Log dari berbagai fungsi dapat berkorelasi menggunakan operation_Id. Gunakan kueri berikut untuk mengembalikan semua log untuk operasi logis tertentu.

traces
| where operation_Id == '45fa5c4f8097239efe14a2388f8b4e29'
| project timestamp, customDimensions["InvocationId"], message
| order by timestamp

Persentase pengambilan sampel

Konfigurasi pengambilan sampel dapat digunakan untuk mengurangi volume telemetri. Gunakan kueri berikut untuk menentukan apakah pengambilan sampel beroperasi atau tidak. Jika Anda melihat bahwa RetainedPercentage untuk jenis apa pun kurang dari 100, jenis telemetri tersebut sedang digunakan sebagai sampel.

union requests,dependencies,pageViews,browserTimings,exceptions,traces
| where timestamp > ago(1d)
| summarize RetainedPercentage = 100/avg(itemCount) by bin(timestamp, 1h), itemType

Log pengontrol skala kueri

Fitur ini masih dalam pratinjau.

Setelah mengaktifkan pengelogan pengontrol skala dan integrasi Application Insights, Anda dapat menggunakan pencarian log Application Insights untuk membuat kueri log pengontrol skala yang dikeluarkan. Log pengontrol skala disimpan dalam koleksi traces di bawah kategori ScaleControllerLogs.

Kueri berikut dapat digunakan untuk mencari semua log pengontrol skala untuk aplikasi fungsi saat ini dalam periode waktu yang ditentukan:

traces 
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"

Kueri berikut ini meluas pada kueri sebelumnya untuk memperlihatkan cara mendapatkan hanya log yang menunjukkan perubahan skala:

traces 
| extend CustomDimensions = todynamic(tostring(customDimensions))
| where CustomDimensions.Category == "ScaleControllerLogs"
| where message == "Instance count changed"
| extend Reason = CustomDimensions.Reason
| extend PreviousInstanceCount = CustomDimensions.PreviousInstanceCount
| extend NewInstanceCount = CustomDimensions.CurrentInstanceCount

Metrik khusus paket konsumsi

Saat berjalan dalam paket Konsumsi, biaya eksekusi dari eksekusi fungsi tunggal diukur dalam GB-detik. Biaya eksekusi dihitung dengan menggabungkan penggunaan memorinya dengan waktu eksekusinya. Untuk mempelajari lebih lanjut, lihat Memperkirakan biaya paket Konsumsi.

Kueri telemetri berikut ini khusus untuk metrik yang memengaruhi biaya menjalankan fungsi dalam paket Konsumsi.

Menentukan penggunaan memori

Di bawah Pemantauan, pilih Log (Analitik), lalu salin kueri telemetri berikut dan tempelkan ke jendela kueri dan pilih Jalankan. Kueri ini mengembalikan total penggunaan memori pada setiap waktu yang menjadi sampel.

performanceCounters
| where name == "Private Bytes"
| project timestamp, name, value

Hasilnya terlihat seperti contoh berikut:

stempel waktu [UTC] nama value
12/9/2019, 1.05.14,947 Byte Privat 209.932.288
12/9/2019, 1.06.14,994 Byte Privat 212.189.184
12/9/2019, 1.06.30,010 Byte Privat 231.714.816
12/9/2019, 1.07.15,040 Byte Privat 210.591.744
12/9/2019, 1.12.16,285 Byte Privat 216.285.184
12/9/2019, 1.12.31,376 Byte Privat 235.806.720

Menentukan durasi

Azure Monitor melacak metrik di tingkat sumber daya, untuk Fungsi adalah aplikasi fungsi. Integrasi Application Insights memperlihatkan metrik berdasarkan per fungsi. Berikut ini contoh kueri analitik untuk mendapatkan durasi rata-rata fungsi:

customMetrics
| where name contains "Duration"
| extend averageDuration = valueSum / valueCount
| summarize averageDurationMilliseconds=avg(averageDuration) by name
nama averageDurationMilliseconds
QueueTrigger AvgDurationMs 16,087
QueueTrigger MaxDurationMs 90,249
QueueTrigger MinDurationMs 8,522

Langkah berikutnya

Pelajari selengkapnya tentang memantau Azure Functions: