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.
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.
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.
Untuk melihat log untuk pemanggilan fungsi tertentu, pilih tautan kolom Tanggal (UTC) untuk pemanggilan tersebut. Output pengelogan untuk pemanggilan tersebut muncul di halaman baru.
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.
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.
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:
Telusuri ke aplikasi fungsi Anda di portal.
Pilih Application Insights di bawah Pengaturan di halaman kiri.
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.
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.
Area Application Insights berikut ini dapat membantu saat mengevaluasi perilaku, performa, dan kesalahan dalam fungsi Anda:
Menyelidiki | 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.
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. Untuk hosting paket Konsumsi Flex, traces juga termasuk log yang dibuat selama penyebaran kode. |
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
Log penyebaran kode Konsumsi Flex Kueri
Kueri berikut dapat digunakan untuk mencari semua log penyebaran kode untuk aplikasi fungsi saat ini dalam periode waktu yang ditentukan:
traces
| extend deploymentId = customDimensions.deploymentId
| where deploymentId != ''
| project timestamp, deploymentId, message, severityLevel, customDimensions, appName
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: