Referência técnica para SRE — React Native full-stack instrumentation
[ ] 1. O app foi recompilado após mudanças no dynatrace.config.js?
→ Mudanças no config exigem 'npm run android' ou 'npm run ios'
→ Hot reload NÃO aplica mudanças de build-time
[ ] 2. O beacon URL está acessível pelo dispositivo/emulador?
→ Android Emulator: verificar se 'adb reverse tcp:443 tcp:443' está ativo
→ Testar: curl -I https://bf78240axh.bf.dynatrace.com/mbeacon
[ ] 3. O userOptIn está configurado e a privacidade foi aceita?
→ Verificar se dtRum.init() é chamado antes de qualquer enterAction
→ Verificar se applyUserPrivacyOptions recebeu DataCollectionLevel.UserBehavior
[ ] 4. A sessão foi encerrada antes de consultar no USQL?
→ Minimizar o app (dispara AppState 'background' → dtRum.encerrarSessao())
→ Aguardar 3-5 minutos para o backend processar o beacon
[ ] 5. As session properties estão registradas no tenant?
→ Caminho: Frontend → [App] → ... → Edit → Session and user action properties
→ A chave deve ser EXATAMENTE igual ao código (case-sensitive)
→ A sessão deve ter INICIADO após o registro da propriedade
[ ] 6. O metro.config.js tem o transformer do Dynatrace?
→ Verificar: babelTransformerPath apontando para dynatrace-transformer
→ Sem o transformer, input.instrument é ignorado
[ ] 7. Há erros no console relacionados ao SDK?
→ Ativar: dynatrace.config.js → debug: true (apenas em dev)
→ Procurar: "Dynatrace" nos logs do Metro
[ ] 1. A propriedade está registrada no UI do tenant? (veja seção 3)
[ ] 2. O código usa action.reportStringValue("chave", valor)?
→ sendSessionPropertyEvent com chave sem prefixo NÃO funciona
→ A chave não deve ter o prefixo "session_properties."
[ ] 3. A sessão foi encerrada DEPOIS que você registrou a propriedade no UI?
→ Sessões abertas antes do registro não são retroativamente enriquecidas
[ ] 4. A propriedade está marcada como "Session" ou "Session, User action"?
→ "User action" only = aparece apenas na ação, não na sessão
→ Para USQL em usersession, precisa de scope "Session"
[ ] 5. Aguardou o tempo de processamento?
→ Beacons processados em ~1-3 min após envio
→ Sessões longas processadas somente após endSession()
[ ] 1. O OneAgent está injetado nos pods do backend?
→ kubectl get pods -n pontos-club -o yaml | grep dynatrace
→ Deve haver initContainer "dynatrace-operator"
[ ] 2. O namespace está com a annotation correta?
→ kubectl get namespace pontos-club --show-labels
→ Deve conter: dynatrace.com/inject=true
[ ] 3. O ActiveGate está Running?
→ kubectl get pods -n dynatrace | grep activegate
→ Status deve ser 1/1 Running
[ ] 4. O backend está retornando o header de resposta do rastreamento?
→ Inspecionar headers HTTP no app: procurar 'x-dynatrace-js-agent'
→ Se ausente, o OneAgent não está interceptando as requisições
[ ] 5. A URL do backend está na whitelist de domínios rastreados?
→ Por padrão, todos os domínios são rastreados
→ Verificar se há configuração de exclusão no dynatrace.config.js
# 1. Verificar se os pods do Dynatrace estão saudáveis
kubectl get pods -n dynatrace
# 2. Forçar envio do beacon (via ADB no emulador Android)
adb shell am force-stop com.pontosclublivelo # fecha o app → dispara background
sleep 5
adb shell am start com.pontosclublivelo/.MainActivity
# 3. Consultar sessões recentes no tenant (USQL)
# Dynatrace → Observe and Explore → Multidimensional Analysis
SELECT userId, startTime, duration, osVersion, stringProperties.nivel_usuario
FROM usersession
WHERE startTime > now()-10m
ORDER BY startTime DESC
LIMIT 10
# 4. Verificar métricas de beacon no ActiveGate
kubectl logs -n dynatrace -l app.kubernetes.io/name=activegate --tail=50 | grep beacon
# 5. Validar disponibilidade do beacon
curl -I https://bf78240axh.bf.dynatrace.com/mbeacon
Causa provável: Usando sendSessionPropertyEvent com chave sem namespace.
Solução:
// ❌ ERRADO
const evento = new SessionPropertyEventData();
evento.addSessionProperty("nivel_usuario", "Gold");
// ✅ CORRETO
const action = Dynatrace.enterAction("Session - Atributos");
action.reportStringValue("nivel_usuario", "Gold");
action.leaveAction();
Causa provável: Dynatrace não foi compilado no build — faltou transformer no metro.config.js.
Solução:
// metro.config.js
module.exports = {
transformer: {
babelTransformerPath:
require.resolve("@dynatrace/react-native-plugin/lib/dynatrace-transformer"),
},
reporter: require("@dynatrace/react-native-plugin/lib/dynatrace-reporter"),
};
Causa provável: dtRum.init() não foi chamado, ou userOptIn não está ativo.
Solução:
dtRum.init() é chamado no App.js/_layout.tsxdynatrace.config.js tem userOptIn: true (Android) e DTXUserOptIn: true (iOS)npm run androidCausa provável: Falta de configuração adb reverse.
Solução:
# Android Emulator
adb reverse tcp:30080 tcp:30080
adb reverse tcp:8081 tcp:8081
# Testar
adb shell curl http://localhost:30080/health
| Problema | Time | Ação |
|---|---|---|
| Beacon não chega | Mobile + SRE | Verificar conectividade, ativar debug |
| Rastreamento distribuído quebrado | Backend + SRE | Verificar OneAgent, namespace labels |
| Query USQL lenta | SRE + DBA | Otimizar scope de tempo, adicionar índices |
| Davis AI não detecta anomalias | SRE + Dynatrace | Revisar baselines, aumentar tempo de dados históricos |
Documentação mantida pelo time de Engenharia Mobile. Última atualização: maio de 2026.