React Native monitoraggio API

Scopri come utilizzare l' React Native API per monitorare e strumentare le tue applicazioni React Native con Instana. Ciò consente di monitorare in tempo reale le prestazioni delle applicazioni mobili ibride e di ottenere informazioni dettagliate al riguardo.

React Native versioni dell'agente

Per scoprire gli aggiornamenti, i miglioramenti e le modifiche apportate all'agente React Native, consulta il file del registro delle modifiche all'indirizzo GitHub:

Instana React Native agente API

È possibile utilizzare l'agente Instana React Native tramite Instana metodi di classe che vengono spiegati qui.

React Native L'agente supporta i progetti TypeScript a partire dalla versione 2.0.6.

Configura

Inizializza ` Instana ` nella tua 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});
  }
}

Il codice seguente è una definizione di 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;

Parametri di impostazione

La tabella seguente elenca i parametri di configurazione:

Parametro Descrizione
key (String) Instana chiave di configurazione del monitoraggio
reportingURL (String) L' URL, che punta all'istanza Instana a cui devono essere inviati i dati di monitoraggio

Identificativo sessione

Ogni istanza dell'agente Instana dispone di un identificatore di sessione univoco che è possibile utilizzare per altri scopi all'interno dell'applicazione.

static getSessionID()

Il codice seguente è una definizione di TypeScript:

getSessionID(): Promise<string>;

Parametri dell'identificatore di sessione

Restituisce: Promise(String)

Esempio di identificatore di sessione

var sessionID = await Instana.getSessionID();

Monitoraggio automatico dell' HTTP

Instana L'agente garantisce il monitoraggio automatico delle richieste all'indirizzo HTTP.

Viste

Instana può segmentare i dati analitici delle app mobili in base a viste logiche. È possibile impostare il nome della vista utilizzando il Instana.setView(String) metodo. La vista è quindi associata a tutti i segnalatori monitorati, finché non cambia quando viene richiamato setView.

Non utilizzare nomi tecnici o generici come Class (ad esempio WebViewActivity) per definire le viste. Si usino invece nomi leggibili per le viste (per esempio, product detail page o payment selection). Concentrandosi sulle esperienze degli utenti, i membri del team che non hanno una conoscenza approfondita della base di codice possono comprendere le informazioni fornite.

Nota: Instana.setView(String) viene chiamato quando una schermata viene visualizzata all'utente, anziché quando viene creata (come nel caso di un frammento che potrebbe essere creato una sola volta ma visualizzato più volte). Quando si imposta il nome della vista, Instana è in grado di monitorare non solo i caricamenti delle pagine, ma anche i passaggi da una pagina all'altra.
static setView(String name)

Il codice seguente è una definizione di TypeScript:

setView(name: string): void;

Parametri delle viste

La tabella seguente elenca i parametri delle viste:

Parametro Descrizione
name (String) Il nome della vista.

Esempio di visualizzazioni

Instana.setView('Webview: FitBit authorization');

Identificazione degli utenti

È possibile, facoltativamente, inviare informazioni specifiche dell'utente insieme ai dati trasmessi a Instana. Queste informazioni possono quindi essere utilizzate per sbloccare ulteriori funzionalità, quali:

  • Calcolare il numero di utenti interessati dagli errori
  • Filtrare i dati per utenti specifici
  • Scopri quale utente ha avviato una modifica alla vista o una richiest HTTP

Per impostazione predefinita, Instana non associa alcuna informazione identificativa dell'utente ai beacon. È necessario conoscere le rispettive leggi in materia di protezione dei dati. Identificare gli utenti tramite un ID utente. Per l' Instana si tratta di un String parametro trasparente utilizzato esclusivamente per calcolare determinati indicatori. userName e userEmail possono essere utilizzati anche per avere accesso a più filtri e a una migliore presentazione delle informazioni dell'utente.

Nei casi in cui si gestiscono utenti anonimi e quindi non si ha accesso agli ID utente, si possono usare in alternativa gli ID di sessione. Gli ID di sessione non sono utili quanto gli ID utente quando si filtrano i dati, ma costituiscono un buon indicatore per calcolare le metriche relative agli utenti coinvolti o agli utenti unici. Impostare un nome utente come Anonymous per avere una chiara differenziazione tra utenti autenticati e non autenticati. Gli ID sessione possono essere dati sensibili (in base al framework o alla piattaforma utilizzata). Si consiglia di applicare un algoritmo di hashing agli ID di sessione per evitare di trasmettere a Instana dati che potrebbero consentire l'accesso.

