O SDK de Monitoramento de Navegador da Alibaba Cloud oferece métodos para relatar dados e modificar configurações. Este tópico também descreve como criar várias instâncias do SDK.
Métodos neste tópico
APIs de relatório de dados: api() | error() | sum() | avg() | reportBehavior() | performance()
APIs de métodos: setConfig() | setPage() | setCommonInfo() | addBehavior()
api()
Use api() para relatar a taxa de sucesso de chamadas de API em uma página.
Por padrão, o SDK monitora requisições AJAX na página e chama esta API para relatar dados. Se sua página solicitar dados via JSONP ou outros métodos personalizados, como um SDK cliente, chame o método api() para relatar os dados manualmente.
Para chamar este método, recomendamos definir o parâmetro disableHook como true nas configurações do SDK. Para mais informações, consulte disableHook.
Sintaxe de api():
__bl.api(api, success, time, code, msg, begin, traceId, sid)
Ou
__bl.api({api: xxx, success: xxx, time: xxx, code: xx, msg: xx, begin: xx, traceId: xx, sid: xx})
|
Parâmetro |
Tipo |
Descrição |
Obrigatório |
Valor padrão |
|
api |
String |
Nome do método. |
Sim |
Nenhum |
|
success |
Boolean |
Indica se a chamada foi bem-sucedida. |
Sim |
Nenhum |
|
time |
Number |
Tempo consumido pela chamada. |
Sim |
Nenhum |
|
code |
String/Number |
Código de retorno. |
Não |
Nenhum |
|
msg |
String |
Informações da resposta. |
Não |
Nenhum |
|
begin |
Number |
Momento em que a requisição é iniciada. O valor é um timestamp. |
Não |
Nenhum |
|
traceId |
String |
Valor do EagleEye-TraceID. |
Não |
Nenhum |
|
sid |
String |
Valor do EagleEye-SessionID. |
Não |
Nenhum |
Exemplo 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()
Chame o método error() para relatar erros ou exceções de JS nas páginas monitoradas. É possível visualizar os detalhes na página JS Error Diagnostics do Browser Monitoring.
Geralmente, o SDK escuta erros globais na página e chama este método para relatar exceções. No entanto, detalhes do erro costumam ser inacessíveis devido à política de mesma origem do navegador. Nesse caso, relate tais erros manualmente.
Sintaxe de error():
__bl.error(error, pos)
|
Parâmetro |
Tipo |
Descrição |
Obrigatório |
Valor padrão |
|
error |
Error |
Objeto de erro JS. |
Sim |
Nenhum |
|
pos |
Object |
Local onde o erro ocorre. Contém os seguintes atributos: pos.filename, pos.lineno e pos.colno. |
Não |
Nenhum |
|
pos.filename |
String |
Nome do arquivo onde o erro ocorre. |
Não |
Nenhum |
|
pos.lineno |
Number |
Número da linha onde o erro ocorre. |
Não |
Nenhum |
|
pos.colno |
Number |
Número da coluna onde o erro ocorre. |
Não |
Nenhum |
Exemplo 1 de error(): Escutar e relatar erros JS na página.
window.addEventListener('error', function (ex) {
// The event argument usually contains location information.
window.__bl && __bl.error(ex.error, ex);
});
Exemplo 2 de error(): Relatar uma mensagem de erro personalizada.
window.__bl && __bl.error(new Error('A custom error occurred'), {
filename: 'app.js',
lineno: 10,
colno: 15
});
Exemplo 3 de error(): Relatar uma mensagem de erro de tipo personalizado.
__bl.error({name:'CustomErrorLog',message:'this is an error'}, {
filename: 'app.js',
lineno: 10,
colno: 15
});
sum()
Use o método sum() para relatar estatísticas personalizadas. Este método serve tipicamente para contar ocorrências de um evento de negócio. Visualize os dados relatados pelo método sum() na página Custom Statistics:
Gráfico de tendências de eventos personalizados
Visualizações de página (PVs) e visitantes únicos (UVs) de um evento
Informações de distribuição dimensional
Após o relatório, os dados aparecem na página Custom Statistics alguns minutos depois.
Sintaxe de sum():
__bl.sum(key, value)
|
Parâmetro |
Tipo |
Descrição |
Obrigatório |
Valor padrão |
|
key |
String |
Nome do evento. |
Sim |
Nenhum |
|
value |
Number |
Quantidade de itens relatados por vez. |
Não |
1 |
Exemplo de sum():
__bl.sum('event-a');
__bl.sum('event-b', 3);
avg()
Use o método avg() para relatar dados personalizados. Este método serve geralmente para calcular a média de ocorrências ou o valor de um evento de negócio específico. Consulte os dados relatados por avg() na página Custom Statistics:
Gráfico de tendências de eventos personalizados
PVs e UVs de um evento
Informações de distribuição dimensional
Sintaxe de avg():
__bl.avg(key, value)
|
Parâmetro |
Tipo |
Descrição |
Obrigatório |
Valor padrão |
|
key |
String |
Nome do evento. |
Sim |
Nenhum |
|
value |
Number |
Número de itens relatados. |
Não |
0 |
Exemplo de avg():
__bl.avg('event-a', 1);
__bl.avg('event-b', 3);
reportBehavior()
Chame reportBehavior() para relatar imediatamente a fila de comportamentos atual.
Se você não chamar este método manualmente, a fila de comportamentos atual será relatada automaticamente quando ocorrer um erro JS. O tamanho máximo da fila é 100. Se a fila contiver mais de 100 registros, os registros mais antigos serão descartados.
Para chamar este método, defina o parâmetro behavior como true nas configurações do SDK.
Sintaxe de reportBehavior():
__bl.reportBehavior()
O método reportBehavior() não aceita parâmetros.
addBehavior()
Chame o método addBehavior() para adicionar um comportamento personalizado do usuário à fila de comportamentos atual.
O SDK mantém uma fila de comportamentos do usuário com comprimento máximo de 100 entradas. Use o método addBehavior() para anexar um comportamento personalizado à fila. Quando ocorre um erro JS, o SDK relata a fila de comportamentos atual e a limpa.
Visualize o rastreamento de comportamento do usuário na página JS Error Diagnostics. Para instruções, consulte Use user behavior traceback to diagnose JS errors.
Para chamar este método, defina o parâmetro behavior como true nas configurações do SDK.
Sintaxe de addBehavior():
__bl.addBehavior(behavior)
Parâmetro | Tipo | Descrição | Obrigatório | Valor padrão |
data | Object | Dados do comportamento. Este parâmetro possui os dois campos obrigatórios a seguir:
| Sim | Nenhum |
page | String | Página onde o comportamento acontece. | Não | Valor do parâmetro location.pathname |
Exemplo de addBehavior():
__bl.addBehavior({
data:{name:'string',message:'string'},
page:'string'
})
performance()
Este método aplica-se apenas a clientes web.
Chame o método performance() após o evento onLoad da página para relatar métricas de desempenho personalizadas, além das métricas padrão.
Chame este método somente após a ocorrência do evento onLoad. Caso contrário, a chamada falhará porque a coleta das métricas de desempenho padrão estará incompleta. O método performance() pode ser chamado apenas uma vez durante cada PV.
Para usar o método performance(), execute as etapas a seguir:
Defina o parâmetro autoSendPerf como false para desativar o relatório automático de métricas de desempenho e aguardar o relatório manual.
Chame o método
__bl.performance(Object)para relatar manualmente as métricas personalizadas. Esta chamada envia tanto suas métricas personalizadas quanto as métricas de desempenho padrão coletadas pelo SDK.
Exemplo 1 de performance(): com 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.
};
Exemplo 2 de performance(): com pacote 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.
};
Descrições das métricas de desempenho personalizadas:
cfpt: tempo personalizado de primeira pintura
ctti: primeiro tempo personalizado para interação
t1 a t10: 10 métricas de desempenho personalizadas
setConfig()
Chame setConfig() após a inicialização do SDK para modificar itens de configuração específicos. Para mais informações, consulte SDK reference.
Sintaxe de setConfig():
__bl.setConfig(next)
|
Parâmetro |
Tipo |
Descrição |
Obrigatório |
Valor padrão |
|
next |
Object |
Parâmetro a ser modificado e seu novo valor. |
Sim |
Nenhum |
setPage()
Use setPage() para redefinir o nome da página, o que aciona por padrão um novo relatório de PV. Este método é tipicamente usado para aplicativos de página única (SPA). Para mais informações, consulte Page data reporting of SPAs.
Quando os dados de PV são relatados novamente, os dados existentes não são sobrescritos. Uma nova entrada de dados é adicionada.
Sintaxe de setPage():
__bl.setPage(page, sendPv)
|
Parâmetro |
Tipo |
Descrição |
Obrigatório |
Valor padrão |
|
page |
String |
Novo nome da página. |
Sim |
Nenhum |
|
sendPv |
Boolean |
Especifica se deve relatar dados de PV. Por padrão, os dados de PV são relatados. |
Não |
true |
Exemplo 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()
Use setCommonInfo() para definir campos comuns.
Sintaxe de setCommonInfo():
__bl.setCommonInfo(obj)
O método setCommonInfo() aceita um parâmetro de objeto:
__bl.setCommonInfo({
name: 'xxx',
common: 'xxx'
});
Limite o tamanho do objeto. Um objeto grande pode resultar em uma requisição GET longa, o que pode causar falha.
Criar várias instâncias
Para criar várias instâncias, use o pacote npm @arms/js-sdk.
Páginas Web
-
Exemplo:
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' });NotaO parâmetro props é do tipo Object. Os parâmetros contidos em props são basicamente os mesmos das configurações do SDK.
-
As novas instâncias relatam apenas informações personalizadas:
var props = { pid: 'xxxx', // The site ID where the new instance reports data. region: 'cn', page: '', uid: '' }
Páginas Weex
-
Exemplo:
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' });NotaO parâmetro props é do tipo Object. Os parâmetros contidos em props são basicamente os mesmos das configurações do SDK.
-
As novas instâncias relatam apenas informações personalizadas:
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. } }
Mini programas
Exemplo: Selecione o caminho de importação correspondente ao seu tipo de mini programa, como um mini programa DingTalk ou Alipay. O parâmetro region especifica onde os logs são relatados: defina-o como cn para relatar logs em servidores na China, ou como sg para relatar logs em servidores em Singapore. Se você não especificar este parâmetro, os logs serão relatados em servidores na 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.
}
});