Real User Monitoring (RUM) SDK untuk web dan HTML5 dari Application Real-Time Monitoring Service (ARMS) menyediakan berbagai konfigurasi kustom untuk memenuhi kebutuhan bisnis Anda. Topik ini menjelaskan konfigurasi SDK umum untuk aplikasi web dan HTML5 sebagai referensi.
Parameter SDK
Parameter | Tipe | Deskripsi | Diperlukan | Nilai default |
pid | String | ID aplikasi. | Ya | - |
endpoint | String | Alamat ke mana data pemantauan dilaporkan. | Ya | - |
env | String | Lingkungan aplikasi. Nilai yang valid:
| Tidak | prod |
version | String | Versi aplikasi. | Tidak | - |
user | Object | Pengaturan pengguna. Secara default, ID pengguna (user.id) dibuat oleh RUM SDK. | Tidak | - |
spaMode | String | Menentukan apakah akan memantau peristiwa halaman dan melaporkan tampilan halaman lagi. Parameter ini berlaku untuk aplikasi satu halaman (SPA). Nilai yang valid:
| Tidak | false |
beforeReport | Fungsi | Fungsi yang dipanggil sebelum melaporkan data untuk memodifikasi atau memblokir data yang dilaporkan. | Tidak | - |
reportConfig | Object | Pengaturan pelaporan data. Untuk informasi lebih lanjut, lihat bagian parameter reportConfig. | Tidak | - |
sessionConfig | Object | Untuk informasi lebih lanjut tentang konfigurasi sesi, seperti pengambilan sampel dan penyimpanan, lihat bagian SessionConfig. | Tidak | - |
collectors | Object | Pengaturan Collector. | Tidak | - |
parseViewName | Fungsi | Fungsi yang digunakan untuk mengurai nama tampilan (view.name). Parameter input adalah URL halaman. | Tidak | - |
parseResourceName | Fungsi | Fungsi yang digunakan untuk mengurai nama sumber daya (resource.name). Parameter input adalah URL sumber daya. | Tidak | - |
evaluateApi | Fungsi | Fungsi yang digunakan untuk mengurai peristiwa API. Untuk informasi lebih lanjut, lihat bagian parameter EvaluateApi. | Tidak | - |
filters | Object | Pengaturan filter peristiwa. Untuk informasi lebih lanjut, lihat bagian parameter filters. | Tidak | - |
whiteScreen | Object | Fungsi yang digunakan untuk mengonfigurasi pemantauan layar putih. Untuk informasi lebih lanjut, lihat bagian parameter WhiteScreen. | Tidak | - |
properties | Object | Properti kustom yang berlaku untuk semua peristiwa. Untuk informasi lebih lanjut, lihat bagian parameter properties. | Tidak | - |
remoteConfig | Object | Konfigurasi dinamis. Untuk informasi lebih lanjut, lihat bagian Konfigurasi Dinamis. | Tidak | - |
Jika Anda menggunakan Content Delivery Network (CDN) Alibaba Cloud untuk mengakses aplikasi, pastikan bahwa aplikasi berada di namespace global RumSDK.default.
const ArmsRum = window.RumSDK.default;
// Sebelum menggunakan RUM SDK, pastikan bahwa SDK telah dimuat.
// Jika konfigurasi __rum tidak didefinisikan sebelum SDK dimuat, Anda dapat menginisialisasi konfigurasi di sini.
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
});
// Inisialisasi melalui paket NPM atau pemuatan CDN adalah sama.
ArmsRum.setConfig('env', 'pre');
Parameter Pengguna
Parameter | Tipe | Deskripsi | Diperlukan | Nilai default |
id | String | ID pengguna, yang dibuat oleh SDK dan tidak dapat diubah. | Tidak | - |
tags | String | Tag. | Tidak | - |
name | String | Nama pengguna. | Tidak | - |
Contoh
Untuk mengaitkan pengguna dengan sistem akun bisnis Anda, gunakan user.name atau user.tags. Nilai user.id dihasilkan secara otomatis oleh SDK dan tidak dapat diubah. Menimpa user.id akan memengaruhi perhitungan UV.
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
user: {
name: 'your user.name',
tags: 'your user.tags',
},
});
parameter reportConfig
Parameter | Tipe | Deskripsi | Diperlukan | Nilai default |
flushTime | Number | Interval waktu pelaporan data. Nilai valid: 0 hingga 10000. | Tidak | 3000 |
maxEventCount | Number | Jumlah maksimum entri data yang dilaporkan dalam satu waktu. Nilai valid: 1 hingga 100. | Tidak | 20 |
Contoh
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
reportConfig: {
flushTime: 0, // Tentukan bahwa data dilaporkan secara langsung.
maxEventCount: 50, // Tentukan jumlah maksimum entri data yang dilaporkan dalam satu waktu.
},
});
parameter sessionConfig
Parameter | Tipe | Deskripsi | Diperlukan | Nilai default |
sampleRate | Number | Tingkat pengambilan sampel. Nilai valid: 0 hingga 1. Nilai 0,5 menentukan tingkat pengambilan sampel 50%. | Tidak | 1 |
maxDuration | Number | Durasi maksimum sesi. Satuan: milidetik. Nilai default: 86400000 (24 jam). | Tidak | 86400000 |
overtime | Number | Periode timeout sesi. Satuan: milidetik. Nilai default: 3600000 (1 jam). | Tidak | 3600000 |
storage | String | Lokasi penyimpanan data terkait sesi. Nilai valid:
| Tidak | localStorage |
Parameter storage menyimpan user.id dan informasi sesi:
_arms_uid: ID pengguna unik (user.id).
_arms_session: informasi sesi semantik.
sessionId: ID sesi unik.
sampled: menentukan apakah pengambilan sampel dipicu.
startTime: timestamp awal sesi.
lastTime: timestamp ketika sesi terakhir aktif.
`${sessionId}-${sampled}-${startTime}-${lastTime}`Contoh
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
sessionConfig: {
sampleRate: 0.5, // Tingkat pengambilan sampel adalah 50%.
maxDuration: 86400000,
overtime: 3600000,
storage: 'cookie',
},
});
Parameter Kolektor
SDK menggunakan kolektor, seperti api dan static Resource, untuk mengumpulkan data pemantauan halaman.
Parameter | Tipe | Deskripsi | Diperlukan | Nilai default |
perf | Boolean | Object | Melacak data performa aplikasi. | Tidak | true |
webvitals | Boolean | Object | Melacak data Web Vitals aplikasi. | Tidak | true |
api | Boolean | Object | Melacak permintaan API. | Tidak | true |
staticResource | Boolean | Object | Melacak permintaan sumber daya statis. | Tidak | true |
consoleError | Boolean | Object | Melacak kesalahan Console. | Tidak | true |
jsError | Boolean | Object | Melacak kesalahan JavaScript. | Tidak | true |
action | Boolean | Object | Melacak perilaku pengguna. | Tidak | true |
Contoh
Dalam contoh berikut, pengumpulan data interaksi pengguna dinonaktifkan.
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
collectors: {
action: false,
},
});
parameter EvaluateApi
Fungsi evaluateApi menyediakan penguraian kustom untuk peristiwa XMLHttpRequest dan fetch.
Parameter | Tipe | Deskripsi |
options | Object | Parameter permintaan, termasuk url, headers, dan data. Parameter bergantung pada metode permintaan. |
response | Object | Badan respons dari permintaan. |
error | Error | Kesalahan. Parameter ini opsional dan hanya tersedia ketika permintaan gagal. |
Fungsi ini dapat dipanggil secara asinkron. Promise<IApiBaseAttr> dikembalikan. Tabel berikut menjelaskan IApiBaseAttr.
Parameter | Tipe | Deskripsi | Diperlukan |
name | String | Nama API, yang umumnya merupakan URL terkonvergensi dan dapat memiliki panjang hingga 1.000 karakter. Misalkan URL adalah Penting Field ini mengambil prioritas lebih tinggi daripada apa yang dikembalikan oleh fungsi parseResourceName. | Tidak |
message | String | Sebuah string singkat yang digunakan untuk mendeskripsikan API, yang dapat memiliki panjang hingga 1.000 karakter. | Tidak |
success | Number | Menunjukkan apakah permintaan berhasil. Nilai valid:
| Tidak |
duration | Number | Total durasi API. | Tidak |
status_code | Number | String | Kode status. | Tidak |
snapshots | String | Snapshot. Catatan Snapshot menyimpan informasi tentang reqHeaders, params, dan resHeaders. Anda dapat menyesuaikan field yang menyusun snapshot. Snapshot terutama digunakan untuk mendiagnosis pengecualian. Snapshot tidak dapat dikonfigurasi sebagai kondisi filter untuk query atau agregasi karena tidak memiliki indeks. Hanya bisa berupa string dengan maksimal 5.000 karakter. | Tidak |
Contoh
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
evaluateApi: async (options, response, error) => {
let respText = '';
// Periksa hasil permintaan.
if (response && response.text) {
respText = await response.text();
}
// Field yang dikembalikan akan menimpa konten default. Jika field tidak dikembalikan, konten default digunakan.
return {
name: 'my-custom-api',
success: error ? 0 : 1,
// Opsional.
snapshots: JSON.stringify({
params: 'page=1&size=10', // Parameter input.
response: respText.substring(0, 2000), // Nilai yang dikembalikan.
reqHeaders: '', // Header permintaan.
resHeaders: '', // Header respons.
}),
properties: {
prop_msg: 'custom msg',
prop_num: 1,
},
};
},
});
parameter filter
Parameter filters mengecualikan peristiwa sumber daya atau pengecualian yang tidak perlu dilaporkan.
Parameter | Tipe | Deskripsi | Diperlukan |
resource | MatchOption | MatchOption[] | Mengecualikan peristiwa terkait sumber daya statis dan API seperti XMLHttpRequest atau fetch yang tidak perlu dilaporkan. | Tidak |
exception | MatchOption | MatchOption[] | Mengecualikan peristiwa pengecualian yang tidak perlu dilaporkan. | Tidak |
MatchOption
type MatchOption = string | RegExp | ((value: string) => boolean);string: cocokkan URL apa pun yang dimulai dengan nilai yang ditentukan. Contoh:
https://api.aliyun.com. Dalam hal ini,https://api.aliyun.com/v1/resourcedapat dicocokkan.RegExp: tentukan ekspresi reguler dan URL.
function: gunakan fungsi untuk menentukan apakah URL cocok. Jika true dikembalikan, URL cocok.
Ketika input adalah MatchOption[], kondisi sebelumnya dievaluasi secara berurutan, dan akan dikecualikan jika salah satu kondisi terpenuhi.
Contoh
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
filters: {
// Kecualikan peristiwa pengecualian.
exception: [
'Test error', // Pesan kesalahan yang dimulai dengan 'Test error'.
/^ Script error\.?$/, // Pesan kesalahan yang cocok dengan ekspresi reguler.
(msg) => {
return msg.includes('example-error');
},
],
// Kecualikan peristiwa sumber daya atau API.
resource: [
'https://example.com/', // Sumber daya yang dimulai dengan 'https://example.com/'
/localhost/i,
(url) => {
return url.includes('example-resource');
},
],
},
});
parameter whiteScreen
Parameter whiteScreen hanya didukung oleh browser, seperti Chrome 40 dan IE 9+.
Parameter | Tipe | Deskripsi |
detectionRules |
| Tentukan satu atau beberapa aturan untuk mendeteksi browser berdasarkan urutan konfigurasi aturan dan penundaan. |
DetectionRule
Parameter | Tipe | Diperlukan | Deskripsi | Nilai default |
target |
| Ya | Tentukan elemen yang akan dideteksi. Deteksi dilakukan di area yang sesuai dengan pemilih. | Tidak ada |
test_when |
| Ya | Tentukan peristiwa yang dapat memicu deteksi. Nilai valid:
| Tidak ada |
delay |
| Tidak |
|
|
tester |
| Ya | Tentukan metode deteksi. Nilai valid:
| Tidak ada |
ignoreUrlList |
| Tidak | Daftar URL halaman yang tidak perlu dideteksi. |
|
configOptions |
| Tidak | Opsi parameter | Lihat bagian |
CustomTesterResult:
type CustomTesterResult = {
/**
* Menunjukkan apakah konten ada. `true` menunjukkan bahwa konten ada. Jika tidak, layar putih telah terjadi.
*/
hasContent: boolean;
/**
* Pesan kesalahan
*/
message?: string;
/**
* Data snapshot dari pengecualian
*/
snapshot?: Record<string, any>;
}ConfigOptions
Parameter ConfigOptions hanya tersedia untuk metode deteksi terkait.
Parameter | Tipe | Metode terkait | Deskripsi | Nilai default |
colorRange |
|
| Sekumpulan warna yang dianggap sebagai layar putih. Ini menentukan apakah blok piksel saat ini "sepenuhnya putih" selama perbandingan piksel. Format: |
|
fillColor |
|
| Warna isian. Selama pengambilan tangkapan layar, pengisian blok warna diterapkan pada elemen seperti gambar, video, canvas, SVG, dan iframe. Warna isian tidak boleh salah satu warna yang dikonfigurasi oleh parameter |
|
horizontalOffset |
|
| Ofset horizontal tepi kiri area deteksi layar putih relatif terhadap tepi kiri elemen target. Digunakan untuk menyaring menu kiri elemen target. |
|
verticalOffset |
|
| Ofset vertikal tepi atas area deteksi layar putih relatif terhadap tepi atas elemen target. Digunakan untuk menyaring bilah atas elemen target. |
|
pixels |
|
| Ukuran blok piksel yang digunakan untuk deteksi layar putih. Ukuran setiap blok adalah |
|
threshold |
|
| Ambang batas laju layar putih. Jika laju layar putih melebihi ambang batas, layar putih telah terjadi. |
|
dpr |
|
| Rasio penskalaan gambar snapshot. |
|
ignoreElements |
|
| Pemilih Cascading Style Sheets (CSS) dari elemen yang akan diabaikan saat mengambil tangkapan layar untuk deteksi. |
|
sampleMethod |
|
| Metode pengambilan sampel. Nilai valid:
|
|
checkPoints |
|
| Jumlah titik sampel radial.
|
|
whiteBoxElements |
|
| Daftar pemilih CSS untuk elemen layar putih. Ketika elemen DOM tingkat atas pada titik sampel cocok dengan salah satu pemilih ini, jumlah layar putih bertambah. |
|
debug |
|
| Menentukan apakah mode debug diaktifkan. Dalam mode debug, informasi deteksi yang dicetak ditampilkan di alat pengembang. |
|
Contoh
SCREENSHOT
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
whiteScreen: {
detectionRules: [{
target: '#root',
test_when: ['LOAD', 'ERROR', 'ROUTE_CHANGE', 'LEAVE'],
delay: 5000,
tester: 'SCREENSHOT',
configOptions: {
colorRange: ['rgb(255, 255, 255)', 'rgb(0, 0, 0)'],
threshold: 0.9,
pixels: 10,
horizontalOffset: 210,
verticalOffset: 50,
},
}],
},
});
SAMPLE
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
whiteScreen: {
detectionRules: [{
target: '#root',
test_when: ['LOAD', 'ERROR', 'ROUTE_CHANGE', 'LEAVE'],
delay: 5000,
tester: 'SAMPLE',
configOptions: {
sampleMethod: 2,
checkPoints: 10,
threshold: 0.9,
whiteBoxElements: ['.el-skeleton'],
},
}],
},
});
CUSTOM
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
whiteScreen: {
detectionRules: [{
target: '#root',
test_when: ['LOAD', 'ERROR', 'ROUTE_CHANGE', 'LEAVE'],
delay: 5000,
tester: async (element) => {
// Fungsi deteksi kustom
return {
hasContent: false,
message: 'Pesan kesalahan kustom',
snapshot: {
// Pasangan nilai kunci kustom
checkPoints: 100,
rate: 0.99,
checkdata: '......',
},
};
},
}],
},
});
parameter properti
Properti yang disediakan oleh RUM dapat dikonfigurasi untuk semua peristiwa.
Parameter | Tipe | Deskripsi | Diperlukan |
[key: string] | String | Number |
| Tidak |
Anda dapat menggunakan evaluateApi, sendCustom, sendException, dan sendResource untuk menambahkan properti ke suatu peristiwa. Properti tersebut hanya berlaku untuk peristiwa tersebut.
Properti global dan properti peristiwa digabungkan saat disimpan. Properti peristiwa memiliki prioritas lebih tinggi daripada properti global. Jika kunci yang sama digunakan saat penggabungan, properti peristiwa akan menimpa properti global. Jumlah pasangan kunci-nilai tidak boleh melebihi 20 setelah penggabungan. Jika jumlahnya melebihi 20, pasangan tersebut diurutkan berdasarkan kunci dan yang berlebih akan dihapus.
Contoh
Properti yang dikonfigurasi secara global dilampirkan ke semua peristiwa yang dilaporkan.
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
properties: {
prop_string: 'xx',
prop_number: 2,
// Jika panjang kunci atau nilai melebihi batas, bagian yang berlebih akan dihapus.
more_than_50_key_limit_012345678901234567890123456789: 'yy',
more_than_2000_value_limit: new Array(2003).join('1'),
// Pasangan kunci-nilai berikut yang tidak valid akan dihapus.
prop_null: null,
prop_undefined: undefined,
prop_bool: true,
},
});
Konfigurasi Dinamis
RUM mendukung pengiriman dinamis konfigurasi koleksi dan pelaporan SDK. Konfigurasi dinamis ini dimuat oleh SDK selama pemuatan awal aplikasi dan akan menimpa konfigurasi statis yang ditetapkan selama inisialisasi SDK. Implementasinya terdiri dari dua bagian: konsol dan SDK.
Konfigurasi Konsol
Sebelum mengaktifkan konfigurasi dinamis, klik Application List, masuk ke halaman detail aplikasi, dan pilih Pengaturan Aplikasi > Konfigurasi SDK untuk mengonfigurasinya di konsol ARMS.
Setelah menyelesaikan konfigurasi dan pengujian, klik Konfirmasi Pembaruan Konfigurasi Dinamis untuk mendorong dan menyimpan konfigurasi di server OSS jarak jauh.
Konfigurasi SDK
Untuk mengaktifkan pengiriman konfigurasi dinamis, Anda juga perlu menambahkan bidang remoteConfig dalam konfigurasi inisialisasi SDK. Saat inisialisasi, SDK akan mengambil konfigurasi jarak jauh dari OSS berdasarkan bidang ini dan memperbarui fitur seperti instrumentasi dan pelaporan data sesuai dengan itu.
Inisialisasi SDK melalui CDN:
window.__rum = {
pid: "your app id",
endpoint: "your endpoint",
remoteConfig: {
// Tentukan wilayah tempat aplikasi web di-hosting, misalnya Singapura adalah ap-southeast-1.
region: "cn-hangzhou"
}
};
// Muat SDK melalui CDN
<script async src="https://xxid-sdk.rum.aliyuncs.com/v2/browser-sdk.js"></script>
Inisialisasi SDK melalui paket NPM:
import ArmsRum from '@arms/rum-browser';
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
remoteConfig: {
// Tentukan wilayah tempat aplikasi web di-hosting, misalnya Singapura adalah ap-southeast-1.
region: "cn-hangzhou"
}
});
Setelah SDK mengambil konfigurasi jarak jauh, konfigurasi tersebut tidak hanya diterapkan segera tetapi juga disimpan secara lokal, sehingga SDK dapat memprioritaskan menggunakan konfigurasi yang di-cache pada inisialisasi berikutnya.
Catatan: Jika SDK diimpor sebagai paket NPM atau melalui CDN dengan versi yang ditentukan, pastikan versinya 0.0.37 atau lebih tinggi untuk mengaktifkan konfigurasi dinamis.
Parameter Lainnya
SDK RUM memungkinkan Anda mengonfigurasi properti umum yang diselesaikan berdasarkan alamat IP dan UserAgent. Bidang yang dikonfigurasi secara proaktif memiliki prioritas lebih tinggi daripada bidang yang diselesaikan secara otomatis.
Parameter | Tipe | Deskripsi | Diperlukan |
device | Object | Informasi perangkat. | Tidak |
os | Object | Informasi sistem dan kontainer. | Tidak |
geo | Object | Informasi geolokasi. | Tidak |
isp | Object | Informasi penyedia layanan internet. | Tidak |
net | Object | Informasi jaringan. | Tidak |
Untuk informasi lebih lanjut tentang item konfigurasi terkait bidang di atas, lihat bagian Properti Umum dari topik "Data Log".
Contoh
ArmsRum.init({
pid: "your app id",
endpoint: "your endpoint",
geo: {
country: 'info negara kustom Anda',
city: 'info kota kustom Anda',
},
});
API SDK
SDK RUM menyediakan API untuk memodifikasi dan melaporkan data kustom serta memodifikasi konfigurasi SDK secara dinamis.
getConfig
Gunakan fungsi ini untuk mendapatkan konfigurasi SDK.
setConfig
Gunakan fungsi ini untuk memodifikasi konfigurasi SDK.
// Tetapkan jenis lingkungan.
ArmsRum.setConfig('env', 'pre');
// Berikut ini mungkin tertimpa.
const config = ArmsRum.getConfig();
ArmsRum.setConfig({
...config,
version: '1.0.0',
env: 'pre',
});sendCustom
Untuk melaporkan peristiwa kustom, Anda harus menentukan field type dan name. Tabel berikut menjelaskan parameter terkait pelaporan data. Anda perlu mendefinisikan semantik bisnis.
Parameter | Tipe | Deskripsi | Diperlukan |
type | String | Jenis data. | Ya |
name | String | Nama data. | Ya |
group | String | Grup tempat data termasuk. | Tidak |
value | Number | Nilai data. | Tidak |
properties | Object | Properti kustom. | Tidak |
ArmsRUM.sendCustom({
// Diperlukan.
type: 'CustomEvnetType1',
name: 'customEventName2',
// Opsional.
group: 'customEventGroup3',
value: 111.11,
properties: {
prop_msg: 'pesan kustom',
prop_num: 1,
},
});
sendException
Untuk melaporkan data pengecualian kustom, Anda harus menentukan field name dan message.
Parameter | Tipe | Deskripsi | Diperlukan |
name | String | Nama pengecualian. | Ya |
message | String | Informasi pengecualian. | Ya |
file | String | File tempat pengecualian terjadi. | Tidak |
stack | String | Informasi tumpukan tentang pengecualian. | Tidak |
line | Number | Baris tempat pengecualian terjadi. | Tidak |
column | Number | Kolom tempat pengecualian terjadi. | Tidak |
properties | Object | Properti kustom. | Tidak |
ArmsRum.sendException({
// Diperlukan.
name: 'customErrorName',
message: 'pesan kesalahan kustom',
// Opsional.
file: 'nama file pengecualian kustom',
stack: 'error.stack pengecualian kustom',
line: 1,
column: 2,
properties: {
prop_msg: 'pesan kustom',
prop_num: 1,
},
});
sendResource
Untuk melaporkan data resource kustom, Anda harus menentukan nama, tipe, dan durasi.
Parameter | Tipe | Deskripsi | Diperlukan |
name | String | Nama dari sumber daya. | Ya |
type | String | Tipe dari sumber daya. Contoh: css, javascript, xmlhttprequest, fetch, api, image, dan font. | Ya |
durasi | String | Waktu respons. | Ya |
success | Angka | Menunjukkan apakah permintaan berhasil. Nilai yang valid:
| Tidak |
method | String | Metode permintaan. Nilai yang valid: | Tidak |
status_code | Angka | String | Kode status. | Tidak |
message | String | Pesan yang dikembalikan. | Tidak |
url | String | URL permintaan. | Tidak |
trace_id | String | ID jejak. | Tidak |
properties | Objek | Properti kustom. | Tidak |
ArmsRum.sendResource({
// Diperlukan.
name: 'getListByPage',
message: 'success',
duration: 800,
// Opsional.
url: 'https://www.aliyun.com/data/getListByPage',
properties: {
prop_msg: 'pesan kustom',
prop_num: 1,
},
});