SDK Alibaba Cloud Browser Monitoring menyediakan metode untuk pelaporan data dan modifikasi konfigurasi SDK. Topik ini juga menjelaskan cara membuat beberapa instans SDK.
Metode dalam topik ini
API pelaporan data: api() | error() | sum() | avg() | reportBehavior() | performance()
Metode API: setConfig() | setPage() | setCommonInfo() | addBehavior()
api()
Gunakan api() untuk melaporkan tingkat keberhasilan panggilan API pada suatu halaman.
Secara default, SDK memantau permintaan AJAX pada halaman dan secara otomatis memanggil API ini untuk melaporkan data. Jika halaman Anda menggunakan JSONP atau metode kustom lainnya—seperti SDK client—panggil metode api() secara manual untuk melaporkan data.
Untuk memanggil metode ini, disarankan mengatur parameter disableHook menjadi true dalam konfigurasi SDK. Untuk informasi selengkapnya, lihat disableHook.
Sintaksis api():
__bl.api(api, success, time, code, msg, begin, traceId, sid)Atau
__bl.api({api: xxx, success: xxx, time: xxx, code: xx, msg: xx, begin: xx, traceId: xx, sid: xx})Parameter | Tipe | Deskripsi | Wajib | Nilai default |
api | String | Nama metode. | Ya | Tidak ada |
success | Boolean | Menentukan apakah panggilan berhasil. | Ya | Tidak ada |
time | Number | Jumlah waktu yang dikonsumsi oleh panggilan. | Ya | Tidak ada |
code | String/Number | Kode respons. | Tidak | Tidak ada |
msg | String | Informasi respons. | Tidak | Tidak ada |
begin | Number | Waktu permintaan dimulai. Nilainya berupa timestamp. | Tidak | Tidak ada |
traceId | String | Nilai EagleEye-TraceID. | Tidak | Tidak ada |
sid | String | Nilai EagleEye-SessionID. | Tidak | Tidak ada |
Contoh api():
var begin = Date.now(),
url = '/data/getTodoList.json',
traceId = window.__bl && __bl.getTraceId('EagleEye-TraceID'),
sid = window.__bl && __bl.getSessionId('EagleEye-SessionID');
// Catatan: Sertakan EagleEye-TraceID dan EagleEye-SessionID di header permintaan.
fetch(url, {
headers: {
'EagleEye-TraceID': traceId,
'EagleEye-SessionID': sid
}
}).then(function (result) {
var time = Date.now() - begin;
// Laporkan panggilan API yang berhasil.
window.__bl && __bl.api(url, true, time, result.code, result.msg, begin, traceId, sid);
// lakukan sesuatu...
}).catch(function (error) {
var time = Date.now() - begin;
// Laporkan panggilan API yang gagal.
window.__bl && __bl.api(url, false, time, 'ERROR', error.message, begin, traceId, sid);
// lakukan sesuatu...
});error()
Panggil metode error() untuk melaporkan kesalahan JavaScript atau pengecualian pada halaman yang dipantau. Detailnya dapat dilihat di halaman JS Error Diagnostics di Pemantauan Browser.
Biasanya, SDK mendengarkan kesalahan global pada halaman dan secara otomatis memanggil metode ini untuk melaporkan pengecualian. Namun, detail kesalahan sering kali tidak dapat diakses karena kebijakan asal sama (same-origin policy) browser. Dalam kasus tersebut, Anda harus melaporkan kesalahan secara manual.
Sintaksis error():
__bl.error(error, pos)Parameter | Tipe | Deskripsi | Wajib | Nilai default |
error | Error | Objek kesalahan JS. | Ya | Tidak ada |
pos | Object | Lokasi terjadinya kesalahan. Lokasi ini berisi atribut berikut: pos.filename, pos.lineno, dan pos.colno. | Tidak | Tidak ada |
pos.filename | String | Nama file tempat terjadinya kesalahan. | Tidak | Tidak ada |
pos.lineno | Number | Nomor baris tempat terjadinya kesalahan. | Tidak | Tidak ada |
pos.colno | Number | Nomor kolom tempat terjadinya kesalahan. | Tidak | Tidak ada |
Contoh 1 error(): Dengarkan dan laporkan kesalahan JS pada halaman.
window.addEventListener('error', function (ex) {
// Argumen event biasanya berisi informasi lokasi.
window.__bl && __bl.error(ex.error, ex);
});Contoh 2 error(): Laporkan pesan kesalahan kustom.
window.__bl && __bl.error(new Error('Terjadi kesalahan kustom'), {
filename: 'app.js',
lineno: 10,
colno: 15
});Contoh 3 error(): Laporkan pesan kesalahan dengan tipe kustom.
__bl.error({name:'CustomErrorLog',message:'ini adalah kesalahan'}, {
filename: 'app.js',
lineno: 10,
colno: 15
});sum()
Gunakan metode sum() untuk melaporkan statistik kustom. Metode ini biasanya digunakan untuk menghitung jumlah kejadian suatu event bisnis. Data yang dilaporkan oleh metode sum() dapat dilihat di halaman Statistik Kustom:
Grafik tren event kustom
Jumlah tampilan halaman (PV) dan pengunjung unik (UV) suatu event
Informasi distribusi dimensi
Data akan muncul di halaman Statistik Kustom beberapa menit setelah dilaporkan.
Sintaksis sum():
__bl.sum(key, value)Parameter | Tipe | Deskripsi | Wajib | Nilai default |
key | String | Nama event. | Ya | Tidak ada |
value | Number | Jumlah item yang dilaporkan sekaligus. | Tidak | 1 |
Contoh sum():
__bl.sum('event-a');
__bl.sum('event-b', 3);avg()
Gunakan metode avg() untuk melaporkan data kustom. Metode ini biasanya digunakan untuk menghitung rata-rata jumlah kejadian atau nilai suatu event bisnis tertentu. Data yang dilaporkan oleh avg() dapat dilihat di halaman Statistik Kustom:
Grafik tren event kustom
PV dan UV suatu event
Informasi distribusi dimensi
Sintaksis avg():
__bl.avg(key, value)Parameter | Tipe | Deskripsi | Wajib | Nilai default |
key | String | Nama event. | Ya | Tidak ada |
value | Number | Jumlah item yang dilaporkan. | Tidak | 0 |
Contoh avg():
__bl.avg('event-a', 1);
__bl.avg('event-b', 3);reportBehavior()
Panggil reportBehavior() untuk segera melaporkan antrian perilaku saat ini.
Jika metode ini tidak dipanggil secara manual, antrian perilaku saat ini akan dilaporkan secara otomatis ketika terjadi kesalahan JavaScript. Ukuran maksimum antrian adalah 100. Jika antrian berisi lebih dari 100 catatan perilaku, entri lama akan dibuang dari awal antrian.
Untuk memanggil metode ini, Anda harus mengatur parameter behavior menjadi true dalam konfigurasi SDK.
Sintaksis reportBehavior():
__bl.reportBehavior()Metode reportBehavior() tidak menerima parameter apa pun.
addBehavior()
Panggil metode addBehavior() untuk menambahkan perilaku pengguna kustom ke antrian perilaku saat ini.
SDK memelihara antrian perilaku pengguna dengan panjang maksimum 100 entri. Anda dapat memanggil metode addBehavior() untuk menambahkan perilaku pengguna kustom ke antrian. Ketika terjadi kesalahan JavaScript, SDK akan melaporkan antrian perilaku saat ini dan mengosongkannya.
Jejak perilaku pengguna dapat dilihat di halaman JS Error Diagnostics. Untuk petunjuknya, lihat Gunakan jejak perilaku pengguna untuk mendiagnosis kesalahan JS.
Untuk memanggil metode ini, Anda harus mengatur parameter behavior menjadi true dalam konfigurasi SDK.
Sintaksis addBehavior():
__bl.addBehavior(behavior)Parameter | Tipe | Deskripsi | Wajib | Nilai default |
data | Object | Data perilaku. Parameter ini memiliki dua bidang wajib berikut:
| Ya | Tidak ada |
page | String | Halaman tempat perilaku terjadi. | Tidak | Nilai parameter location.pathname |
Contoh addBehavior():
__bl.addBehavior({
data:{name:'string',message:'string'},
page:'string'
})performance()
Metode ini hanya berlaku untuk klien web.
Panggil metode performance() setelah event onLoad halaman untuk melaporkan metrik performa kustom selain metrik performa default.
Metode ini hanya dapat dipanggil setelah event onLoad terjadi. Jika tidak, pemanggilan akan gagal karena pengumpulan metrik performa default belum lengkap. Metode performance() hanya dapat dipanggil satu kali dalam setiap PV.
Untuk menggunakan metode performance(), lakukan langkah-langkah berikut:
Atur parameter autoSendPerf menjadi false untuk menonaktifkan pelaporan otomatis metrik performa dan menunggu pelaporan manual.
Panggil metode
__bl.performance(Object)untuk melaporkan metrik kustom secara manual. Pemanggilan ini mengirimkan metrik kustom Anda dan metrik performa default yang dikumpulkan oleh SDK.
Contoh 1 performance(): dengan CDN.
window.onload = () => {
setTimeout(()=>{
__bl.performance({cfpt:100, ctti:200, t1:300, …});
}, 1000); // Tunda untuk memastikan semua metrik performa default telah dikumpulkan sebelum pelaporan manual.
};Contoh 2 performance(): dengan paket npm.
const BrowserLogger = require('@arms/js-sdk');
const __bl = BrowserLogger.singleton({pid:'ID situs unik Anda'});
window.onload = () => {
setTimeout(()=>{
__bl.performance({cfpt:100, ctti:200, t1:300, …});
}, 1000);// Tunda untuk memastikan semua metrik performa default telah dikumpulkan sebelum pelaporan manual.
};Deskripsi metrik performa kustom:
cfpt: waktu render pertama kustom
ctti: waktu interaksi pertama kustom
t1 hingga t10: 10 metrik performa kustom
setConfig()
Panggil setConfig() setelah inisialisasi SDK untuk memodifikasi item konfigurasi tertentu. Untuk informasi selengkapnya, lihat Referensi SDK.
Sintaksis setConfig():
__bl.setConfig(next)Parameter | Tipe | Deskripsi | Wajib | Nilai default |
next | Object | Parameter yang ingin Anda modifikasi dan nilai parameter baru. | Ya | Tidak ada |
setPage()
Gunakan setPage() untuk mengatur ulang nama halaman, yang secara default memicu pelaporan PV baru. Metode ini biasanya digunakan untuk Aplikasi Halaman Tunggal (SPA). Untuk informasi selengkapnya, lihat Pelaporan data halaman SPA.
Ketika data PV dilaporkan lagi, data yang ada tidak ditimpa. Entri data baru ditambahkan.
Sintaksis setPage():
__bl.setPage(page, sendPv)Parameter | Tipe | Deskripsi | Wajib | Nilai default |
page | String | Nama halaman baru. | Ya | Tidak ada |
sendPv | Boolean | Menentukan apakah data PV dilaporkan. Secara default, data PV dilaporkan. | Tidak | true |
Contoh setPage():
// Atur nama halaman menjadi hash URL saat ini dan laporkan PV baru.
__bl.setPage(location.hash);
// Atur nama halaman menjadi 'homepage' tanpa melaporkan PV baru.
__bl.setPage('homepage', false);setCommonInfo()
Gunakan setCommonInfo() untuk mengatur bidang umum.
Sintaksis setCommonInfo():
__bl.setCommonInfo(obj)Metode setCommonInfo() menerima parameter objek:
__bl.setCommonInfo({
name: 'xxx',
common: 'xxx'
});Batasi ukuran objek. Objek yang besar dapat menghasilkan permintaan GET yang panjang, yang berpotensi gagal.
Buat beberapa instans
Untuk membuat beberapa instans, gunakan paket npm @arms/js-sdk.
Halaman web
Contoh:
const BrowerLogger = require('@arms/js-sdk'); const bl2 = BrowerLogger.createExtraInstance(props); // Buat instans menggunakan metode createExtraInstance. bl2.custom({ key: 'biz', msg: 'info pesan' });CatatanParameter props bertipe Object. Parameter yang terdapat dalam props pada dasarnya sama dengan parameter dalam konfigurasi SDK.
Instans baru hanya melaporkan informasi kustom:
var props = { pid: 'xxxx', // ID situs tempat instans baru melaporkan data. region: 'cn', page: '', uid: '' }
Halaman Weex
Contoh:
const WeexLogger = require('@arms/js-sdk/weex'); const wl2 = WeexLogger.createExtraInstance(props); // Buat instans menggunakan metode createExtraInstance. wl2.custom({ key: 'biz', msg: 'info pesan' });CatatanParameter props bertipe Object. Parameter yang terdapat dalam props pada dasarnya sama dengan parameter dalam konfigurasi SDK.
Instans baru hanya melaporkan informasi kustom:
var props = { pid: 'xxxx', // ID situs tempat instans baru melaporkan data. region: 'cn', sendRequest: function(data, imgUrl) { // Metode untuk mengirim log menggunakan permintaan GET. }, postRequest: function(data, imgUrl) { // Metode untuk mengirim log menggunakan permintaan POST. } }
Program mini
Contoh: Pilih jalur impor yang sesuai dengan jenis program mini Anda, seperti program mini DingTalk atau program mini Alipay. Parameter region menentukan lokasi pelaporan log: atur ke cn untuk melaporkan log ke server di Tiongkok, atau ke sg untuk melaporkan log ke server di Singapura. Jika Anda tidak menentukan parameter ini, log akan dilaporkan ke server di Tiongkok.
import MiniProgramLogger from '@arms/js-sdk/miniapp'; // Pilih jalur yang sesuai dengan jenis program mini Anda, seperti program mini DingTalk atau program mini Alipay.
const MiniInstance = MiniProgramLogger.createExtraInstance({
pid: 'xxxinstance',
uid: 'userxxx', // ID pengguna untuk mengumpulkan data UV.
region: 'cn', // Wilayah tempat log dilaporkan. Atur nilai ke `cn` untuk Tiongkok atau `sg` untuk Singapura. Default ke `cn` jika tidak ditentukan.
// Untuk pemantauan program mini dasar, Anda harus meneruskan metode RPC secara manual. Implementasikan metode ini sesuai kebutuhan bisnis Anda.
sendRequest: (url, resData) => {
// Metode untuk mengirim data.
}
});