ARMS Browser Monitoring mengumpulkan metrik performa, stabilitas, dan API dari halaman web serta mini program. Halaman ini menjelaskan definisi setiap metrik, rumus perhitungannya, serta field yang tersedia dalam log Browser Monitoring.
Metrik performa dikumpulkan melalui Navigation Timing API yang didefinisikan oleh W3C.
Apdex (kepuasan pengguna)
Application Performance Index (Apdex) adalah standar terbuka untuk mengukur kepuasan pengguna terhadap waktu respons aplikasi. Apdex mengklasifikasikan setiap sampel ke dalam salah satu dari tiga kategori berdasarkan ambang batas yang dapat dikonfigurasi, yaitu T:
| Kategori | Waktu respons | Makna |
|---|---|---|
| Satisfied | 0 hingga T | Aplikasi merespons cukup cepat sehingga penundaan tidak terasa. |
| Tolerating | T hingga 4T | Respons terasa lambat, tetapi pengguna masih dapat menyelesaikan tugasnya. |
| Frustrated | Lebih besar dari 4T | Respons sangat lambat sehingga pengguna mungkin meninggalkan tugas tersebut. |
Rumus:
Apdex = (Jumlah Satisfied + Jumlah Tolerating / 2) / Total jumlah sampelDi ARMS, Apdex dihitung berdasarkan First Paint Time (FPT) dengan ambang batas default T = 2 detik.
Stabilitas JS
Stabilitas JS mengukur seberapa sering error JavaScript memengaruhi jumlah tampilan halaman (PV).
Jika terjadi setidaknya satu error JS selama siklus PV, siklus tersebut dihitung sebagai sampel error.
Rumus:
Laju error JS = Jumlah sampel error / Total jumlah sampelSampel error mencakup error JS yang dilaporkan secara otomatis maupun error yang dilaporkan melalui API SDK methods.
Kecepatan akses
Kecepatan akses diukur berdasarkan First Paint Time (FPT), yaitu waktu dari saat browser memulai permintaan hingga mulai mengurai batch pertama HTML.
Diagram berikut menunjukkan pemetaan setiap metrik waktu terhadap proses pemuatan halaman yang didefinisikan oleh W3C Navigation Timing API:
Metrik performa halaman web
Metrik ini mencerminkan pengalaman keseluruhan dalam proses pemuatan halaman.
| Field yang dilaporkan | Tipe | Deskripsi | Rumus | Keterangan |
|---|---|---|---|---|
| FMP | number (ms) | First Meaningful Paint. Titik di mana konten utama sudah terlihat. | N/A | N/A |
| FPT | number (ms) | First Paint Time. Waktu dari inisiasi permintaan hingga browser mengurai batch pertama HTML. | responseEnd - fetchStart | N/A |
| TTI | number (ms) | Time to Interactive. Waktu dari inisiasi permintaan hingga browser selesai mengurai HTML, membangun DOM, dan mulai memuat resource. | domInteractive - fetchStart | N/A |
| Ready | number (ms) | Waktu DOM ready. Waktu untuk memuat dan mengurai HTML sepenuhnya menjadi DOM. | domContentLoadEventEnd - fetchStart | Jika skrip JS sinkron dieksekusi pada halaman, waktu eksekusinya = Ready - TTI. |
| Load | number (ms) | Waktu pemuatan halaman penuh. | loadEventStart - fetchStart | Load = FPT + DOM + (Ready - TTI) + Res. |
| FirstByte | number (ms) | Waktu hingga menerima paket data pertama dari server. | responseStart - domainLookupStart | N/A |
Rincian waktu berdasarkan fase
Metrik ini membagi proses pemuatan halaman menjadi fase jaringan dan rendering individual untuk membantu mengidentifikasi bottleneck.
| Field yang dilaporkan | Tipe | Deskripsi | Rumus | Keterangan |
|---|---|---|---|---|
| DNS | number (ms) | Waktu yang dihabiskan untuk pencarian DNS. | domainLookupEnd - domainLookupStart | N/A |
| TCP | number (ms) | Waktu yang dihabiskan untuk menetapkan koneksi TCP. | connectEnd - connectStart | N/A |
| TTFB | number (ms) | Time to First Byte (TTFB). Waktu yang dibutuhkan server untuk merespons setelah menerima permintaan. | responseStart - requestStart | Untuk detail cara ARMS menghitung TTFB, lihat definisi TTFB dari Google. |
| Trans | number (ms) | Waktu yang dihabiskan untuk mentransfer badan respons. | responseEnd - responseStart | N/A |
| DOM | number (ms) | Waktu yang dihabiskan untuk mengurai DOM. | domInteractive - responseEnd | N/A |
| Res | number (ms) | Waktu yang dihabiskan untuk memuat resource sinkron pada halaman. | loadEventStart - domContentLoadedEventEnd | N/A |
| SSL | number (ms) | Waktu yang dihabiskan untuk handshake TLS/SSL. | connectEnd - secureConnectionStart | Hanya berlaku untuk koneksi HTTPS. |
Metrik performa mini program
| Field yang dilaporkan | Tipe | Deskripsi | Rumus | Keterangan |
|---|---|---|---|---|
| FPT | number (ms) | First Paint Time. Waktu dari pemanggilan onLaunch mini program hingga pemanggilan onShow halaman pertama. | onShow (halaman pertama) - onLaunch (app) | N/A |
Laju keberhasilan panggilan API
Laju keberhasilan panggilan API mengukur seberapa sering permintaan API dari halaman Anda berhasil diselesaikan.
Rumus:
Laju keberhasilan panggilan API = Jumlah panggilan API berhasil / Total jumlah panggilan APISampel mencakup permintaan AJAX yang dilaporkan secara otomatis maupun data yang dilaporkan melalui API SDK methods.
Field log
Log ARMS Browser Monitoring berisi field-field berikut. Gunakan nama field ini saat membuat kueri di Simple Log Service atau menyiapkan aturan alert.
Field umum
Field-field ini tersedia di semua tipe log.
| Field | Tipe | Deskripsi |
|---|---|---|
| uid | string | User ID. Identifier yang dapat dicari untuk pengguna. Anda dapat menetapkan nilai kustom. Jika tidak ditetapkan, SDK akan menghasilkan ID secara otomatis dan memperbaruinya setiap enam bulan. |
| username | string | Username. SDK tidak memberikan username secara otomatis. Jika tidak ditetapkan, field ini kosong. |
| release | string | ID versi aplikasi. |
| environment | string | Identifier lingkungan produksi. |
| page | string | URL halaman. |
| sampling | number | Laju pengambilan sampel. |
| tag | string | Tag kustom untuk filtering dan pengelompokan. |
Field panggilan API
| Field | Tipe | Deskripsi |
|---|---|---|
| api | string | URL permintaan API, tanpa parameter kueri. |
| msg | string | String respons yang dikembalikan oleh panggilan API. |
| code | number | Kode status HTTP. |
| time | number (ms) | Waktu yang dikonsumsi oleh panggilan API. |
| success | boolean | Apakah panggilan API berhasil. |
Field error JS
| Field | Tipe | Deskripsi |
|---|---|---|
| msg | string | Pesan error. |
| stack | string | Stack trace. |
| cate | string | Tipe error. Nilai yang valid: EvalError (terkait eval()), RangeError (nilai numerik di luar rentang), ReferenceError (referensi tidak valid), SyntaxError (kesalahan sintaksis), TypeError (tipe variabel atau parameter tidak valid), URIError (parameter tidak valid yang diberikan ke encodeURI() atau decodeURI()), AggregateError (multiple error dari satu operasi seperti Promise.any()), atau tipe error kustom. |
| file | string | File tempat error terjadi. |
| line | number | Nomor baris error. |
| col | number | Nomor kolom error. |
| times | number | Jumlah kemunculan error ini. |
Tipe log
ARMS Browser Monitoring menghasilkan tipe log berikut. Semua tipe log berbagi field umum yang tercantum di atas.
| Tipe log | Type code | Field yang dapat dikueri |
|---|---|---|
| Log PV | PV | Diunggah saat event onload. PV = total jumlah log PV. UV = log PV setelah menghapus duplikat berdasarkan uid. |
| Log performa | Perf | Semua metrik performa (FPT, TTI, Ready, Load, DNS, TCP, TTFB, dan lainnya). |
| Log pemuatan lambat | RES | Sama seperti field log performa. Dicatat ketika waktu pemuatan halaman melebihi 8 detik. |
| Log error JS | Error | Pesan error, URL file error, tipe error. |
| Log API | API | Nama API, pesan respons, kode status HTTP, waktu respons, domain, status keberhasilan, Trace ID. |
| Log SUM | SUM | Pasangan kunci-nilai kustom dengan nama event (misalnya, scroll-count). |
| Log AVG | AVG | Pasangan kunci-nilai kustom dengan nama event (misalnya, scroll-time). |
| Log error resource | ResourceError | Detail error resource. |
| Log kustom | Custom | Field yang ditentukan pengguna untuk pemantauan bisnis kustom. Log kustom hanya dihasilkan saat Anda memanggil API ARMS Agent untuk melaporkan data. Data log kustom tidak ditampilkan di konsol ARMS. Lakukan kueri dan analisis log kustom di konsol Simple Log Service. |