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