Abilitare un'estensione del framework per Application Insights JavaScript SDK
Oltre all'SDK principale, sono disponibili anche dei plug-in per framework specifici, ad esempio il plug-in React, il plug-in React Native e il plug-in Angular.
Questi plug-in offrono funzionalità e integrazione aggiuntive con il framework specifico.
Prerequisiti
- Installare JavaScript SDK.
- Assicurarsi che la versione del plug-in React che si vuole installare sia compatibile con la versione di Application Insights. Per altre informazioni, vedere Matrice di compatibilità per il plug-in React.
Che cosa abilita il plug-in?
Il plug-in React per Application Insights JavaScript SDK abilita:
- Tenere traccia della cronologia dei router
- Traccia delle eccezioni
- Tenere traccia dell'utilizzo dei componenti
- Usare Application Insights con il contesto React
Aggiungere un plug-in
Per aggiungere un plug-in, seguire la procedura descritta in questa sezione.
Installare il pacchetto
npm install @microsoft/applicationinsights-react-js
Aggiungere l'estensione al codice
Nota
Il 31 marzo 2025, il supporto per l'inserimento delle chiavi di strumentazione terminerà. L'inserimento delle chiavi di strumentazione continuerà a funzionare, ma non saranno più garantiti aggiornamenti o supporto per la funzionalità. Eseguire la transizione alle stringhe di connessione per sfruttare le nuove funzionalità.
Inizializzare una connessione ad Application Insights:
import React from 'react';
import { ApplicationInsights } from '@microsoft/applicationinsights-web';
import { ReactPlugin } from '@microsoft/applicationinsights-react-js';
import { createBrowserHistory } from "history";
const browserHistory = createBrowserHistory({ basename: '' });
var reactPlugin = new ReactPlugin();
// *** Add the Click Analytics plug-in. ***
/* var clickPluginInstance = new ClickAnalyticsPlugin();
var clickPluginConfig = {
autoCapture: true
}; */
var appInsights = new ApplicationInsights({
config: {
connectionString: 'YOUR_CONNECTION_STRING_GOES_HERE',
// *** If you're adding the Click Analytics plug-in, delete the next line. ***
extensions: [reactPlugin],
// *** Add the Click Analytics plug-in. ***
// extensions: [reactPlugin, clickPluginInstance],
extensionConfig: {
[reactPlugin.identifier]: { history: browserHistory }
// *** Add the Click Analytics plug-in. ***
// [clickPluginInstance.identifier]: clickPluginConfig
}
}
});
appInsights.loadAppInsights();
(Facoltativo) Aggiungere il plug-in Click Analytics
Per aggiungere il plug-in Click Analytics:
Rimuovere il commento dalle righe per Click Analytics.
Eseguire una delle operazioni seguenti, a seconda del plug-in che si sta aggiungendo:
- Per React, eliminare
extensions: [reactPlugin],
. - Per React Native eliminare
extensions: [RNPlugin]
. - Per Angular, eliminare
extensions: [angularPlugin],
.
- Per React, eliminare
Vedere Usare il plug-in Click Analytics per continuare con il processo di installazione.
Impostazione
Questa sezione illustra le impostazioni di configurazione per le estensioni del framework per Application Insights JavaScript SDK.
Tenere traccia della cronologia dei router
Nome | Tipo | Obbligatorio? | Default | Descrizione |
---|---|---|---|---|
history | oggetto | Facoltativo | Null | Tenere traccia della cronologia del router. Per altre informazioni, vedere la documentazione del pacchetto router React. Per tenere traccia della cronologia dei router, la maggior parte degli utenti può usare il campo enableAutoRouteTracking nella configurazione JavaScript SDK. Questo campo raccoglie gli stessi dati per le visualizzazioni pagina dell'oggetto history .Usare l'oggetto history quando si usa un'implementazione del router che non aggiorna l'URL del browser, ovvero ciò su cui la configurazione è in ascolto. Non è consigliabile abilitare sia il campo enableAutoRouteTracking che l'oggetto history , perché si otterranno più eventi di visualizzazione pagina. |
Nell'esempio di codice seguente viene illustrato come abilitare il campo enableAutoRouteTracking
.
var reactPlugin = new ReactPlugin();
var appInsights = new ApplicationInsights({
config: {
connectionString: 'YOUR_CONNECTION_STRING_GOES_HERE',
enableAutoRouteTracking: true,
extensions: [reactPlugin]
}
});
appInsights.loadAppInsights();
Traccia delle eccezioni
I limiti di errore React consentono di gestire normalmente un'eccezione non rilevata quando si verifica all'interno di un'applicazione React. Quando si verifica un'eccezione di questo tipo, è probabile che l'eccezione debba essere registrata. Il plug-in React per Application Insights fornisce un componente limite di errore che registra automaticamente l'eccezione quando si verifica.
import React from "react";
import { reactPlugin } from "./AppInsights";
import { AppInsightsErrorBoundary } from "@microsoft/applicationinsights-react-js";
const App = () => {
return (
<AppInsightsErrorBoundary onError={() => <h1>I believe something went wrong</h1>} appInsights={reactPlugin}>
/* app here */
</AppInsightsErrorBoundary>
);
};
Il AppInsightsErrorBoundary
richiede il passaggio di due oggetti. Si tratta dell'istanza ReactPlugin
creata per l'applicazione e di un componente di cui eseguire il rendering quando si verifica un'eccezione. Quando si verifica un'eccezione non gestita, trackException
viene chiamato con le informazioni fornite al limite di errore e viene visualizzato il componente onError
.
Raccogliere informazioni sul dispositivo
Le informazioni sul dispositivo, che includono Browser, sistema operativo, versione e lingua, sono già raccolte dal pacchetto Web di Application Insights.
Configurazione (altro)
Tenere traccia dell'utilizzo dei componenti
Una funzionalità unica per il plug-in React è che è possibile instrumentare componenti specifici e monitorarli singolarmente.
Per instrumentare i componenti React con il rilevamento dell'utilizzo, applicare la funzione withAITracking
del componente di ordine superiore. Per abilitare Application Insights per un componente, eseguire il wrapping di withAITracking
attorno aò componente:
import React from 'react';
import { withAITracking } from '@microsoft/applicationinsights-react-js';
import { reactPlugin, appInsights } from './AppInsights';
// To instrument various React components usage tracking, apply the `withAITracking` higher-order
// component function.
class MyComponent extends React.Component {
...
}
// withAITracking takes 4 parameters (reactPlugin, Component, ComponentName, className).
// The first two are required and the other two are optional.
export default withAITracking(reactPlugin, MyComponent);
Misura l'ora dall'evento ComponentDidMount
all'evento ComponentWillUnmount
. Per rendere il risultato più accurato, sottrae il tempo in cui l'utente è stato inattivo usando React Component Engaged Time = ComponentWillUnmount timestamp - ComponentDidMount timestamp - idle time
.
Esplorare i dati
Usare Esplora metriche di Monitoraggio di Azure per tracciare un grafico per il nome React Component Engaged Time (seconds)
della metrica personalizzata e dividere questa metrica personalizzata per Component Name
.
È anche possibile eseguire query personalizzate per dividere i dati di Application Insights per generare report e visualizzazioni in base alle esigenze. Ecco un esempio di query personalizzata. Procedere e incollarlo direttamente nell'editor di query per testarlo.
customMetrics
| where name contains "React Component Engaged Time (seconds)"
| summarize avg(value), count() by tostring(customDimensions["Component Name"])
La visualizzazione delle nuove metriche personalizzate nel portale di Azure può richiedere fino a 10 minuti.
Usare Application Insights con il contesto React
Forniamo hook generali per consentire di personalizzare il rilevamento delle modifiche per singoli componenti. In alternativa, è possibile usare TrackMetric o useTrackEvent, che sono contatti predefiniti forniti per tenere traccia delle modifiche apportate ai componenti.
Gli hook React per Application Insights sono progettati per l'uso del Contesto React come aspetto che lo contiene. Per usare il Contesto, inizializzare Application Insights e quindi importare l'oggetto Contesto:
import React from "react";
import { AppInsightsContext } from "@microsoft/applicationinsights-react-js";
import { reactPlugin } from "./AppInsights";
const App = () => {
return (
<AppInsightsContext.Provider value={reactPlugin}>
/* your application here */
</AppInsightsContext.Provider>
);
};
Questo provider di contesto rende Application Insights disponibile come hook useContext
all'interno di tutti i componenti figlio di esso:
import React from "react";
import { useAppInsightsContext } from "@microsoft/applicationinsights-react-js";
const MyComponent = () => {
const appInsights = useAppInsightsContext();
const metricData = {
average: engagementTime,
name: "React Component Engaged Time (seconds)",
sampleCount: 1
};
const additionalProperties = { "Component Name": 'MyComponent' };
appInsights.trackMetric(metricData, additionalProperties);
return (
<h1>My Component</h1>
);
}
export default MyComponent;
useTrackMetric
Hook useTrackMetric
replica la funzionalità del componente di ordine superiore withAITracking
, senza aggiungere un altro componente alla struttura del componente. L'hook accetta due argomenti:
- Istanza di Application Insights, che può essere ottenuta dall'hook
useAppInsightsContext
. - Identificatore del componente per il rilevamento, ad esempio il relativo nome.
import React from "react";
import { useAppInsightsContext, useTrackMetric } from "@microsoft/applicationinsights-react-js";
const MyComponent = () => {
const appInsights = useAppInsightsContext();
const trackComponent = useTrackMetric(appInsights, "MyComponent");
return (
<h1 onHover={trackComponent} onClick={trackComponent}>My Component</h1>
);
}
export default MyComponent;
Funziona come il componente di ordine superiore, ma risponde agli eventi del ciclo di vita hook anziché a un ciclo di vita dei componenti. Se è necessario eseguire interazioni specifiche, l'hook deve essere fornito in modo esplicito agli eventi utente.
useTrackEvent
Usare l'hook useTrackEvent
per tenere traccia di qualsiasi evento personalizzato di cui potrebbe essere necessario tenere traccia di un'applicazione, ad esempio un clic su un pulsante o un'altra chiamata API. Accetta quattro argomenti:
- Istanza di Application Insights, che può essere ottenuta dall'hook
useAppInsightsContext
. - Nome dell'evento.
- Oggetto dati evento che incapsula le modifiche che devono essere rilevate.
- Flag skipFirstRun (facoltativo) per ignorare la chiamata
trackEvent
all'inizializzazione. Il valore predefinito è impostato sutrue
per simulare più strettamente il funzionamento della versione non Hook. Con hookuseEffect
, l'effetto viene attivato in ogni aggiornamento dei valori, inclusa l'impostazione iniziale del valore. Di conseguenza, il rilevamento inizia troppo presto, causando il rilevamento di eventi potenzialmente indesiderati.
import React, { useState, useEffect } from "react";
import { useAppInsightsContext, useTrackEvent } from "@microsoft/applicationinsights-react-js";
const MyComponent = () => {
const appInsights = useAppInsightsContext();
const [cart, setCart] = useState([]);
const trackCheckout = useTrackEvent(appInsights, "Checkout", cart);
const trackCartUpdate = useTrackEvent(appInsights, "Cart Updated", cart);
useEffect(() => {
trackCartUpdate({ cartCount: cart.length });
}, [cart]);
const performCheckout = () => {
trackCheckout();
// submit data
};
return (
<div>
<ul>
<li>Product 1 <button onClick={() => setCart([...cart, "Product 1"])}>Add to Cart</button></li>
<li>Product 2 <button onClick={() => setCart([...cart, "Product 2"])}>Add to Cart</button></li>
<li>Product 3 <button onClick={() => setCart([...cart, "Product 3"])}>Add to Cart</button></li>
<li>Product 4 <button onClick={() => setCart([...cart, "Product 4"])}>Add to Cart</button></li>
</ul>
<button onClick={performCheckout}>Checkout</button>
</div>
);
}
export default MyComponent;
Quando si usa Hook, è possibile fornire un payload di dati per aggiungere altri dati all'evento quando vengono archiviati in Application Insights.
Esempio di app
Domande frequenti
Questa sezione fornisce le risposte alle domande comuni.
In che modo Application Insights genera informazioni sul dispositivo, ad esempio browser, sistema operativo, lingua e modello?
Il browser passa la stringa agente utente nell'intestazione HTTP della richiesta. Il servizio di inserimento di Application Insights usa il parser UA per generare i campi visualizzati nelle tabelle e nelle esperienze dei dati. Di conseguenza, gli utenti di Application Insights non possono modificare questi campi.
In alcuni casi questi dati potrebbero risultare mancanti o non accurati se l'utente o l'azienda disabilita l'invio dell'agente utente nelle impostazioni del browser. Le espressioni regolari del parser dell'agente utente potrebbero non includere tutte le informazioni sul dispositivo. In alternativa, Application Insights potrebbe non aver adottato gli aggiornamenti più recenti.