Referência técnica para SRE — React Native full-stack instrumentation
dtRumToda a instrumentação do projeto passa pelo arquivo src/monitoring/dtRum.js. Isso garante:
leaveAction sempre chamado no finally — sem memory leak de ações abertasdtRum.jsdtRum.init(); // Configurar privacidade — chamar no startup
dtRum.identificarUsuario(id, opts); // Após autenticação
dtRum.sessao(atributos); // Enriquecer sessão com dados de negócio
dtRum.telaCarregada(nome, startTime); // TTI por tela
dtRum.clique(elemento, contexto); // Ação de navegação ou interação
dtRum.withAction(nome, fn); // Ação pai com sub-actions
dtRum.subAcao(pai, nome, fn); // Sub-action dentro de withAction
dtRum.apiCall(nome, fn); // Chamada HTTP instrumentada
dtRum.evento(descricao); // Marco de negócio sem duração
dtRum.erroBusiness(descricao, codigo); // Erro de negócio (ex: saldo insuficiente)
dtRum.encerrarSessao(); // Flush + endSession — chamar no background
O padrão adotado é: [Tela] - [O que aconteceu em linguagem de negócio]
✅ "Home - Carregar Dashboard"
✅ "Prêmios - Iniciar Resgate: Voucher Amazon"
✅ "Login - Usuário Identificado"
✅ "API - Transações - Carregar Histórico"
✅ "Session - Atualizar Propriedades"
❌ "loadData"
❌ "Touch on Button"
❌ "handlePress"
❌ "getData()"
Por que isso importa para SRE:
action.name LIKE "Home - %")| Prefixo | Quando usar | Exemplo |
|---|---|---|
[Tela] - Tela Carregada |
TTI após render completo | Home - Tela Carregada |
[Tela] - Carregar [Recurso] |
Fetch de dados via withAction |
Home - Carregar Dashboard |
Tile - [Nome do Tile] |
Sub-action de um tile específico | Tile - Cartão de Pontos |
Clique - [Tela] - [Ação] |
Interação do usuário | Clique - Home - Ver Mais Transações |
API - [Recurso] - [Operação] |
Chamada HTTP individual | API - Prêmios - Carregar Catálogo |
Login - [Evento] |
Fluxo de autenticação | Login - Usuário Identificado |
Session - [Evento] |
Atualização de propriedades de sessão | Session - Atualizar Propriedades |
App - [Evento] |
Eventos de ciclo de vida do app | App - Cold Startup |
Diferencie erros técnicos (exceptions, HTTP 5xx) de erros de negócio (saldo insuficiente, produto indisponível):
// Erro técnico — capturado automaticamente pelo SDK
// (HTTP 4xx/5xx são automaticamente marcados como falha no request)
// Erro de negócio — reportado explicitamente
if (usuario.pontos < premio.pontos) {
dtRum.erroBusiness("Resgate negado: saldo insuficiente", 1001);
// No Dynatrace: aparece em "Error/Exception" da sessão com errorCode 1001
}
// ✅ RECOMENDADO: enviar contexto relevante para triagem
dtRum.clique("Home - Resgatar Prêmio", {
premio_id: "prm_001",
pontos_necessarios: 2000,
pontos_usuario: 15430,
tentativas_falhas: 2,
});
// ❌ EVITAR: sem contexto, sem valor para SRE
dtRum.clique("Clique");
O projeto inclui 27 testes cobrindo o dtRum (veja src/__tests__/dtRum.test.js):
npm test # Jest runners — mock do SDK
Benefícios:
leaveAction é sempre chamado (sem memory leaks)reportIntValue vs. reportStringValue)