I dati già trasmessi al server di Instana non possono essere aggiornati a posteriori. Per questo motivo, è importante richiamare questa funzione ` API ` il prima possibile durante il processo di avvio dell'app.

static setUserID(String ID)
static setUserName(String email)
static setUserEmail(String name)

Il codice seguente è una definizione di TypeScript:

setUserID(id: string): void;
setUserName(name: string): void;
setUserEmail(email: string): void;

parametri utente

La tabella seguente elenca i parametri utente:

Parametro Descrizione
ID (String) Un identificativo per l'utente.
email (String) L'indirizzo email dell'utente.
name (String) Il nome dell'utente.

Esempio di utilizzo

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');
  }
}

Metadati

È possibile associare metadati arbitrari a tutti i dati trasmessi a Instana. Si può usare per tenere traccia dei valori di configurazione dell'interfaccia utente, delle impostazioni, dei flag delle funzioni e di qualsiasi altro contesto che possa essere utile per l'analisi.

Nota: attualmente Instana supporta fino a 50 coppie chiave-valore nei metadati.
static setMeta(String key, String value)

Il codice seguente è una definizione di TypeScript:

setMeta(key: string, value: string): void;

Parametri dei metadati

La tabella seguente elenca i parametri dei metadati:

Parametro Descrizione
value (String) Il value della coppia chiave - valore che vuoi aggiungere come metadati.
key (String) Il key della coppia chiave - valore che vuoi aggiungere come metadati.

Esempio di metadati

export default class App extends Component {
  componentDidMount() {
    Instana.setMeta('randomKey1', 'randomValue1');
    Instana.setMeta('randomKey2', 'randomValue2');
  }
}

Segnala eventi personalizzati

Gli eventi personalizzati consentono di segnalare ad Instana attività non standard, interazioni importanti e tempistiche personalizzate. Può essere particolarmente utile quando si analizzano errori non rilevati (breadcrumb) e per tenere traccia di più metriche delle prestazioni.

static reportEvent(String eventName, {
  startTime: Number startTime,
  duration: Number duration,
  viewName: String viewName,
  backendTraceId: String backendTraceId,
  meta: Map meta
})

Il codice seguente è una definizione di TypeScript:

reportEvent(eventName: string, options?: {
  startTime?: number;
  duration?: number;
  viewName?: string;
  meta?: Map<string, string>;
  backendTracingId?: string;
  customMetric?: number;
 }): void;

Parametri degli eventi personalizzati

La tabella seguente elenca i parametri degli eventi personalizzati:

Parametro Descrizione
eventName (String) Definisce il tipo di evento che si verifica nell'applicazione e che deve comportare la trasmissione di un beacon personalizzato
startTime (Number, facoltativo) Una data/ora in millisecondi a partire da Epoch che indica l'ora in cui è stato avviato l'evento. Quando non è definito, torna a now() - duration.
duration (Number, facoltativo) La durata, in millisecondi, della durata dell'evento. L'impostazione predefinita è zero.
viewName (String, facoltativo) Una stringa che si può passare per raggruppare la richiesta a una vista. Se si invia esplicitamente nil, viewName viene ignorato. In alternativa, si può omettere il parametro viewName per utilizzare il nome della vista corrente impostato in setView(String name)).
backendTracingId (String, facoltativo) Identificatore per creare una traccia di backend per questo evento
meta (object, facoltativo) Un oggetto di tipo ` JavaScript ` contenente valori stringa che può essere utilizzato per inviare metadati a Instana esclusivamente per questo singolo evento. A differenza di quanto avviene con i metadati API, questi metadati non vengono inclusi nei beacon successivi.
customMetric (double, facoltativo) Dati metrici personalizzati con precisione fino a 4 posizioni decimali. Non includere informazioni sensibili in questa metrica.

Esempio di eventi personalizzati

Instana.reportEvent('myCustomEvent', {
  startTime: Date.now() - 500,
  duration: 300,
  viewName: 'overridenViewName',
  backendTracingId: '31ab91fc1092',
  meta: {
    state: 'running'
  },
  customMetric: 123.4567
});

