Browser Monitoring de Application Real-Time Monitoring Service (ARMS) ofrece varios elementos de configuración del SDK para adaptarse a distintos requerimientos. Por ejemplo, estos elementos permiten ignorar URL, operaciones de API o errores de JavaScript (JS), agrupar páginas al eliminar caracteres no clave de las URL y reducir los datos reportados o la carga de trabajo mediante muestreo aleatorio.
Métodos en este tema
pid | uid | tag | page | setUsername | enableSPA | parseHash | disableHook | ignoreUrlCase | urlHelper | apiHelper | parseResponse | ignore | disabled | sample | pvSample | sendResource | useFmp | enableLinkTrace | release | environment | behavior | c1\c2\c3 | autoSendPerf
Uso de los elementos de configuración del SDK
Para utilizar los elementos de configuración del SDK, aplique uno de los siguientes métodos:
-
Al instalar un agente de Browser Monitoring en una página, agregue parámetros a config según sus necesidades.
Por ejemplo, en el siguiente código de muestra, además del parámetro predeterminado pid, se agrega el parámetro enableSPA para aplicaciones de una sola página (SPA) en config:
<script> !(function(c,b,d,a){c[a]||(c[a]={});c[a].config={pid:"xxxxxx",enableSPA:true}; with(b)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("crossorigin","",src=d) })(window,document,"https://sdk.rum.aliyuncs.com/v1/bl.js","__bl"); </script> -
Una vez inicializada la página, llame al método setConfig en el código JavaScript para modificar los elementos de configuración.
El método
__bl.setConfig(next)acepta el siguiente parámetro:Parámetro
Tipo
Descripción
Obligatorio
Valor predeterminado
next
Object
El elemento de configuración que desea modificar y su valor.
Sí
Ninguna
pid
|
pid |
String |
Identificador único del proyecto. ARMS lo genera automáticamente cuando crea un sitio. |
Sí |
Ninguna |
uid
|
|
|
|
|
|
uid |
String |
Identificador del usuario. Este valor identifica al usuario y permite buscarlo. Especifique un valor personalizado. Si no especifica este parámetro, el SDK lo genera automáticamente y lo actualiza cada seis meses. |
|
|
A continuación se muestra un ejemplo de cómo llamar al método setConfig para modificar el elemento de configuración del SDK:
__bl.setConfig({
uid: 12345
});
No es posible llamar al método setConfig para modificar el parámetro uid durante el monitoreo de miniprogramas. En su lugar, llame al método setUsername para identificar a un usuario.
tag
|
tag |
String |
Etiqueta de entrada. Cada registro lleva una etiqueta. |
No |
Ninguna |
page
|
page |
String |
Nombre de la página. |
No |
De forma predeterminada, se toma la parte clave de la URL de la página actual: |
Utilice la propiedad ignoreErrors para consultar los errores que desea reportar. Para obtener más información, consulte ignore.
setUsername
|
setUsername |
Function |
Se utiliza para establecer un método que debe devolver un nombre de usuario de tipo String. |
No |
Ninguna |
Este elemento de configuración sirve para crear una función que obtiene un nombre de usuario como cadena de texto. Una vez obtenido el nombre, es posible implementar el rastreo de sesiones de extremo a extremo y consultar sesiones por nombre de usuario para solucionar problemas.
Si no es posible obtener el nombre de usuario al inicializar la página, establezca el valor de retorno como null en lugar de usar un nombre temporal. Con el valor null, el método setUsername se vuelve a llamar para obtener el nombre cuando el SDK envía registros. Sin embargo, si establece un nombre temporal, el sistema lo utiliza y no vuelve a llamar a setUsername para obtener el nombre real.
El método setUsername solo se configura una vez durante la ejecución. Para modificar el método, reinicie la aplicación.
A continuación se muestra un ejemplo de cómo llamar al método setConfig para modificar el elemento de configuración del SDK:
__bl.setConfig({
setUsername: function () {
return "username_xxx";
}
});
enableSPA
|
enableSPA |
Boolean |
Escucha los eventos hashchange en la página y reporta nuevamente las PV. Resulta útil en escenarios de aplicaciones de una sola página. |
No (compatible solo en escenarios web) |
|
parseHash
|
parseHash |
Function |
Se usa junto con enableSPA. |
No |
Consulte a continuación |
En escenarios de aplicaciones de una sola página (SPA) (consulte SPA page data reporting), si enableSPA se establece en true, el parámetro parseHash analiza sintácticamente el hash de la URL en el campo Page cuando ocurre un evento hashchange.
Default value
El valor predeterminado se obtiene mediante el siguiente procesamiento de cadenas:
function (hash) {
var page = hash ? hash.replace(/^#/, '').replace(/\?.*$/, '') : '';
return page || '[index]';
}
Por lo general, no es necesario modificar este parámetro. Sin embargo, modifique este elemento de configuración si desea usar un nombre de página personalizado para reportar datos específicos o si el hash de la URL es complejo. Ejemplo:
// Define the mapping between URL hashes and page names.
var PAGE_MAP = {
'/': 'homepage',
'/contact': 'contact us',
'/list': 'data list',
// ...
};
// Call the SDK method after the page is loaded.
window.addEventListener('load', function (e) {
// Call the setConfig method to modify the SDK configuration item.
__bl.setConfig({
parseHash: function (hash) {
key = hash.replace(/\?.*$/, '');
return PAGE_MAP[key] || 'unknown page';
}
});
});
disableHook
El parámetro disableHook surte efecto únicamente cuando se inicializan las configuraciones.
|
disableHook |
Boolean |
Deshabilita los listeners de solicitudes AJAX. |
No |
|
ignoreUrlCase
|
ignoreUrlCase |
Boolean |
Ignora las mayúsculas y minúsculas en la URL de la página. |
No |
|
urlHelper
|
urlHelper |
* |
Reemplaza al antiguo parámetro ignoreUrlPath y se utiliza para configurar reglas de filtrado de URL. |
No |
Consulte a continuación |
Cuando la URL de una página es similar a http://example.com/projects/123456 (donde el número después de projects es el identificador del proyecto), reportar example.com/projects/123456 como página impide agrupar las páginas en una sola categoría al consultar los datos. En este caso, utilice el parámetro urlHelper para filtrar los caracteres no críticos, como el identificador del proyecto en este ejemplo, y asegurar que las páginas similares se agrupen.
El parámetro urlHelper reemplaza al parámetro ignoreUrlPath para ignorar los caracteres no clave en las URL de las páginas. Si especifica el parámetro ignoreUrlPath, la configuración sigue surtiendo efecto. Si especifica ambos parámetros, ignoreUrlPath y urlHelper, prevalece la configuración indicada en urlHelper.
Esta configuración aplica únicamente cuando el SDK captura automáticamente la URL de la página como valor de la misma. El SDK ignora esta configuración si usted establece manualmente el valor de la página mediante los métodos setPage o setConfig (consulte SDK methods), o si enableSPA se establece en
true.
Default value
El valor predeterminado de este elemento de configuración es el arreglo que aparece en el siguiente código de muestra. En la mayoría de los casos, no es necesario modificarlo:
[
// Replace all digits in the path with asterisks (*).
{rule: /\/([a-z\-_]+)?\d{2,20}/g, target: '/$1**'},
// Remove a trailing slash (/) from the URL.
/\/$/
]
De forma predeterminada, esta configuración reemplaza los identificadores numéricos que siguen a un segmento de ruta. Por ejemplo, tanto xxxx/00001 como xxxx/00002 se convierten en xxxx/**, igual que una URL original como xxxx/123456.
Value types
El valor del parámetro urlHelper admite los siguientes tipos:
StringoRegExp(expresión regular): elimina la parte coincidente de la cadena de la URL.Object<rule, target>: objeto con las claves rule y target. Estas se pasan como argumentos al método String.prototype.replace() de JavaScript. Para obtener más detalles, consulte la documentación de String.prototype.replace().Function: función que recibe la cadena de la URL original como argumento. Su valor de retorno se utiliza como valor final de la página.Array: arreglo que contiene varias reglas, donde cada regla puede ser cualquiera de los tipos descritos anteriormente.
apiHelper
|
apiHelper |
* |
Reemplaza al antiguo parámetro ignoreApiPath y se utiliza para configurar reglas de filtrado de API. |
No |
Consulte a continuación |
Este parámetro elimina los caracteres no clave en las URL de las páginas cuando se reportan automáticamente datos específicos sobre operaciones de API. Su uso y función son los mismos que los de urlHelper.
El parámetro apiHelper reemplaza al parámetro ignoreApiPath para ignorar los caracteres no clave en las URL de las operaciones de API. Si especifica el parámetro ignoreApiPath, la configuración sigue surtiendo efecto. Si especifica ambos parámetros, ignoreApiPath y apiHelper, prevalece la configuración indicada en apiHelper.
Default value
El valor predeterminado de este parámetro es un objeto y no requiere modificaciones:
{rule: /(\w+)\/\d{2,}/g, target: '$1'}
Esta configuración predeterminada filtra los números finales en las rutas de URL de API, como en xxxx/123456.
Si necesita reportar parámetros de la cadena de consulta (la parte de la URL de la API que va después de ?), como el parámetro pid en https://arms.console.alibabacloud.com/apm?pid=fr6fbgbeot, debe utilizar el reporte manual:
parseResponse
|
parseResponse |
Function |
Analiza sintácticamente los datos devueltos durante el reporte automático de la API. |
No |
Consulte a continuación |
Este elemento de configuración analiza sintácticamente los datos devueltos cuando se reportan automáticamente los datos específicos de la página correspondientes a operaciones de API.
Default value
El siguiente código de muestra presenta las configuraciones predeterminadas:
function (res) {
if (!res || typeof res !== 'object') return {};
var code = res.code;
var msg = res.msg || res.message || res.subMsg || res.errorMsg || res.ret || res.errorResponse || '';
if (typeof msg === 'object') {
code = code || msg.code;
msg = msg.msg || msg.message || msg.info || msg.ret || JSON.stringify(msg);
}
return {msg: msg, code: code, success: true};
}
La función predeterminada analiza la respuesta para extraer las propiedades msg y code. Esta función resulta adecuada para la mayoría de las aplicaciones, pero es posible sobrescribirla si no cumple con sus requerimientos de negocio.
ignore
|
ignore |
Object |
Permite ignorar la URL, API o error de JS especificado. Los registros que cumplen las reglas se ignoran y no se reportan. Incluye los subelementos de configuración ignoreUrls, ignoreApis, ignoreErrors e ignoreResErrors. |
No |
Consulte a continuación |
El valor del parámetro ignore es un objeto que contiene cuatro propiedades: ignoreUrls, ignoreApis, ignoreErrors e ignoreResErrors. Configure una o más propiedades del valor del parámetro.
Default value
El siguiente código de muestra presenta las configuraciones predeterminadas:
ignore: {
ignoreUrls: [],
ignoreApis: [],
ignoreErrors: [],
ignoreResErrors: []
},
ignoreUrls
La propiedad ignoreUrls especifica las URL que se deben ignorar. Los registros provenientes de URL que coinciden con un patrón determinado no se reportan. El valor puede ser string, regular expression, function o un arreglo que contenga estos tipos. Ejemplo:
__bl.setConfig({
ignore: {
ignoreUrls: [
'http://host1/', // string
/.+?host2.+/, // regular expression
function(str) { // function
if (str && str.indexOf('host3') >= 0) {
return true; // Do not report
}
return false; // Report
}]
}
});
ignoreApis
La propiedad ignoreApis especifica las API que se deben ignorar. Las llamadas a API que coinciden con un patrón determinado no se monitorean. El valor puede ser string, regular expression, function o un arreglo que contenga estos tipos. Ejemplo:
__bl.setConfig({
ignore: {
ignoreApis: [
'api1','api2','api3', // string
/^random/, // regular expression
function(str) { // function
if (str && str.indexOf('api3') >= 0) return true; // Do not report
return false; // Report
}]
}
});
ignoreErrors
La propiedad ignoreErrors especifica los errores de JS que se deben ignorar. Los errores de JS que coinciden con un patrón determinado no se reportan. El valor puede ser string, regular expression, function o un arreglo que contenga estos tipos. Ejemplo:
__bl.setConfig({
ignore: {
ignoreErrors: [
'test error', // string
/^Script error\.?$/, // regular expression
function(str) { // function
if (str && str.indexOf('Unknown error') >= 0) return true; // Do not report
return false; // Report
}]
}
});
ignoreResErrors
La propiedad ignoreResErrors especifica los errores de recursos que se deben ignorar. Los errores de recursos que coinciden con un patrón determinado no se reportan. El valor puede ser string, regular expression, function o un arreglo que contenga estos tipos. Ejemplo:
__bl.setConfig({
ignore: {
ignoreResErrors: [
'http://xx/picture.jpg', // string
/jpg$/, // regular expression
function(str) { // function
if (str && str.indexOf('xx.jpg') >= 0) return true; // Do not report
return false; // Report
}]
}
});
disabled
|
disabled |
Boolean |
Indica si se debe deshabilitar la función de reporte de registros. |
No |
|
sample
|
sample |
Integer |
Establece la configuración de muestreo de registros de API. El valor debe ser un número entero del 1 al 100. Muestrea los registros de rendimiento y los registros de API exitosos con una tasa de |
No |
|
Beneficios:
Reduce costos al reportar únicamente los datos de API muestreados. Se recomienda identificar los datos que no requieren monitoreo mediante el parámetro ignore. Para obtener más información, consulte ignore.
Reduce la sobrecarga de rendimiento en la recopilación de datos.
Descripción:
Configure este elemento para seleccionar y reportar de forma aleatoria los registros de rendimiento y los registros de operaciones de API exitosas. Esto reduce el volumen de datos reportados y la carga de trabajo. Cuando ARMS procesa los registros reportados en segundo plano, restaura los datos según las configuraciones de muestreo. De esta manera, métricas como la tasa de errores de JS o la tasa de fallos de API no se ven afectadas por el muestreo y mantienen su precisión. Sin embargo, al configurar este parámetro, es posible que no pueda obtener datos detallados, como los detalles de la API.
El valor predeterminado de
samplees1. Los valores válidos son números enteros del 1 al 100. La tasa de muestreo es1/sample. Por ejemplo,1significa un muestreo del 100 %,10un muestreo del 10 % y100un muestreo del 1 %.
Cuando el volumen total de datos es pequeño y aun así se aplica el muestreo aleatorio, el resultado estadístico puede presentar una gran desviación. Se recomienda utilizar este elemento de configuración en sitios web cuyo promedio diario de vistas de página (PV) supere el millón.
pvSample
|
Parámetro |
Tipo |
Descripción |
Obligatorio |
Valor predeterminado |
|
pvSample |
Integer |
Establece la configuración de muestreo para los registros de PV. El valor es un número entero del 1 al 100, donde la tasa de muestreo es |
No |
|
Beneficios:
Reduce costos al reportar únicamente los datos de PV muestreados.
Reduce la sobrecarga de rendimiento en la recopilación de datos.
Descripción:
Configure este elemento para seleccionar y reportar de forma aleatoria los registros de PV. Esto reduce el volumen de datos reportados y la carga de trabajo. Cuando ARMS procesa los registros reportados en segundo plano, restaura los datos según las configuraciones de muestreo. Así, métricas como la tasa de errores de JS no se ven afectadas por el muestreo y mantienen su precisión.
El valor predeterminado de
pvSamplees1. La tasa de muestreo es1/pvSample. Por ejemplo, un valor de1significa un muestreo del 100 %,10un muestreo del 10 % y100un muestreo del 1 %.
sendResource
|
sendResource |
Boolean |
Reporta los recursos estáticos de la página. |
No |
|
Si el parámetro sendResource se establece en true, los recursos estáticos de la página se reportan cuando se activa el evento load de la misma. Si una página carga lentamente, consulte su diagrama de cascada de recursos estáticos en la página Session Traces para encontrar la causa.
A continuación se muestra un ejemplo de cómo configurar el parámetro sendResource:
<script>
!(function(c,b,d,a){c[a]||(c[a]={});c[a].config={pid:"xxxxxx",sendResource:true};
with(b)with(body)with(insertBefore(createElement("script"),firstChild))setAttribute("crossorigin","",src=d)
})(window,document,"https://sdk.rum.aliyuncs.com/v1/bl.js","__bl");
</script>
Para solucionar problemas de carga lenta de páginas, configure el parámetro sendResource en config, tal como se muestra en el código de muestra anterior. De esta manera, los recursos estáticos se reportan cuando se activa el evento load. Si llama al método setConfig, los recursos estáticos podrían reportarse después de que finalice el evento load. En ese caso, el parámetro sendResource no le ayudará a identificar la causa de la carga lenta de la página.
useFmp
|
useFmp |
Boolean |
Recopila los datos FMP (First Meaningful Paint, primera representación válida) de la primera pantalla. |
No |
|
enableLinkTrace
|
enableLinkTrace |
Boolean |
Para obtener más información sobre el rastreo back-to-back de Tracing Analysis, consulte Diagnose API errors with front-to-back tracing. |
No (solo es compatible con escenarios web, mini programas de Alipay, mini programas de WeChat y mini programas de DingTalk) |
|
release
Debe configurar release en config durante la inicialización de la página. No llame al método setConfig.
|
release |
String |
La versión de la aplicación. Se recomienda configurar este parámetro para consultar la información de los reportes de distintas versiones. |
No |
|
environment
|
|
|
|
|
|
environment |
String |
El campo de entorno. Valores válidos: prod, gray, pre, daily y local.
|
No |
|
behavior
|
behavior |
Boolean |
Determina si se registra el comportamiento del usuario que genera errores, lo cual facilita la solución de problemas. |
No (solo es compatible con escenarios web y de mini programas) |
El valor predeterminado para navegadores es |
autoSendPerf
|
autoSendPerf |
Boolean |
Determina si se permite el envío automático de registros de rendimiento. |
No |
|
c1\c2\c3
Además de los elementos de configuración anteriores, el SDK de ARMS proporciona tres elementos de configuración personalizados. Estos le permiten definir campos que se ajusten a sus necesidades de negocio. Una vez configurados, los valores de estos campos se incluyen en todos los registros que se reportan.
|
c1 |
String |
Campo de servicio personalizado. Cada registro incluye este campo. |
No |
Ninguna |
|
c2 |
String |
Campo de servicio personalizado. Cada registro incluye este campo. |
No |
Ninguna |
|
c3 |
String |
Campo de servicio personalizado. Cada registro incluye este campo. |
No |
Ninguna |
c1\c2\c3 representa los datos que se envían en todos los reportes de la página personalizada actual. Por lo general, c1\c2\c3 está relacionado con sus servicios. Cuando inicialice el SDK de Browser Monitoring para JavaScript, especifique los parámetros del SDK para consultar datos, como el nivel VIP de un usuario.