El SDK de Browser Monitoring de Alibaba Cloud proporciona métodos para el reporte de datos y para modificar la configuración del SDK. Este tema también describe cómo crear varias instancias del SDK.
Métodos en este tema
API de reporte de datos: api() | error() | sum() | avg() | reportBehavior() | performance()
API de métodos: setConfig() | setPage() | setCommonInfo() | addBehavior()
api()
Utilice api() para reportar la tasa de éxito de las llamadas a API en una página.
De forma predeterminada, el SDK monitorea las solicitudes AJAX en la página y llama a esta API para reportar los datos. Si su página solicita datos mediante JSONP u otros métodos personalizados, como un SDK de cliente, llame al método api() para reportar los datos manualmente.
Para llamar a este método, se recomienda establecer el parámetro disableHook en true dentro de la configuración del SDK. Para obtener más información, consulte disableHook.
Sintaxis de api():
__bl.api(api, success, time, code, msg, begin, traceId, sid)
O bien
__bl.api({api: xxx, success: xxx, time: xxx, code: xx, msg: xx, begin: xx, traceId: xx, sid: xx})
|
Parámetro |
Tipo |
Descripción |
Obligatorio |
Valor predeterminado |
|
api |
String |
El nombre del método. |
Sí |
Ninguna |
|
success |
Boolean |
Especifica si la llamada fue exitosa. |
Sí |
Ninguna |
|
time |
Number |
La cantidad de tiempo consumido por la llamada. |
Sí |
Ninguna |
|
code |
String/Number |
El código de retorno. |
No |
Ninguna |
|
msg |
String |
La información de respuesta. |
No |
Ninguna |
|
begin |
Number |
El momento en que se inicia la solicitud. El valor es una marca de tiempo. |
No |
Ninguna |
|
traceId |
String |
El valor de EagleEye-TraceID. |
No |
Ninguna |
|
sid |
String |
El valor de EagleEye-SessionID. |
No |
Ninguna |
Ejemplo de api():
var begin = Date.now(),
url = '/data/getTodoList.json',
traceId = window.__bl && __bl.getTraceId('EagleEye-TraceID'),
sid = window.__bl && __bl.getSessionId('EagleEye-SessionID');
// Note: Include EagleEye-TraceID and EagleEye-SessionID in the request header.
fetch(url, {
headers: {
'EagleEye-TraceID': traceId,
'EagleEye-SessionID': sid
}
}).then(function (result) {
var time = Date.now() - begin;
// Report a successful API call.
window.__bl && __bl.api(url, true, time, result.code, result.msg, begin, traceId, sid);
// do something...
}).catch(function (error) {
var time = Date.now() - begin;
// Report a failed API call.
window.__bl && __bl.api(url, false, time, 'ERROR', error.message, begin, traceId, sid);
// do something...
});
error()
Llame al método error() para reportar errores o excepciones de JS en las páginas monitoreadas. Puede consultar los detalles en la página JS Error Diagnostics de Browser Monitoring.
Por lo general, el SDK escucha los errores globales en la página y llama a este método para reportar excepciones. Sin embargo, los detalles del error suelen ser inaccesibles debido a la política de mismo origen del navegador. En este caso, debe reportar dichos errores manualmente.
Sintaxis de error():
__bl.error(error, pos)
|
Parámetro |
Tipo |
Descripción |
Obligatorio |
Valor predeterminado |
|
error |
Error |
El objeto de error de JS. |
Sí |
Ninguna |
|
pos |
Object |
La ubicación donde ocurre el error. La ubicación contiene los siguientes atributos: pos.filename, pos.lineno y pos.colno. |
No |
Ninguna |
|
pos.filename |
String |
El nombre del archivo donde ocurre el error. |
No |
Ninguna |
|
pos.lineno |
Number |
El número de línea donde ocurre el error. |
No |
Ninguna |
|
pos.colno |
Number |
El número de columna donde ocurre el error. |
No |
Ninguna |
Ejemplo 1 de error(): Escuchar y reportar errores de JS en la página.
window.addEventListener('error', function (ex) {
// The event argument usually contains location information.
window.__bl && __bl.error(ex.error, ex);
});
Ejemplo 2 de error(): Reportar un mensaje de error personalizado.
window.__bl && __bl.error(new Error('A custom error occurred'), {
filename: 'app.js',
lineno: 10,
colno: 15
});
Ejemplo 3 de error(): Reportar un mensaje de error de un tipo personalizado.
__bl.error({name:'CustomErrorLog',message:'this is an error'}, {
filename: 'app.js',
lineno: 10,
colno: 15
});
sum()
Utilice el método sum() para reportar estadísticas personalizadas. Este método se usa normalmente para contar las ocurrencias de un evento de negocio. Puede consultar los datos reportados por el método sum() en la página Custom Statistics:
Gráfico de tendencias de eventos personalizados
Vistas de página (PV) y visitantes únicos (UV) de un evento
Información de distribución por dimensiones
Después de reportar los datos, estos aparecen en la página Custom Statistics unos minutos después.
Sintaxis de sum():
__bl.sum(key, value)
|
Parámetro |
Tipo |
Descripción |
Obligatorio |
Valor predeterminado |
|
key |
String |
El nombre del evento. |
Sí |
Ninguna |
|
value |
Number |
El número de elementos reportados a la vez. |
No |
1 |
Ejemplo de sum():
__bl.sum('event-a');
__bl.sum('event-b', 3);
avg()
Utilice el método avg() para reportar datos personalizados. Este método se usa normalmente para calcular el promedio de ocurrencias o el valor de un evento de negocio específico. Puede consultar los datos reportados por avg() en la página Custom Statistics:
Gráfico de tendencias de eventos personalizados
PV y UV de un evento
Información de distribución por dimensiones
Sintaxis de avg():
__bl.avg(key, value)
|
Parámetro |
Tipo |
Descripción |
Obligatorio |
Valor predeterminado |
|
key |
String |
El nombre del evento. |
Sí |
Ninguna |
|
value |
Number |
El número de elementos reportados. |
No |
0 |
Ejemplo de avg():
__bl.avg('event-a', 1);
__bl.avg('event-b', 3);
reportBehavior()
Llame a reportBehavior() para reportar inmediatamente la cola de comportamiento actual.
Si no llama manualmente a este método, cuando ocurre un error de JS, la cola de comportamiento actual se reporta automáticamente. El tamaño máximo de una cola es 100. Si la cola contiene más de 100 registros de comportamiento, los registros se descartan desde el inicio de la cola.
Para llamar a este método, debe establecer el parámetro behavior en true dentro de la configuración del SDK.
Sintaxis de reportBehavior():
__bl.reportBehavior()
El método reportBehavior() no acepta ningún parámetro.
addBehavior()
Llame al método addBehavior() para agregar un comportamiento de usuario personalizado a la cola de comportamiento actual.
El SDK mantiene una cola de comportamiento de usuario con una longitud máxima de 100 entradas. Puede llamar al método addBehavior() para agregar un comportamiento de usuario personalizado a la cola. Cuando ocurre un error de JS, el SDK reporta la cola de comportamiento actual y la vacía.
Puede consultar el rastreo del comportamiento del usuario en la página JS Error Diagnostics. Para obtener instrucciones, consulte Use user behavior traceback to diagnose JS errors.
Para llamar a este método, debe establecer el parámetro behavior en true dentro de la configuración del SDK.
Sintaxis de addBehavior():
__bl.addBehavior(behavior)
Parámetro | Tipo | Descripción | Obligatorio | Valor predeterminado |
data | Object | Los datos de comportamiento. Este parámetro tiene los siguientes dos campos obligatorios:
| Sí | Ninguna |
page | String | La página donde ocurre el comportamiento. | No | Valor del parámetro location.pathname |
Ejemplo de addBehavior():
__bl.addBehavior({
data:{name:'string',message:'string'},
page:'string'
})
performance()
Este método solo es aplicable a clientes web.
Llame al método performance() después del evento onLoad de la página para reportar métricas de rendimiento personalizadas además de las métricas de rendimiento predeterminadas.
Solo puede llamar a este método después de que ocurra el evento onLoad. De lo contrario, la llamada fallará porque la recopilación de métricas de rendimiento predeterminadas estará incompleta. El método performance() solo se puede llamar una vez durante cada PV.
Para usar el método performance(), realice los siguientes pasos:
Establezca el parámetro autoSendPerf en false para deshabilitar el reporte automático de métricas de rendimiento y esperar el reporte manual.
Llame al método
__bl.performance(Object)para reportar manualmente las métricas personalizadas. Esta llamada envía tanto sus métricas personalizadas como las métricas de rendimiento predeterminadas recopiladas por el SDK.
Ejemplo 1 de performance(): con un CDN.
window.onload = () => {
setTimeout(()=>{
__bl.performance({cfpt:100, ctti:200, t1:300, …});
}, 1000); // Delay to ensure all default performance metrics are collected before manual reporting.
};
Ejemplo 2 de performance(): con un paquete npm.
const BrowserLogger = require('@arms/js-sdk');
const __bl = BrowserLogger.singleton({pid:'Your unique site ID'});
window.onload = () => {
setTimeout(()=>{
__bl.performance({cfpt:100, ctti:200, t1:300, …});
}, 1000);// Delay to ensure all default performance metrics are collected before manual reporting.
};
Descripciones de las métricas de rendimiento personalizadas:
cfpt: el tiempo personalizado de primera pintura
ctti: el primer tiempo personalizado hasta la interacción
t1 a t10: 10 métricas de rendimiento personalizadas
setConfig()
Llame a setConfig() después de la inicialización del SDK para modificar elementos de configuración específicos. Para obtener más información, consulte SDK reference.
Sintaxis de setConfig():
__bl.setConfig(next)
|
Parámetro |
Tipo |
Descripción |
Obligatorio |
Valor predeterminado |
|
next |
Object |
El parámetro que desea modificar y el nuevo valor del parámetro. |
Sí |
Ninguna |
setPage()
Utilice setPage() para restablecer el nombre de la página, lo que de forma predeterminada desencadena un nuevo reporte de PV. Este método se usa normalmente para aplicaciones de una sola página (SPA). Para obtener más información, consulte Page data reporting of SPAs.
Cuando los datos de PV se reportan nuevamente, los datos existentes no se sobrescriben. Se agrega una nueva entrada de datos.
Sintaxis de setPage():
__bl.setPage(page, sendPv)
|
Parámetro |
Tipo |
Descripción |
Obligatorio |
Valor predeterminado |
|
page |
String |
El nuevo nombre de la página. |
Sí |
Ninguna |
|
sendPv |
Boolean |
Especifica si se deben reportar datos de PV. De forma predeterminada, los datos de PV se reportan. |
No |
true |
Ejemplo de setPage():
// Set the page name to the current URL hash and report a new PV.
__bl.setPage(location.hash);
// Set the page name to 'homepage' without reporting a new PV.
__bl.setPage('homepage', false);
setCommonInfo()
Utilice setCommonInfo() para establecer campos comunes.
Sintaxis de setCommonInfo():
__bl.setCommonInfo(obj)
El método setCommonInfo() acepta un parámetro de objeto:
__bl.setCommonInfo({
name: 'xxx',
common: 'xxx'
});
Limite el tamaño del objeto. Un objeto grande puede resultar en una solicitud GET larga, lo cual podría causar un error.
Crear varias instancias
Para crear varias instancias, utilice el paquete npm @arms/js-sdk.
Páginas web
-
Ejemplo:
const BrowerLogger = require('@arms/js-sdk'); const bl2 = BrowerLogger.createExtraInstance(props); // Create an instance using the createExtraInstance method. bl2.custom({ key: 'biz', msg: 'msg info' });NotaEl parámetro props es de tipo Object. Los parámetros contenidos en el parámetro props son básicamente los mismos que los de la configuración del SDK.
-
Las nuevas instancias solo reportan información personalizada:
var props = { pid: 'xxxx', // The site ID where the new instance reports data. region: 'cn', page: '', uid: '' }
Páginas Weex
-
Ejemplo:
const WeexLogger = require('@arms/js-sdk/weex'); const wl2 = WeexLogger.createExtraInstance(props); // Create an instance using the createExtraInstance method. wl2.custom({ key: 'biz', msg: 'msg info' });NotaEl parámetro props es de tipo Object. Los parámetros contenidos en el parámetro props son básicamente los mismos que los de la configuración del SDK.
-
Las nuevas instancias solo reportan información personalizada:
var props = { pid: 'xxxx', // The site ID where the new instance reports data. region: 'cn', sendRequest: function(data, imgUrl) { // The method for sending logs using GET requests. }, postRequest: function(data, imgUrl) { // The method for sending logs using POST requests. } }
Miniprogramas
Ejemplo: Seleccione la ruta de importación que coincida con su tipo de miniprograma, como un miniprograma de DingTalk o un miniprograma de Alipay. El parámetro region especifica dónde se reportan los registros: establézcalo en cn para reportar registros a servidores en China, o en sg para reportar registros a servidores en Singapur. Si no especifica este parámetro, los registros se reportan a servidores en China.
import MiniProgramLogger from '@arms/js-sdk/miniapp'; // Select the path that matches your mini program type, such as a DingTalk mini program or an Alipay mini program.
const MiniInstance = MiniProgramLogger.createExtraInstance({
pid: 'xxxinstance',
uid: 'userxxx', // User ID for collecting UV data.
region: 'cn', // The region where logs are reported. Set the value to `cn` for China or `sg` for Singapore. Defaults to `cn` if unspecified.
// For basic mini program monitoring, you must manually pass the remote procedure call (RPC) method. Implement the method based on your business requirements.
sendRequest: (url, resData) => {
// The method for sending data.
}
});