Esclusione di URL dal monitoraggio

Gli URL possono essere ignorati fornendo espressioni regolari o aggiungendoli all'elenco ignoreURLs. Questa funzione è utile quando si desidera ignorare tutte le richieste HTTP che contengono dati sensibili, come ad esempio una password.

L'agente deve convertire ogni stringa fornita al setIgnoreURLsByRegex metodo in un'espressione regolare nativa per ciascuna piattaforma supportata. È possibile tenere traccia dei rifiuti di promessa, che informano l'utente su qualsiasi problema riscontrato dall'agente durante l'interpretazione dell'input.

static setIgnoreURLsByRegex([]String regexArray)

Il codice seguente è una definizione di TypeScript:

setIgnoreURLsByRegex(regexArray: Array<string>): Promise<any>;

Escludi i parametri URL

La tabella seguente elenca i parametri di esclusione dell' URL :

Parametro Descrizione
regexArray Un array di oggetti String contenenti l'espressione regolare corrispondente agli URL che si desidera ignorare.

Restituisce: Promise(Boolean). Se viene rifiutata, l'eccezione contiene un elenco di tutti i parametri che non sono stati convertiti in regex native.

Esempio di esclusione di 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);
      }
    }
  }
}

L'esempio ignora tutte le query al bundle Metro e tutti gli URL che contengono una password nella query.

Occultare i parametri di query dell' URL

I parametri di query presenti negli URL raccolti potrebbero contenere dati sensibili. Pertanto, l'agente Instana supporta la definizione di modelli di espressioni regolari per le chiavi dei parametri di query i cui valori devono essere oscurati. Tutti i valori che devono essere eliminati vengono sostituiti con la stringa <redacted>. La redazione avviene all'interno dell'agente Instana prima che l'agente invii i dati al server Instana. Pertanto, i dati riservati non vengono inviati ai server di Instana per l'elaborazione e non sono disponibili per l'analisi nell'interfaccia utente di Instana né per il recupero tramite Instana API.

Per impostazione predefinita, l'agente " Instana " è configurato con un elenco di tre espressioni regolari per oscurare automaticamente i valori dei parametri di query relativi alle chiavi "password", "key" e "secret".

static setRedactHTTPQueryByRegex([]String regexArray)

Il codice seguente è una definizione di TypeScript:

setRedactHTTPQueryByRegex(regexArray: Array<string>): Promise<any>;

Occultare i parametri di query dell' URL

La tabella seguente elenca i parametri di query di Redact URL :

Parametro Descrizione
regex ([NSRegularExpression]) Una matrice di String che corrisponde alle chiavi dei valori che si desidera eliminare.

Esempio di query Redact URL

export default class App extends Component {
  componentDidMount() {
    setRedactHTTPQueryByRegex();
    async function setRedactHTTPQueryByRegex() {
      try {
        await Instana.setRedactHTTPQueryByRegex(["pass(word|wort)"]);
      } catch (e) {
        console.warn(e);
      }
    }
  }
}

In questo esempio vengono oscurati i valori delle chiavi "password" o "passwort" del parametro " HTTP ".

L' URL e https://example.com/accounts/?password=123&passwort=459 acquisito viene raccolto e visualizzato come https://example.com/accounts/?password=<redacted>&passwort=<redacted>.

Nota: l'agente Instana non supporta il trattamento dei parametri di percorso (/account/<account id>/status) o dei parametri di matrice (/account;accountId=<account id>/status) come segreti.

Acquisizione delle intestazioni dell' HTTP

Se lo si desidera, l'agente di Instana può acquisire le intestazioni HTTP di ogni richiesta e risposta monitorata.

È possibile definire un elenco di modelli regex per determinare quali intestazioni devono essere catturate.

Se lo stesso nome di intestazione è presente sia in una richiesta che nella sua risposta, viene considerato solo il valore dell'intestazione della risposta.

static setCaptureHeadersByRegex([]String regexArray)

Il codice seguente è una definizione di TypeScript:

setCaptureHeadersByRegex(regexArray: Array<string>): Promise<any>;

Esempio di acquisizione delle intestazioni di un file ` HTTP `

