API de monitoramento do React Native
Saiba como usar o React Native API para monitorar e instrumentar suas aplicações React Native com o Instana. Isso permite a observabilidade em tempo real e insights sobre o desempenho de aplicativos móveis híbridos.
React Native versões do agente
Para conhecer as atualizações, melhorias e alterações do agente do React Native, consulte o arquivo de registro de alterações em GitHub:
API de agente do Instana React Native
Você pode utilizar o agente React Native do Instana por meio dos métodos Instana de classe explicados aqui.
React Native O agente é compatível com projetos do ` TypeScript ` a partir da versão ` 2.0.6 `.
Instalação
Inicialize ` Instana ` na sua App classe componentDidMount():
export default class App extends Component {
componentDidMount() {
Instana.setup(YOUR_INSTANA_APP_KEY, YOUR_INSTANA_REPORTING_URL, null);
// Alternatively with configuration options
Instana.setup(YOUR_INSTANA_APP_KEY, YOUR_INSTANA_REPORTING_URL, {'collectionEnabled': false});
}
}
O código a seguir é uma definição de TypeScript:
setup(your_instana_app_key: string, your_instana_app_reportingUrl: string, options?: Object): void;
setup(your_instana_app_key: string, your_instana_app_reportingUrl: string, {collectionEnabled: boolean}): void;
Parâmetros de configuração
A tabela a seguir lista os parâmetros de configuração:
| Parâmetro | Descrição |
|---|---|
key (String) |
Chave de configuração de monitoramento do Instana |
reportingURL (String) |
O arquivo ` URL ` aponta para a instância ` Instana `, para a qual os dados de monitoramento devem ser enviados |
Identificador de sessão
Cada instância do agente do Instana possui um identificador de sessão exclusivo que você pode utilizar para outros fins em seu aplicativo.
static getSessionID()
O código a seguir é uma definição de TypeScript:
getSessionID(): Promise<string>;
Parâmetros de identificação de sessão
Retorna: Promise(String)
Exemplo de identificador de sessão
var sessionID = await Instana.getSessionID();
Monitoramento automático de HTTP
Instana O agente oferece monitoramento automático das solicitações do HTTP.
Visualizações
O Instana pode segmentar insights de app móvel por visualizações lógicas. Você pode definir o nome da visualização usando o Instana.setView(String) método. A visualização é então associada a todos os beacons monitorados até que a visualização seja alterada quando setView for chamado novamente.
Não utilize nomes técnicos ou genéricos, como Class (por exemplo, WebViewActivity), para definir visualizações. Em vez disso, use nomes legíveis para as exibições (por exemplo, product detail page ou payment selection). Ao se concentrar nas experiências do usuário, os membros da equipe que não têm conhecimento profundo da base de código podem entender os insights fornecidos.
Instana.setView(String) é chamado quando uma tela é exibida ao usuário, e não quando uma tela é criada (como no caso de um Fragment, que pode ser criado uma vez, mas exibido várias vezes). Ao definir o nome da visualização, o Instana pode rastrear as transições entre páginas, além dos carregamentos de página.static setView(String name)
O código a seguir é uma definição de TypeScript:
setView(name: string): void;
Parâmetros de visualizações
A tabela a seguir lista os parâmetros das visualizações:
| Parâmetro | Descrição |
|---|---|
name (String) |
O nome da exibição. |
Exemplo de visualizações
Instana.setView('Webview: FitBit authorization');
Identificando usuários
Opcionalmente, informações específicas do usuário podem ser enviadas junto com os dados transmitidos para Instana. Essas informações podem então ser usadas para desbloquear mais recursos, tais como:
- Calcule o número de usuários afetados por erros
- Filtrar dados para usuários específicos
- Veja qual usuário iniciou uma alteração na visualização ou uma solicitação de " HTTP "
Por padrão, o site Instana não associa nenhuma informação que permita identificar o usuário aos beacons. Você deve estar ciente das respectivas leis de proteção de dados. Identificar usuários por meio de um ID do usuário. No caso do ` Instana `, trata-se de um objeto String transparente usado apenas para calcular determinadas métricas. userName e userEmail também podem ser usados para ter acesso a mais filtros e uma melhor apresentação das informações do usuário.
Nos casos em que você estiver lidando com usuários anônimos e, portanto, não tiver acesso a IDs de usuário, poderá usar IDs de sessão como alternativa. Os IDs de sessão não são tão úteis quanto os IDs de usuário na hora de filtrar dados, mas são um bom indicador para calcular métricas de usuários afetados ou únicos. Configure um nome de usuário como Anonymous para ter uma clara diferenciação entre usuários autenticados e não autenticados. Os IDs de sessão podem ser dados sensíveis (dependendo da estrutura ou plataforma usada). Considere aplicar um algoritmo de hash aos IDs de sessão para evitar a transmissão de dados para Instana que possam conceder acesso.
Os dados já enviados ao servidor da Instana não podem ser atualizados retroativamente. Por esse motivo, é importante chamar este ` API ` o mais cedo possível no processo de inicialização do aplicativo.
static setUserID(String ID)
static setUserName(String email)
static setUserEmail(String name)
O código a seguir é uma definição de TypeScript:
setUserID(id: string): void;
setUserName(name: string): void;
setUserEmail(email: string): void;
Parâmetros de usuários
A tabela a seguir lista os parâmetros do usuário:
| Parâmetro | Descrição |
|---|---|
ID (String) |
Um identificador para o usuário. |
email (String) |
O endereço de e-mail do usuário. |
name (String) |
O nome do usuário. |
Exemplo de usuário
export default class App extends Component {
componentDidMount() {
Instana.setup(YOUR_INSTANA_APP_KEY, YOUR_INSTANA_REPORTING_URL);
Instana.setUserID('1234567890');
Instana.setUserEmail('instana@example.com');
Instana.setUserName('instana react-native agent demo');
}
}
Metadados
É possível anexar metadados arbitrários a todos os dados transmitidos para Instana. Você pode usá-lo para rastrear valores de configuração da interface do usuário, definições, sinalizadores de recursos e qualquer contexto adicional que possa ser útil para análise.
static setMeta(String key, String value)
O código a seguir é uma definição de TypeScript:
setMeta(key: string, value: string): void;
Parâmetros de metadados
A tabela a seguir lista os parâmetros de metadados:
| Parâmetro | Descrição |
|---|---|
value (String) |
O value do par chave-valor que você deseja incluir como metadados. |
key (String) |
O key do par chave-valor que você deseja incluir como metadados. |
Exemplo de metadados
export default class App extends Component {
componentDidMount() {
Instana.setMeta('randomKey1', 'randomValue1');
Instana.setMeta('randomKey2', 'randomValue2');
}
}
Relatar eventos customizados
Os eventos personalizados permitem enviar relatórios sobre atividades fora do padrão, interações importantes e intervalos de tempo personalizados para o Instana. Pode ser especialmente útil quando você está analisando erros não capturados (breadcrumbs) e para controlar mais métricas de desempenho.
static reportEvent(String eventName, {
startTime: Number startTime,
duration: Number duration,
viewName: String viewName,
backendTraceId: String backendTraceId,
meta: Map meta
})
O código a seguir é uma definição de TypeScript:
reportEvent(eventName: string, options?: {
startTime?: number;
duration?: number;
viewName?: string;
meta?: Map<string, string>;
backendTracingId?: string;
customMetric?: number;
}): void;
Parâmetros de eventos personalizados
A tabela a seguir lista os parâmetros dos eventos personalizados:
| Parâmetro | Descrição |
|---|---|
eventName (String) |
Define que tipo de evento, que aconteceu em seu aplicativo, deve resultar na transmissão de um beacon personalizado |
startTime (Number, opcional) |
Um registro de data e hora, em milissegundos, desde a Época indicando em que momento o evento foi iniciado. Muda de volta para now() - duration quando não estiver definido. |
duration (Number, opcional) |
A duração em milissegundos de quanto tempo o evento durou. O padrão é zero. |
viewName (String, opcional) |
Uma cadeia de caracteres que você pode passar para agrupar a solicitação em uma exibição. Se você enviar inexistente explicitamente, o viewName será ignorado. Como alternativa, você pode deixar de fora o parâmetro viewName para usar o nome da visualização atual que você definiu em setView(String name)). |
backendTracingId (String, opcional) |
Identificador para criar um rastreamento de back-end para esse evento |
meta (object, opcional) |
Um objeto ` JavaScript ` com valores de string que pode ser usado para enviar metadados para Instana exclusivamente para este evento específico. Em contraste com o uso da API de metadados, esses metadados não são incluídos em indicadores subsequentes. |
customMetric (double, opcional) |
Dados de métricas personalizados com precisão de até 4 casas decimais. Não inclua informações confidenciais nesta métrica. |
Exemplo de eventos personalizados
Instana.reportEvent('myCustomEvent', {
startTime: Date.now() - 500,
duration: 300,
viewName: 'overridenViewName',
backendTracingId: '31ab91fc1092',
meta: {
state: 'running'
},
customMetric: 123.4567
});
Excluindo URLs do monitoramento
Os URLs podem ser ignorados fornecendo expressões regulares ou adicionando-os à lista ignoreURLs. Essa função é útil quando você deseja ignorar todas as solicitações do tipo ` HTTP ` que contenham dados confidenciais, como uma senha.
O agente precisa converter cada sequência de caracteres que você fornecer ao setIgnoreURLsByRegex método em uma expressão regular nativa para cada plataforma compatível. Você pode acompanhar as rejeições de promessas, que o informam sobre qualquer problema que o agente tenha encontrado enquanto você interpretava sua entrada.
static setIgnoreURLsByRegex([]String regexArray)
O código a seguir é uma definição de TypeScript:
setIgnoreURLsByRegex(regexArray: Array<string>): Promise<any>;
Excluir os parâmetros URL
A tabela a seguir lista os parâmetros de exclusão do URL :
| Parâmetro | Descrição |
|---|---|
regexArray |
Uma matriz de objetos String contendo a expressão regular que corresponde às URLs que você deseja ignorar. |
Retorna: Promise(Boolean). Se for rejeitada, a exceção conterá uma lista de todos os parâmetros que não foram convertidos em regex nativo.
Excluir o exemplo URL
export default class App extends Component {
componentDidMount() {
setIgnoreURLsByRegex();
async function setIgnoreURLsByRegex() {
try {
await Instana.setIgnoreURLsByRegex(["http:\/\/localhost:8081.*", "/.*([&?])password=.*/i"]);
} catch (e) {
console.warn(e);
}
}
}
}
O exemplo ignora todas as consultas para o bundler do Metro e todas as URLs que contêm uma senha na consulta.
Ocultar os parâmetros de consulta d URL
Os parâmetros de consulta que estão nos URLs coletados podem conter dados confidenciais. Portanto, o agente Instana permite especificar padrões de expressão regular para chaves de parâmetros de consulta cujos valores precisam ser ocultados. Qualquer valor que precise ser redigido é substituído pela string <redacted>. A supressão ocorre no agente Instana antes de o agente enviar o relatório ao servidor Instana. Portanto, os segredos não chegam aos servidores do Instana para processamento e não estão disponíveis para análise na interface do usuário do Instana nem para recuperação por meio do Instana API.
Por padrão, o agente do Instana está configurado com uma lista de três padrões de expressão regular para ocultar automaticamente os valores dos parâmetros de consulta das chaves "password", "key" e "secret".
static setRedactHTTPQueryByRegex([]String regexArray)
O código a seguir é uma definição de TypeScript:
setRedactHTTPQueryByRegex(regexArray: Array<string>): Promise<any>;
Ocultar os parâmetros de consulta d URL
A tabela a seguir lista os parâmetros de consulta do Redact URL :
| Parâmetro | Descrição |
|---|---|
regex ([NSRegularExpression]) |
Uma matriz de String que corresponde às chaves dos valores que você deseja redigir. |
Exemplo de consulta de supressão em ` URL `
export default class App extends Component {
componentDidMount() {
setRedactHTTPQueryByRegex();
async function setRedactHTTPQueryByRegex() {
try {
await Instana.setRedactHTTPQueryByRegex(["pass(word|wort)"]);
} catch (e) {
console.warn(e);
}
}
}
}
Neste exemplo, os valores das chaves "password" ou "passwort" do parâmetro ` HTTP ` são ocultados.
O URL capturado https://example.com/accounts/?password=123&passwort=459 é coletado e exibido como https://example.com/accounts/?password=<redacted>&passwort=<redacted>.
/account/<account id>/status) ou parâmetros de matriz (/account;accountId=<account id>/status) como segredos.Capturar cabeçalhos d HTTP
Opcionalmente, o agente Instana pode capturar os cabeçalhos HTTP de todas as solicitações e respostas rastreadas.
Uma lista de padrões regex pode ser definida para determinar quais cabeçalhos devem ser capturados.
Se o mesmo nome de cabeçalho estiver presente tanto em uma solicitação quanto em sua resposta, somente o valor do cabeçalho da resposta será considerado.
static setCaptureHeadersByRegex([]String regexArray)
O código a seguir é uma definição de TypeScript:
setCaptureHeadersByRegex(regexArray: Array<string>): Promise<any>;
Exemplo de captura de cabeçalhos d HTTP
export default class App extends Component {
componentDidMount() {
setCaptureHeadersByRegex();
async function setCaptureHeadersByRegex() {
try {
await Instana.setCaptureHeadersByRegex(["cache-control", "etag"]);
} catch (e) {
console.warn(e);
}
}
}
}
Modo de envio lento (obsoleto desde a versão 2.0.11 )
Por padrão, se o envio de um beacon falhar, o agente do Instana tenta reenviá-lo até que seja enviado com sucesso. No entanto, esse comportamento não funciona bem com algumas redes de celular. Ao ativar o recurso de modo de envio lento, você pode alterar o intervalo de envio do sinal para o valor de tempo atribuído ao slowSendInterval parâmetro. Cada envio consiste em apenas um indicador em vez de um lote (no máximo 100 indicadores em um lote). O agente do serviço de notificação de eventos ( Instana ) permanece no modo de envio lento até que um sinal de notificação seja enviado com sucesso.
O intervalo de tempo válido para o slowSendInterval parâmetro é de 2 a 3.600 segundos.
O código a seguir é uma definição de TypeScript:
setup(key: string, reportingUrl: string, {slowSendInterval: number}): void;
Exemplo do modo de envio lento
export default class App extends Component {
componentDidMount() {
var options = {}
options.slowSendInterval = 120.0;
Instana.setup('<your key>', '<your reporting url>', options);
}
}
ID da sessão do usuário
Por padrão, a sessão do usuário é rastreada e um UUID (Universally Unique Identifier) é gerado aleatoriamente. Esse ID permanece inalterado enquanto o aplicativo está instalado. Você pode configurar o tempo de validade do ID da sessão do usuário usando o usiRefreshTimeIntervalInHrs parâmetro.
Os seguintes valores de parâmetro indicam o status do ID de sessão do usuário:
Número negativo: Este valor indica que o ID de sessão do usuário nunca expira. O valor padrão é -1.
Número positivo: Esse valor significa que a ID da sessão do usuário é atualizada após o tempo definido. Um novo UUID é gerado e usado.
Zero: esse valor denotado por 0.0 significa que o ID de sessão do usuário está desativado..
O código a seguir é uma definição de TypeScript:
setup(key: string, reportingUrl: string, {usiRefreshTimeIntervalInHrs: number}): void;
Exemplo de ID de sessão do usuário
export default class App extends Component {
componentDidMount() {
var options = {}
options.usiRefreshTimeIntervalInHrs = 24.0;
Instana.setup('<your key>', '<your reporting url>', options);
}
}
Beacons de limitação de taxa
Com esse parâmetro, você pode personalizar os limites do número de beacons que podem ser enviados dentro de um intervalo de tempo específico. A tabela a seguir lista as opções disponíveis e os limites de baliza correspondentes. Por padrão, 0 (DEFAULT_LIMITS) está selecionado.
| Limites disponíveis | Contagens |
|---|---|
0 (DEFAULT_LIMITS) |
- 500 beacons a cada 5 minutos - 20 beacons a cada 10 segundos |
1 (MID_LIMITS) |
- 1.000 beacons a cada 5 minutos - 40 beacons a cada 10 segundos |
2 (MAX_LIMITS) |
- 2.500 beacons a cada 5 minutos - 100 beacons a cada 10 segundos |
Exemplo
class App extends Component {
componentDidMount() {
let options = {};
options.suspendReporting = Instana.androidSuspendReport.LOW_BATTERY_OR_CELLULAR_CONNECTION;
options.rateLimits = 2;
Instana.setup('<your key>', '<your reporting url>', options);
}
}
Correlação de back-end com o W3CHeaders
Quando a enableW3CHeaders opção ( Boolean , opcional) está ativada, o agente do React Native inclui os traceparenttracestate cabeçalhos e em todas as chamadas monitoradas do API. Esses cabeçalhos permitem a correlação do backend, mesmo que o backend não esteja equipado com o agente do Instana. Nesses casos, é necessário usar uma ferramenta de monitoramento compatível (como OpenTelemetry ) para exportar os detalhes do rastreamento do backend para o backend Instana. Se essa opção estiver desativada, a correlação do backend só será possível quando o backend também for monitorado pelo agente do Instana. O valor padrão é false.
Exemplo
class App extends Component {
componentDidMount() {
let options = {};
options.enableW3CHeaders = true;
Instana.setup('<your key>', '<your reporting url>', options);
}
}