Metrik berbasis log Application Insights
Log Application Insights berbasis metrik memungkinkan Anda menganalisis kesehatan aplikasi yang dipantau, membuat dasbor yang canggih, dan mengonfigurasi pemberitahuan. Ada dua jenis WebJob:
- Metrik berbasis log di belakang layar diterjemahkan ke dalam kueri Kusto dari peristiwa yang disimpan.
- Metrik standar disimpan sebagai rangkaian waktu yang telah ditentukan sebelumnya.
Karena metrik standar telah dilewati selama pengumpulan, metrik tersebut memiliki performa yang lebih baik pada waktu kueri. Ini membuat mereka menjadi pilihan yang lebih baik untuk dasbor dan pemberitahuan real-time. Metrik berbasis log memiliki lebih banyak dimensi, yang menjadikannya opsi unggul untuk analisis data dan diagnostik ad-hoc. Gunakan pemilih ruang nama untuk beralih antara metrik berbasis log dan standar metrik di penjelajah metrik.
Menginterpretasikan dan menggunakan kueri dari artikel ini
Artikel ini mencantumkan metrik dengan agregasi dan dimensi yang didukung. Detail tentang metrik berbasis log mencakup pernyataan kueri Kusto yang mendasarinya. Untuk kenyamanan, setiap kueri menggunakan default untuk granularitas waktu, jenis bagan, dan kadang-kadang memisahkan dimensi yang menyederhanakan dengan menggunakan kueri di Log Analytics tanpa perlu modifikasi.
Saat Anda memplot metrik yang sama dalam penjelajah metrik, tidak ada default - kueri disesuaikan secara dinamis berdasarkan pengaturan bagan Anda:
Rentang Waktu yang dipilih diterjemahkan menjadi tambahan dimana tanda waktu... klausa untuk hanya memilih peristiwa dari rentang waktu yang dipilih. Misalnya, bagan yang menampilkan data selama 24 jam terakhir, kuerinya menyertakan | dengan stempel waktu > lalu (24 jam).
Granularitas Waktu yang dipilih dimasukkan ke dalam ringkasan akhir ... dengan klausa bin (tanda waktu, [butir waktu]).
Dimensi Filter yang dipilih diterjemahkan ke dalam klausa tambahan.
Dimensi bagan Split yang dipilih diterjemahkan ke dalam properti ringkasan tambahan. Misalnya, jika Anda membagi bagan Anda berdasarkanlokasi, dan plot menggunakan granularitas waktu 5 menit, ringkasanklausul dirangkum ... oleh bin (tanda waktu, 5 m), lokasi..
Catatan
Jika Anda baru menggunakan bahasa kueri Kusto, Anda mulai dengan menyalin dan menempelkan pernyataan Kusto ke panel kueri Log Analytics tanpa melakukan modifikasi apa pun. Klik Jalankan untuk melihat bagan dasar. Saat Anda mulai memahami sintaks bahasa kueri, Anda dapat mulai melakukan modifikasi kecil dan melihat dampak perubahan Anda. Menjelajahi data Anda sendiri adalah cara yang bagus untuk mulai mewujudkan kekuatan penuh Log Analytics dan Azure Monitor.
Metrik ketersediaan
Metrik dalam kategori Ketersediaan memungkinkan Anda untuk melihat kesehatan aplikasi web Anda seperti yang diamati dari titik-titik di seluruh dunia. Konfigurasikan pengujian ketersediaan untuk mulai menggunakan metrik apa pun dari kategori ini.
Ketersediaan (availabilityResults/availabilityPercentage)
Metrik Ketersediaan memperlihatkan persentase pengujian web yang berjalan yang tidak mendeteksi masalah apa pun. Nilai terendah yang mungkin adalah 0, yang menunjukkan bahwa semua pengujian web yang berjalan telah gagal. Nilai 100 berarti bahwa semua pengujian web yang berjalan telah melewati kriteria validasi.
Satuan ukuran | Agregasi yang didukung | Dimensi yang didukung |
---|---|---|
Persentase | Tengah | Jalankan lokasi, Nama uji |
availabilityResults
| summarize sum(todouble(success == 1) * 100) / count() by bin(timestamp, 5m), location
| render timechart
Durasi uji ketersediaan (availabilityResults/duration)
Metrik durasi uji Ketersediaan menunjukkan berapa banyak waktu yang diperlukan untuk menjalankan uji web. Untuk uji web multi-langkah, metrik mencerminkan total waktu eksekusi semua langkah.
Satuan ukuran | Agregasi yang didukung | Dimensi yang didukung |
---|---|---|
Milidetik | Rata-rata, Min, Maks | Jalankan lokasi, Nama uji, Hasil uji |
availabilityResults
| where notempty(duration)
| extend availabilityResult_duration = iif(itemType == 'availabilityResult', duration, todouble(''))
| summarize sum(availabilityResult_duration)/sum(itemCount) by bin(timestamp, 5m), location
| render timechart
Uji ketersediaan (availabilityResults/count)
Metrik uji Ketersediaan mencerminkan hitungan pengujian web yang dijalankan oleh Azure Monitor.
Satuan ukuran | Agregasi yang didukung | Dimensi yang didukung |
---|---|---|
Jumlah | Jumlah | Jalankan lokasi, Nama uji, Hasil uji |
availabilityResults
| summarize sum(itemCount) by bin(timestamp, 5m)
| render timechart
Metrik browser
Metrik browser dikumpulkan oleh Application Insights JavaScript SDK dari browser pengguna akhir yang nyata. Mereka memberikan wawasan hebat tentang pengalaman pengguna Anda dengan aplikasi web Anda. Metrik browser biasanya tidak diambil sampel, yang berarti bahwa mereka memberikan presisi yang lebih tinggi dari jumlah penggunaan dibandingkan dengan metrik sisi server yang mungkin miring dengan pengambilan sampel.
Catatan
Untuk mengumpulkan metrik browser, aplikasi Anda harus berinstrumen dengan Application Insights JavaScript SDK.
Waktu muat halaman browser (browserTimings/totalDuration)
Waktu dari permintaan pengguna hingga DOM, lembar gaya, skrip, dan gambar dimuat.
Satuan ukuran | Agregasi yang didukung | Dimensi yang dilewati sebelumnya |
---|---|---|
Milidetik | Rata-rata, Min, Maks | Tidak |
browserTimings
| where notempty(totalDuration)
| extend _sum = totalDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart
Waktu pemrosesan klien (browserTiming/processingDuration)
Waktu antara menerima byte terakhir dokumen hingga DOM dimuat. Permintaan asinkron mungkin masih diproses.
Satuan ukuran | Agregasi yang didukung | Dimensi yang dilewati sebelumnya |
---|---|---|
Milidetik | Rata-rata, Min, Maks | Tidak |
browserTimings
| where notempty(processingDuration)
| extend _sum = processingDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 5m)
| render timechart
Waktu sambungkan jaringan load halaman (browserTimings/networkDuration)
Waktu antara permintaan pengguna dan koneksi jaringan. Mencakup pencarian DNS dan koneksi transportasi.
Satuan ukuran | Agregasi yang didukung | Dimensi yang dilewati sebelumnya |
---|---|---|
Milidetik | Rata-rata, Min, Maks | Tidak |
browserTimings
| where notempty(networkDuration)
| extend _sum = networkDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart
Waktu respons penerimaan (browserTimings/receiveDuration)
Waktu antara byte pertama dan terakhir, atau sampai pemutusan sambungan.
Satuan ukuran | Agregasi yang didukung | Dimensi yang dilewati sebelumnya |
---|---|---|
Milidetik | Rata-rata, Min, Maks | Tidak |
browserTimings
| where notempty(receiveDuration)
| extend _sum = receiveDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart
Mengirim waktu permintaan (browserTimings/sendDuration)
Waktu antara koneksi jaringan dan menerima byte pertama.
Satuan ukuran | Agregasi yang didukung | Dimensi yang dilewati sebelumnya |
---|---|---|
Milidetik | Rata-rata, Min, Maks | Tidak |
browserTimings
| where notempty(sendDuration)
| extend _sum = sendDuration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render timechart
Metrik kegagalan
Metrik dalam Kegagalan menunjukkan masalah dengan permintaan pemrosesan, panggilan dependensi, dan pengecualian yang dilemparkan.
Pengecualian browser (exceptions/browser)
Metrik ini mencerminkan jumlah pengecualian yang dilemparkan dari kode aplikasi Anda yang berjalan di browser. Hanya pengecualian yang dilacak dengan panggilan trackException()
API Application Insights yang disertakan di dalam metrik.
Satuan ukuran | Agregasi yang didukung | Dimensi yang dilewati sebelumnya | Catatan |
---|---|---|---|
Jumlah | Jumlah | Tidak | Versi berbasis log menggunakan agregasi Sum |
exceptions
| where notempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Kegagalan panggilan dependensi (dependensi/gagal)
Jumlah panggilan dependensi yang gagal.
Satuan ukuran | Agregasi yang didukung | Dimensi yang dilewati sebelumnya | Catatan |
---|---|---|---|
Jumlah | Jumlah | Tidak | Versi berbasis log menggunakan agregasi Sum |
dependencies
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Pengecualian (exceptions/count)
Setiap kali Anda mencatat pengecualian untuk Application Insights, ada panggilan ke metode trackException() SDK. Metrik Pengecualian memperlihatkan jumlah pengecualian yang dicatat.
Satuan ukuran | Agregasi yang didukung | Dimensi yang dilewati sebelumnya | Catatan |
---|---|---|---|
Jumlah | Jumlah | Nama peran cloud, Instans peran awan, Jenis perangkat | Versi berbasis log menggunakan agregasi Sum |
exceptions
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Permintaan gagal (permintaan/gagal)
Jumlah permintaan server terlacak yang ditandai sebagai gagal. Secara default, Application Insights SDK secara otomatis menandai setiap permintaan server yang mengembalikan kode respons HTTP 5xx atau 4xx sebagai permintaan yang gagal. Anda dapat menyesuaikan logika ini dengan mengubah properti sukses dari item telemetri permintaan di penginisialisasi telemetri kustom.
Satuan ukuran | Agregasi yang didukung | Dimensi yang dilewati sebelumnya | Catatan |
---|---|---|---|
Jumlah | Jumlah | Instans peran cloud, Nama peran Cloud, Lalu lintas riil atau sintetis, Permintaan performa, Kode respons | Versi berbasis log menggunakan agregasi Sum |
requests
| where success == 'False'
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Pengecualian server (exceptions/server)
Metrik ini menunjukkan jumlah pengecualian server.
Satuan ukuran | Agregasi yang didukung | Dimensi yang dilewati sebelumnya | Catatan |
---|---|---|---|
Jumlah | Jumlah | Nama peran cloud, Instans peran Cloud, Jenis perangkat | Versi berbasis log menggunakan agregasi Sum |
exceptions
| where isempty(client_Browser)
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Penghitung kinerja
Gunakan metrik dalam kategori Penghitung kinerja untuk mengakses penghitung kinerja sistem yang dikumpulkan oleh Application Insights.
Memori yang tersedia (performanceCounters/availableMemory)
performanceCounters
| where ((category == "Memory" and counter == "Available Bytes") or name == "availableMemory")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Laju pengecualian (performanceCounters/exceptionRate)
performanceCounters
| where ((category == ".NET CLR Exceptions" and counter == "# of Exceps Thrown / sec") or name == "exceptionRate")
| extend performanceCounter_value = iif(itemType == 'performanceCounter',value,todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Waktu eksekusi permintaan HTTP (performanceCounters/requestExecutionTime)
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Request Execution Time") or name == "requestExecutionTime")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Laju permintaan HTTP (performanceCounters/requestsPerSecond)
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests/Sec") or name == "requestsPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Permintaan HTTP dalam antrean aplikasi (performanceCounters/requestsInQueue)
performanceCounters
| where ((category == "ASP.NET Applications" and counter == "Requests In Application Queue") or name == "requestsInQueue")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
CPU Proses (performanceCounters/processCpuPercentage)
Metrik menunjukkan berapa banyak dari total kapasitas prosesor yang dikonsumsi oleh proses yang meng-hosting aplikasi Anda yang dipantau.
Satuan ukuran | Agregasi yang didukung | Dimensi yang didukung |
---|---|---|
Persentase | Rata-rata, Min, Maks | Instans peran cloud |
performanceCounters
| where ((category == "Process" and counter == "% Processor Time Normalized") or name == "processCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Catatan
Rentang metrik adalah antara 0 dan 100 * n, di mana n adalah jumlah inti CPU yang tersedia. Misalnya, nilai metrik 200% dapat mewakili pemanfaatan penuh dari dua inti CPU atau setengah pemanfaatan dari 4 inti CPU dan seterusnya. Proses CPU Dinormalisasi adalah metrik alternatif yang dikumpulkan oleh banyak SDK yang mewakili nilai yang sama tetapi membaginya dengan jumlah inti CPU yang tersedia. Dengan demikian, rentang metrik Proses CPU Yang Dinormalisasi adalah 0 hingga 100.
Laju IO proses (performanceCounters/processIOBytesPerSecond)
Satuan ukuran | Agregasi yang didukung | Dimensi yang didukung |
---|---|---|
Byte per detik | Rata-rata, Min, Maks | Instans peran cloud |
performanceCounters
| where ((category == "Process" and counter == "IO Data Bytes/sec") or name == "processIOBytesPerSecond")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Memproses byte privat (performanceCounters/processPrivateBytes)
Jumlah memori yang tidak dibagikan yang dialokasikan proses pemantauan untuk datanya.
Satuan ukuran | Agregasi yang didukung | Dimensi yang didukung |
---|---|---|
Byte | Rata-rata, Min, Maks | Instans peran cloud |
performanceCounters
| where ((category == "Process" and counter == "Private Bytes") or name == "processPrivateBytes")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Waktu prosesor (performanceCounters/processorCpuPercentage)
Konsumsi CPU oleh semua proses yang berjalan pada instans server yang dipantau.
Satuan ukuran | Agregasi yang didukung | Dimensi yang didukung |
---|---|---|
Persentase | Rata-rata, Min, Maks | Instans peran cloud |
Catatan
Metrik waktu prosesor tidak tersedia untuk aplikasi yang dihosting di Azure App Services. Gunakan metrik CPU Proses untuk melacak penggunaan CPU dari aplikasi web yang dihosting di Azure App Service.
performanceCounters
| where ((category == "Processor" and counter == "% Processor Time") or name == "processorCpuPercentage")
| extend performanceCounter_value = iif(itemType == "performanceCounter", value, todouble(''))
| summarize sum(performanceCounter_value) / count() by bin(timestamp, 1m)
| render timechart
Metrik server
Panggilan dependensi (dependencies/count)
Metrik ini terkait dengan jumlah panggilan dependensi.
dependencies
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Durasi dependensi (dependensi/durasi)
Metrik ini mengacu pada durasi panggilan dependensi.
dependencies
| where notempty(duration)
| extend dependency_duration = iif(itemType == 'dependency',duration,todouble(''))
| extend _sum = dependency_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum)/sum(_count) by bin(timestamp, 1m)
| render timechart
Permintaan server (requests/count)
Metrik ini mencerminkan jumlah permintaan server masuk yang diterima oleh aplikasi web Anda.
requests
| summarize sum(itemCount) by bin(timestamp, 5m)
| render barchart
Waktu respons server (requests/duration)
Metrik ini mencerminkan waktu yang diperlukan server untuk memproses permintaan masuk.
requests
| where notempty(duration)
| extend request_duration = iif(itemType == 'request', duration, todouble(''))
| extend _sum = request_duration
| extend _count = itemCount
| extend _sum = _sum*_count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 1m)
| render timechart
Metrik penggunaan
Waktu muat tampilan halaman (pageViews/durasi)
Metrik ini mengacu pada jumlah waktu yang diperlukan agar peristiwa PageView dimuat.
pageViews
| where notempty(duration)
| extend pageView_duration = iif(itemType == 'pageView', duration, todouble(''))
| extend _sum = pageView_duration
| extend _count = itemCount
| extend _sum = _sum * _count
| summarize sum(_sum) / sum(_count) by bin(timestamp, 5m)
| render barchart
Tampilan halaman (pageViews/count)
Hitungan peristiwa PageView yang dicatat dengan API TrackPageView() Application Insights.
pageViews
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart
Sesi (sesi/hitungan)
Metrik ini mengacu pada hitungan identitas sesi yang berbeda.
union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(session_Id)
| summarize dcount(session_Id) by bin(timestamp, 1h)
| render barchart
Jejak (traces/count)
Jumlah pernyataan jejak yang dicatat dengan panggilan API TrackTrace() Application Insights.
traces
| summarize sum(itemCount) by bin(timestamp, 1h)
| render barchart
Pengguna (pengguna/hitungan)
Jumlah pengguna berbeda yang mengakses aplikasi Anda. Akurasi metrik ini dapat dipengaruhi secara signifikan dengan menggunakan pengambilan sampel dan pemfilteran telemetri.
union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_Id)
| summarize dcount(user_Id) by bin(timestamp, 1h)
| render barchart
Pengguna, Terautentikasi (pengguna/terautentikasi)
Jumlah pengguna berbeda yang diautentikasi ke dalam aplikasi Anda.
union traces, requests, pageViews, dependencies, customEvents, availabilityResults, exceptions, customMetrics, browserTimings
| where notempty(user_AuthenticatedId)
| summarize dcount(user_AuthenticatedId) by bin(timestamp, 1h)
| render barchart
Mengakses semua data Anda secara langsung dengan REST API Application Insights
REST API Application Insights memungkinkan pengambilan terprogram metrik berbasis log. Ini juga menampilkan parameter opsional "ai.include-query-payload" yang ketika ditambahkan ke string kueri, meminta API untuk mengembalikan tidak hanya data timeseries, tetapi juga pernyataan Bahasa Kueri Kusto (KQL) yang digunakan untuk mengambilnya. Parameter ini dapat sangat bermanfaat bagi pengguna yang bertujuan untuk memahami koneksi antara peristiwa mentah di Log Analytics dan metrik berbasis log yang dihasilkan.
Untuk mengakses data Anda secara langsung, teruskan parameter "ai.include-query-payload" ke API Application Insights dalam kueri menggunakan KQL.
api.applicationinsights.io/v1/apps/DEMO_APP/metrics/users/authenticated?api_key=DEMO_KEY&prefer=ai.include-query-payload
Berikut ini adalah contoh pernyataan KQL pengembalian untuk metrik "Pengguna Terautentikasi." (Dalam contoh ini, "pengguna/terautentikasi" adalah id metrik.)
output
{
"value": {
"start": "2024-06-21T09:14:25.450Z",
"end": "2024-06-21T21:14:25.450Z",
"users/authenticated": {
"unique": 0
}
},
"@ai.query": "union (traces | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (requests | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (pageViews | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (dependencies | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customEvents | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (availabilityResults | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (exceptions | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (customMetrics | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)), (browserTimings | where timestamp >= datetime(2024-06-21T09:14:25.450Z) and timestamp < datetime(2024-06-21T21:14:25.450Z)) | where notempty(user_AuthenticatedId) | summarize ['users/authenticated_unique'] = dcount(user_AuthenticatedId)"
}