export default class App extends Component {
  componentDidMount() {
    setCaptureHeadersByRegex();
    async function setCaptureHeadersByRegex() {
      try {
        await Instana.setCaptureHeadersByRegex(["cache-control", "etag"]);
      } catch (e) {
        console.warn(e);
      }
    }
  }
}

Modalità di invio lento (obsoleta dalla versione 2.0.11 )

Nota: per impostazione predefinita, la funzione di invio lento è disattivata. Se necessario, è possibile abilitare questa funzione.

Per impostazione predefinita, se l'invio di un beacon non va a buon fine, l'agente Instana tenta di inviarlo nuovamente finché non viene inviato con successo. Tuttavia, questo comportamento non funziona bene con alcune reti cellulari. Attivando la funzione "modalità di invio lento", è possibile impostare l'intervallo di invio del segnale di localizzazione sul valore temporale assegnato al slowSendInterval parametro. Ogni invio consiste di un solo beacon invece di un batch (un massimo di 100 beacon in un batch). L'agente " Instana " rimane in modalità di invio lento finché un beacon non viene inviato con successo.

L'intervallo di tempo valido per il slowSendInterval parametro è compreso tra 2 e 3600 secondi.

Il codice seguente è una definizione di TypeScript:

setup(key: string, reportingUrl: string, {slowSendInterval: number}): void;

Esempio di modalità di invio lento

export default class App extends Component {
  componentDidMount() {
    var options = {}
    options.slowSendInterval = 120.0;
    Instana.setup('<your key>', '<your reporting url>', options);
  }
}

ID della sessione utente

Per impostazione predefinita, la sessione dell'utente viene tracciata e viene generato in modo casuale un UUID (Universally Unique Identifier). Questo ID rimane invariato mentre l'applicazione è installata. È possibile configurare il tempo di scadenza dell'ID della sessione utente utilizzando il usiRefreshTimeIntervalInHrs parametro.

I seguenti valori di parametro indicano lo stato dell'ID sessione utente:

  • Numero negativo: questo valore indica che l'ID sessione utente non scade mai. Il valore predefinito è -1.

  • Numero positivo: Questo valore significa che l'ID della sessione utente viene aggiornato dopo il tempo impostato. Viene generato e utilizzato un nuovo UUID.

  • Zero: questo valore contrassegnato da 0.0 indica che l'ID sessione utente è disabilitato.

Il codice seguente è una definizione di TypeScript:

setup(key: string, reportingUrl: string, {usiRefreshTimeIntervalInHrs: number}): void;
 

Esempio di ID sessione utente

export default class App extends Component {
  componentDidMount() {
    var options = {}
    options.usiRefreshTimeIntervalInHrs = 24.0;
    Instana.setup('<your key>', '<your reporting url>', options);
  }
}

Beacon con limiti di velocità

Con questo parametro è possibile personalizzare i limiti relativi al numero di beacon che possono essere inviati in un determinato intervallo di tempo. La tabella seguente elenca le opzioni disponibili e i relativi limiti dei beacon. Per impostazione predefinita, 0 (DEFAULT_LIMITS) è selezionato.

Limiti disponibili Conteggi
0 (DEFAULT_LIMITS) - 500 segnali ogni 5 minuti - 20 segnali ogni 10 secondi
1 (MID_LIMITS) - 1000 segnali ogni 5 minuti - 40 segnali ogni 10 secondi
2 (MAX_LIMITS) - 2500 segnali ogni 5 minuti - 100 segnali ogni 10 secondi

Esempio

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);
  }
}

Correlazione backend con W3CHeaders

Quando l'opzione enableW3CHeaders ( Boolean , facoltativa) è abilitata, l'agente React Native include le traceparent intestazioni tracestate e in tutte le chiamate API monitorate. Queste intestazioni consentono la correlazione del backend, anche se quest'ultimo non è strumentato con l'agente Instana. In questi casi, è necessario utilizzare uno strumento di monitoraggio compatibile (come OpenTelemetry ) per esportare i dettagli delle tracce del backend nel backend Instana. Se questa opzione è disabilitata, la correlazione del backend è possibile solo se il backend è monitorato anche dall'agente di Instana. Il valore predefinito è false.

Esempio

class App extends Component {
  componentDidMount() {
    let options = {};
    options.enableW3CHeaders = true;
    Instana.setup('<your key>', '<your reporting url>', options);
  }
}