Configurazione di Application Insights JavaScript SDK di Monitoraggio di Microsoft Azure

applicazione Azure Insights JavaScript SDK offre la configurazione per il rilevamento, il monitoraggio e il debug delle applicazioni Web.

Configurazione dell'SDK

Questi campi di configurazione sono facoltativi e il valore predefinito è false, se non diversamente specificato. Le sezioni seguenti raggruppano i campi in base allo scopo.

Per istruzioni su come aggiungere la configurazione dell'SDK, vedere Aggiungere la configurazione dell'SDK.

Cookie e archiviazione delle sessioni

Utilizzare disableCookiesUsage per disabilitare completamente i cookie, cookieCfg per la configurazione completa dei cookie basata sull'istanza, cookieDomain e cookiePath per definire l'ambito dei cookie tra sottodomini o gateway applicativi e namePrefix, sessionCookiePostfix e userCookiePostfix per personalizzare i nomi dei cookie e di localStorage.

Campo di configurazione Tipo di valore Valore predefinito
cookieCfg

Per impostazione predefinita, l'utilizzo dei cookie è abilitato, vedere Impostazioni ICookieCfgConfig per le impostazioni predefinite complete.
ICookieCfgConfig
[Facoltativo]
(a partire da 2.6.0)
Non definito
cookieDomain

Dominio di cookie personalizzato. È utile se si desidera condividere i cookie di Application Insights tra sottodomini.
(dalla versione 2.6.0) Se definito, cookieCfg.domain ha la precedenza su questo valore.
alias per cookieCfg.domain
[Facoltativo]
Null
percorso del cookie

Percorso del cookie personalizzato. È utile se si vogliono condividere i cookie di Application Insights dietro un gateway applicazione.
Se è definito, cookieCfg.path ha la precedenza.
alias per cookieCfg.path
[Facoltativo]
(a partire da 2.6.0)
Null
disableCookiesUsage

Impostazione predefinita: false. Valore booleano che indica se disabilitare l'uso dei cookie da parte dell'SDK. Se true, l'SDK non archivia o legge dati dai cookie.
(dalla versione 2.6.0) Se definito, cookieCfg.enabled ha la precedenza. L'utilizzo dei cookie può essere riabilitato dopo l'inizializzazione tramite core.getCookieMgr().setEnabled(true).
alias per cookieCfg.enabled
[Facoltativo]
falso
namePrefix

Valore facoltativo usato come prefisso del nome per localStorage e nome del cookie di sessione.
string Non definito
sessionCookiePostfix

Valore facoltativo usato come prefisso del nome per il nome del cookie di sessione. Se non definito, namePrefix viene usato come prefisso del nome per il nome del cookie di sessione.
string Non definito
userCookiePostfix

Valore facoltativo usato come prefisso del nome per il nome del cookie utente. Se non definito, non viene aggiunto alcun prefisso sul nome del cookie utente.
string Non definito

Tracciamento Ajax e Fetch

La raccolta automatica di Ajax e Fetch è suddivisa in cinque aree funzionali: interruttori di attivazione/disattivazione (disableAjaxTracking, disableFetchTracking, disableXhr), acquisizione delle intestazioni di richiesta e risposta (enableRequestHeaderTracking, enableResponseHeaderTracking, ignoreHeaders, customHeaders), filtraggio basato su URL (excludeRequestFromAutoTrackingPatterns), ricerche aggiuntive window.performance (enableAjaxPerfTracking, ajaxPerfLookupDelay, maxAjaxPerfLookupAttempts, enableAjaxErrorStatusText) e controllo del volume per pagina e arricchimento per chiamata (maxAjaxCallsPerView, addRequestContext).

Interruttori della raccolta automatica

Usare questi campi per abilitare o disabilitare la raccolta automatica di richieste Ajax e Fetch e per scegliere il trasporto (XHR, Fetch o Beacon).

Campo di configurazione Tipo di valore Valore predefinito
disableAjaxTracking

Se true, le chiamate Ajax non vengono raccolte automaticamente. L'impostazione predefinita è false.
boolean falso
disableFetchTracking

L'impostazione predefinita per disableFetchTracking è false, ovvero è abilitata. Nelle versioni precedenti alla 2.8.10, tuttavia, è stata disabilitata per impostazione predefinita. Se impostato su true, le richieste di recupero non vengono raccolte automaticamente. L'impostazione predefinita è stata modificata da true a false nella versione 2.8.0.
boolean falso
disableXhr

Non usare XMLHttpRequest o XDomainRequest (per Internet Explorer < versione 9) per impostazione predefinita, provare a usare fetch() o sendBeacon. Se non è disponibile alcun altro trasporto, usa XMLHttpRequest
boolean falso
isBeaconApiDisabled

Se false, l'SDK invia tutti i dati di telemetria usando l'API Beacon
boolean true
onunloadDisableBeacon

Impostazione predefinita: false. quando la scheda viene chiusa, l'SDK invia tutti i dati di telemetria rimanenti usando l'API Beacon
boolean falso
onunloadDisableFetch

Se il recupero keepalive è supportato, non usarlo per l'invio di eventi durante lo scaricamento, potrebbe comunque eseguire il fallback a fetch() senza keepalive
boolean falso

Monitoraggio delle intestazioni

Usa questi campi per includere nella telemetria delle dipendenze le intestazioni delle richieste o delle risposte AJAX e Fetch, fornire intestazioni aggiuntive per endpoint personalizzati o escludere dal log le intestazioni sensibili.

Campo di configurazione Tipo di valore Valore predefinito
enableRequestHeaderTracking

Se true, vengono rilevate le intestazioni della richiesta AJAX & Fetch, il valore predefinito è false. Se ignoreHeaders non è configurato, le intestazioni Authorization e X-API-Key non vengono registrate.
boolean falso
enableResponseHeaderTracking

Se true, vengono rilevate le intestazioni di risposta della richiesta AJAX & Fetch, il valore predefinito è false. Se ignoreHeaders non è configurato, l'intestazione WWW-Authenticate non viene registrata.
boolean falso
ignoreHeaders

Intestazioni di richiesta e risposta AJAX & Fetch da ignorare nei dati di log. Per eseguire l'override o rimuovere l'impostazione predefinita, aggiungere un array con tutte le intestazioni da escludere o un array vuota alla configurazione.
string[] ["Autorizzazione", "X-API-Key", "WWW-Authenticate"]
customHeaders

Possibilità per l'utente di fornire intestazioni aggiuntive quando si usa un endpoint personalizzato. customHeaders non viene aggiunto al momento dell'arresto del browser quando viene usato il mittente del beacon. L'aggiunta di intestazioni personalizzate non è supportata in IE9 o versioni precedenti.
[{header: string, value: string}] Non definito

Filtro degli URL

Usare questo campo per escludere URL di richiesta specifici dal rilevamento automatico Ajax e Fetch.

Campo di configurazione Tipo di valore Valore predefinito
excludeRequestFromAutoTrackingPatterns

Fornire un modo per escludere un percorso specifico dal rilevamento automatico per la richiesta XMLHttpRequest o Fetch. Se definito, per una richiesta Ajax/fetch corrispondente all'URL della richiesta con i modelli regex, il rilevamento automatico viene disattivato. Il valore predefinito è Non definito.
stringa[] | RegExp[] Non definito

Ricerche sulle prestazioni

Usare questi campi per includere tempi aggiuntivi window.performance nei dati di telemetria delle dipendenze Ajax, ottimizzare il ritardo di ricerca e il numero di tentativi e includere il testo dell'errore di risposta nelle richieste AJAX non riuscite.

Campo di configurazione Tipo di valore Valore predefinito
enableAjaxPerfTracking

Impostazione predefinita: false. Flag per abilitare la ricerca e l'inclusione di finestre del browser aggiuntive.intervalli di prestazioni nelle metriche segnalate di Ajax (XHR e recupero) segnalate.
boolean falso
ajaxPerfLookupDelay

Il valore predefinito è 25 ms. Quantità di tempo di attesa prima della ripetizione del tempo per trovare i tempi di windows.performance per una richiesta Ajax, il tempo è espresso in millisecondi e viene passato direttamente a setTimeout().
NUMERIC 25
maxAjaxPerfLookupAttempts

Il valore predefinito è 3. È necessario il numero massimo di volte in cui cercare la finestra.intervallo delle prestazioni (se disponibile). Non tutti i browser popolano window.performance prima di segnalare la fine della richiesta XHR. Per le richieste di recupero, viene aggiunto dopo il completamento.
NUMERIC 3
enableAjaxErrorStatusText (attiva il testo di stato errore Ajax)

Impostazione predefinita: false. Se true, includere il testo booleano dei dati di errore di risposta nell'evento di dipendenza nelle richieste AJAX non riuscite.
boolean falso

Controllo del volume e arricchimento

Usare maxAjaxCallsPerView per impostare un limite alla raccolta Ajax per ogni visualizzazione di pagina e addRequestContext per arricchire la telemetria delle dipendenze tramite un callback all'inizio di ogni chiamata API.

Campo di configurazione Tipo di valore Valore predefinito
maxAjaxCallsPerView

Impostazione predefinita 500: controlla il numero di chiamate Ajax monitorate per visualizzazione pagina. Impostare su -1 per monitorare tutte le chiamate Ajax (illimitate) nella pagina.
NUMERIC 500
addRequestContext

Fornire un modo per arricchire i log delle dipendenze con il contesto all'inizio della chiamata API. Il valore predefinito è Non definito. È necessario verificare se xhr esiste se si configura il contesto correlato xhr. È necessario verificare se fetch request e fetch response esistono se si configura il contesto correlato fetch. In caso contrario, è possibile che non vengano visualizzati i dati necessari.
(requestContext: IRequestionContext) => {[key: string]: any} Non definito

Traccia distribuita e correlazione

Usa distributedTracingMode per selezionare il formato di intestazione W3C, AI o AI_AND_W3C. Usare disableCorrelationHeaders per disattivare completamente la correlazione. Usare enableCorsCorrelation per inserire le intestazioni di correlazione nelle richieste tra origini diverse. Usare appId per impostare un'identità di correlazione fissa. Utilizza correlationHeaderDomains, correlationHeaderExcludedDomains e correlationHeaderExcludePatterns per inserire domini di destinazione specifici o modelli URL in un elenco di elementi consentiti o bloccati.

Campo di configurazione Tipo di valore Valore predefinito
appId

AppId viene usato per la correlazione tra le dipendenze AJAX che si verificano sul lato client con le richieste lato server. Quando l'API Beacon è abilitata, non può essere usata automaticamente, ma può essere impostata manualmente nella configurazione. Il valore predefinito è null
string Null
correlationHeaderDomains

Abilitare le intestazioni di correlazione per domini specifici
string[] Non definito
correlationHeaderExcludedDomains

Disabilitare le intestazioni di correlazione per domini specifici
string[] Non definito
correlationHeaderExcludePatterns

Disabilitare le intestazioni di correlazione usando espressioni regolari
regex[] Non definito
disableCorrelationHeaders

Se false, l'SDK aggiunge due intestazioni ('Request-Id' e 'Request-Context') a tutte le richieste di dipendenza per correlarle con le richieste corrispondenti sul lato server. L'impostazione predefinita è false.
boolean falso
modalità di tracciamento distribuito

Imposta la modalità di traccia distribuita. Se è impostata la modalità AI_AND_W3C o W3C, le intestazioni del contesto di traccia W3C (traceparent/tracestate) vengono generate e incluse in tutte le richieste in uscita. AI_AND_W3C viene fornito per garantire la compatibilità con tutti i servizi instrumentati legacy di Application Insights.
numerico o DistributedTracingModes DistributedTracing Modes.AI_AND_W3C
enableCorsCorrelation

Se true, l'SDK aggiunge due intestazioni ('Request-Id' e 'Request-Context') a tutte le richieste CORS per correlare le dipendenze AJAX in uscita con le richieste corrispondenti sul lato server. Il valore predefinito è false.
boolean falso

Visualizzazioni di pagina e monitoraggio dei percorsi

Utilizzare enableAutoRouteTracking per tenere traccia dei cambi di route SPA. Usa autoTrackPageVisitTime per registrare il tempo trascorso sulla pagina per la visualizzazione precedente. Usare isBrowserLinkTrackingEnabled per tenere traccia delle richieste di collegamento al browser. Usare overridePageViewDuration per calcolare la durata della visualizzazione della pagina dalle chiamate trackPageView invece dell'API Navigation Timing.

Campo di configurazione Tipo di valore Valore predefinito
autoTrackPageVisitTime

Se true, in una visualizzazione pagina, l'ora di visualizzazione della pagina instrumentata precedente viene rilevata e inviata come dati di telemetria e viene avviato un nuovo timer per la visualizzazione della pagina corrente. Viene inviato come metrica personalizzata denominata PageVisitTime in milliseconds e viene calcolato tramite la funzione Data adesso() (se disponibile) ed esegue il fallback a (nuova data()).getTime() se adesso() non è disponibile (IE8 o minore). L'impostazione predefinita è false.
boolean falso
enableAutoRouteTracking

Tenere traccia automaticamente delle modifiche ai percorsi nelle applicazioni a pagina singola (SPA). Se true, ogni modifica di percorso invia una nuova visualizzazione pagina ad Application Insights. Anche le modifiche del percorso Hash (example.com/foo#bar) vengono registrate come nuove visualizzazioni di pagina.
Nota: se si abilita questo campo, non abilitare l'oggetto history per la configurazione del router React perché si otterranno più eventi di visualizzazione pagina.
boolean falso
isBrowserLinkTrackingEnabled

L'impostazione predefinita è false. Se true, l'SDK tiene traccia di tutte le richieste di Browser Link.
boolean falso
overridePageViewDuration

Se true, il comportamento predefinito di trackPageView viene modificato in modo da registrare l'intervallo di durata della visualizzazione pagina quando viene chiamato trackPageView. Se false e nessuna durata personalizzata viene fornita a trackPageView, le prestazioni della visualizzazione pagina vengono calcolate usando l'API di temporizzazione di navigazione. L'impostazione predefinita è false.
boolean falso

Rilevamento delle eccezioni

Utilizzare disableExceptionTracking per disattivare la raccolta automatica delle eccezioni e enableUnhandledPromiseRejectionTracking per includere le promise rifiutate non gestite come errori JavaScript.

Campo di configurazione Tipo di valore Valore predefinito
disabilita il tracciamento delle eccezioni

Se true, l'SDK non esegue il rilevamento automatico delle eccezioni. L'impostazione predefinita è false.
boolean falso
enableUnhandledPromiseRejectionTracking

Se true, l'SDK recupera automaticamente i rifiuti delle promesse non gestite come errore JavaScript. Quando disableExceptionTracking è true (non tenere traccia delle eccezioni), il valore di configurazione viene ignorato e i rifiuti delle promesse non gestite non vengono segnalati.
boolean falso

Campionamento, elaborazione in batch e archiviazione

Usare samplingPercentage per impostare la frequenza di campionamento fissa, maxBatchInterval e maxBatchSizeInBytes per regolare il comportamento di invio in batch, enableSessionStorageBuffer e isStorageUseDisabled per controllare se l'SDK salva i dati di telemetria non inviati nella memoria di sessione o nella memoria locale, eventsLimitInMem per limitare il buffer in memoria, isRetryDisabled per disabilitare i nuovi tentativi in caso di errori temporanei, disableFlushOnBeforeUnload per saltare il flush alla chiusura della pagina e disableTelemetry come interruttore generale di disattivazione.

Campo di configurazione Tipo di valore Valore predefinito
disableFlushOnBeforeUnload

Impostazione predefinita: false. Se true, il metodo flush non viene chiamato quando viene attivato l'evento onBeforeUnload.
boolean falso
disableTelemetry

Se true, l'SDK non raccoglie o invia dati di telemetria. L'impostazione predefinita è false.
boolean falso
enableSessionStorageBuffer

Impostazione predefinita: true. Se true, il buffer con tutti i dati di telemetria non inviati viene archiviato nell'archivio sessioni. Il buffer viene ripristinato al caricamento della pagina.
boolean true
eventsLimitInMem

Numero di eventi che possono essere mantenuti in memoria prima che l'SDK inizi a eliminare gli eventi quando non si usa l'archiviazione di sessione (impostazione predefinita).
d'acquisto 10.000
isRetryDisabled

Impostazione predefinita: false. Se false, ritentare il 206 (esito positivo parziale), 408 (timeout), 429 (troppe richieste), 500 (errore interno del server), 503 (servizio non disponibile) e 0 (offline, solo se rilevato).
boolean falso
isStorageUseDisabled

Se true, l'SDK non archivia o legge i dati dall'archiviazione locale e della sessione. L'impostazione predefinita è false.
boolean falso
maxBatchInterval

Per quanto tempo raggruppare in batch i dati di telemetria prima dell'invio (millisecondi).
NUMERIC 15000
maxBatchSizeInBytes

Dimensioni massime del batch di dati di telemetria. Se un batch supera questo limite, viene inviato immediatamente e viene avviato un nuovo batch.
NUMERIC 10.000
percentuale di campionamento

Percentuale di eventi inviati. Il valore predefinito è 100, ovvero vengono inviati tutti gli eventi. Impostarlo se si desidera mantenere il limite di dati per le applicazioni su larga scala.
NUMERIC 100

Registrazione e debug

Usare loggingLevelConsole e loggingLevelTelemetry per instradare gli errori interni dell'SDK alla console o ai dati di telemetria. Usare enableDebug per generare errori interni come eccezioni durante lo sviluppo. Usare diagnosticLogInterval per ottimizzare il poller di log interno. Usare disableDataLossAnalysis per ignorare i controlli del buffer di avvio. Usare disableIkeyDeprecationMessage per sopprimere l'avviso di deprecazione della chiave di strumentazione.

Campo di configurazione Tipo di valore Valore predefinito
diagnosticLogInterval

(interno) Intervallo di polling (in ms) per la coda di registrazione interna
NUMERIC 10.000
disableDataLossAnalysis

Se false, i buffer del mittente di dati di telemetria interni vengono controllati all'avvio per gli elementi non ancora inviati.
boolean true
disableIkeyDeprecationMessage

Disabilitare il messaggio di errore di deprecazione della chiave di strumentazione. Se true, i messaggi di errore NON vengono inviati.
boolean true
enableDebug

Se true, i dati di debug interni vengono generati come eccezione anziché essere registrati, indipendentemente dalle impostazioni di registrazione dell'SDK. L'impostazione predefinita è false.
Nota: l'abilitazione di questa impostazione comporta l'eliminazione dei dati di telemetria ogni volta che si verifica un errore interno. Può essere utile per identificare rapidamente i problemi relativi alla configurazione o all'utilizzo dell'SDK. Se non si vogliono perdere i dati di telemetria durante il debug, è consigliabile usare loggingLevelConsole o loggingLevelTelemetry anziché enableDebug.
boolean falso
loggingLevelConsole

Registra gli errori interni di Application Insights nella console.
0: off,
1: solo errori critici,
2: tutto (errori e avvisi)
NUMERIC 0
loggingLevelTelemetry

Invia gli errori interni di Application Insights come dati di telemetria.
0: off,
1: solo errori critici,
2: tutto (errori e avvisi)
NUMERIC 1

Responsabile delle prestazioni

Usare enablePerfMgr per emettere perfEvents locali dai percorsi di codice strumentati. Usare createPerfMgr per specificare una factory IPerfManager personalizzata. Usare perfEvtsSendAll per controllare se viene generato ogni evento perfEvent o solo gli eventi principali.

Campo di configurazione Tipo di valore Valore predefinito
createPerfMgr

La funzione di callback chiamata per creare un'istanza di IPerfManager quando necessario ed enablePerfMgr è abilitata, ti consente di superare la creazione predefinita di PerfManager() senza la necessità di setPerfMgr() dopo l'inizializzazione.
(core: IAppInsightsCore, notificationManager: INotificationManager) => IPerfManager Non definito
abilitarePerfMgr

Se abilitata (true) crea eventi perfEvent locali per il codice instrumentato per generare perfEvent (tramite l'helper doPerf()). Può essere usato per identificare i problemi di prestazioni all'interno dell'SDK in base all'utilizzo o facoltativamente all'interno del codice instrumentato.
boolean falso
perfEvtsSendAll

Quando enablePerfMgr è abilitato e IPerfManager attiva un INotificationManager.perfEvent() questo flag determina se un evento viene generato (e inviato a tutti i listener) per tutti gli eventi (true) o solo per gli eventi 'padre' (false <impostazione predefinita>).
Un IPerfEvent padre è un evento in cui nessun altro IPerfEvent è ancora in esecuzione al momento della creazione dell'evento e la relativa proprietà padre non è null o non definita. Dalla versione 2.5.7
boolean falso

Identificatori e durata della sessione

Usare accountId per raggruppare gli utenti in account, idLength per impostare la lunghezza dell'ID casuale generata, sessionExpirationMs per la durata massima della sessione e sessionRenewalMs per il timeout di inattività che termina una sessione.

Campo di configurazione Tipo di valore Valore predefinito
accountId

ID account facoltativo, se l'app raggruppa gli utenti in account. Nessuna spazi, virgole, punti e virgola, uguale o barre verticali
string Null
idLength

Identifica la lunghezza predefinita usata per generare nuove sessioni casuali e ID utente. L'impostazione predefinita è 22, il valore predefinito precedente è 5 (v2.5.8 o minore), se è necessario mantenere la lunghezza massima precedente impostare il valore su 5.
NUMERIC 22
sessionExpirationMs

Una sessione viene registrata se continua per questo periodo di tempo in millisecondi. Il valore predefinito è 24 ore
NUMERIC 86400000
sessionRenewalMs

Una sessione viene registrata se l'utente è inattivo per questo periodo di tempo in millisecondi. Il valore predefinito è 30 minuti.
NUMERIC 1800000

Altre impostazioni

Usare featureOptIn per abilitare le funzionalità in anteprima, throttleMgrCfg per configurare il throttling, disableInstrumentationKeyValidation per aggirare la verifica delle chiavi di acquisizione, convertUndefined per sostituire i campi non definiti con un valore predefinito e sdkExtension per aggiungere il prefisso al tag ai.internal.sdkVersion per le estensioni SDK a valle.

Campo di configurazione Tipo di valore Valore predefinito
convertUndefined

Fornire all'utente un'opzione per convertire un campo non definito in un valore definito dall'utente.
any Non definito
disableInstrumentationKeyValidation

Se true, il controllo di convalida della chiave di strumentazione viene ignorato. Il valore predefinito è False.
boolean falso
featureOptIn

Impostare Dettagli del consenso esplicito della funzionalità.

Questo campo di configurazione è disponibile solo nella versione 3.0.3 e successive.
IFeatureOptIn Non definito
sdkExtension

Imposta il nome dell'estensione SDK. Sono consentiti solo caratteri alfabetici. Il nome dell'estensione viene aggiunto come prefisso al tag "ai.internal.sdkVersion", ad esempio "ext_javascript:2.0.0". Il valore predefinito è Null.
string Null
throttleMgrCfg

Impostare la configurazione di mgr di limitazione in base alla chiave.

Questo campo di configurazione è disponibile solo nella versione 3.0.3 e successive.
{[key: number]: IThrottleMgrConfig} Non definito

Tracciamento distribuito

Le architetture moderne di cloud e microservizi hanno abilitato servizi semplici e indipendenti che riducono i costi aumentando la disponibilità e la velocità effettiva. Tuttavia, ha reso i sistemi generali più difficili da ragionare e eseguire il debug. Il tracciamento distribuito risolve questo problema fornendo un profiler delle prestazioni che funziona come le pile di chiamate nelle architetture cloud e microservizi.

Monitoraggio di Azure offre due esperienze per l'utilizzo dei dati di traccia distribuiti: la visualizzazione diagnostica delle transazioni per una singola transazione/richiesta e la visualizzazione mappa dell'applicazione per mostrare l'interazione dei sistemi.

Application Insights può monitorare ogni componente separatamente e rilevare quale componente è responsabile di errori o riduzione delle prestazioni usando la correlazione di telemetria distribuita. Questo articolo illustra il modello di dati, le tecniche di propagazione del contesto, i protocolli e l'implementazione di tattiche di correlazione su linguaggi e piattaforme diversi usati da Application Insights.

Abilitare la traccia distribuita tramite Application Insights tramite strumenti automatici o SDK

La strumentazione OpenTelemetry di Monitoraggio di Azure e l'SDK JavaScript generano dati di tracciamento distribuiti per framework e librerie comuni.

Con la strumentazione supportata configurata, le informazioni di traccia vengono raccolte automaticamente per framework, librerie e tecnologie comuni.

Qualsiasi tecnologia può anche essere monitorata manualmente creando intervalli personalizzati.

Modello di dati per la correlazione dei dati di telemetria

Application Insights definisce un modello di dati per la correlazione di dati di telemetria distribuita. Per associare i dati di telemetria a un'operazione logica, ogni elemento di telemetria ha un campo di contesto denominato operation_Id. Ogni elemento di telemetria nella traccia distribuita condivide questo identificatore. Pertanto, anche se si perdono i dati di telemetria da un singolo livello, è comunque possibile associare i dati di telemetria segnalati da altri componenti.

Un'operazione logica distribuita è in genere costituita da un set di operazioni più piccole elaborate da uno dei componenti. I dati di telemetria delle richieste definiscono queste operazioni. Ogni elemento di telemetria della richiesta ha il proprio id, che lo identifica in modo globale e univoco. E tutti gli elementi di telemetria, ad esempio tracce ed eccezioni, associati alla richiesta devono impostare su operation_parentId il valore della richiesta id.

La telemetria delle dipendenze rappresenta ogni operazione in uscita, ad esempio una chiamata HTTP a un altro componente. Definisce inoltre il proprio id univoco a livello globale. La telemetria delle richieste, avviata dalla chiamata di dipendenza, usa questo id come operation_parentId.

È possibile compilare una vista dell'operazione logica distribuita usando operation_Id, operation_parentIde request.id con dependency.id. Questi campi definiscono anche l'ordine di causalità delle chiamate di telemetria.

In un ambiente di microservizi, le tracce dei componenti possono passare a elementi di archiviazione diversi. Ogni componente può avere una propria stringa di connessione in Application Insights. Per ottenere dati di telemetria per l'operazione logica, Application Insights esegue query sui dati da ogni elemento di archiviazione.

Quando il numero di elementi di archiviazione è elevato, è necessaria un'indicazione su dove guardare dopo. Il modello di dati di Application Insights definisce due campi per risolvere questo problema: request.source e dependency.target. Il primo campo identifica il componente che ha avviato la richiesta di dipendenza. Il secondo campo identifica il componente che ha restituito la risposta della chiamata di dipendenza.

Per informazioni sull'esecuzione di query da più istanze diverse, vedere Eseguire query sui dati tra aree di lavoro, applicazioni e risorse di Log Analytics in Monitoraggio di Azure.

Example

Esaminiamo un esempio. Un'applicazione denominata Stock Prices mostra il prezzo di mercato corrente di un titolo usando un'API esterna denominata Stock. L'applicazione Prezzi azionari ha una pagina denominata Pagina stock visualizzata dal Web browser client tramite GET /Home/Stock. L'applicazione esegue una query sull'API Stock usando la chiamata GET /api/stock/valueHTTP .

È possibile analizzare i dati di telemetria risultanti eseguendo una query:

(requests | union dependencies | union pageViews)
| where operation_Id == "STYz"
| project timestamp, itemType, name, id, operation_ParentId, operation_Id

Nei risultati tutti gli elementi di telemetria condividono la radice operation_Id. Quando viene effettuata una chiamata Ajax dalla pagina, viene assegnato un nuovo ID univoco (qJSXU) ai dati di telemetria delle dipendenze e l'ID di pageView viene usato come operation_ParentId. La richiesta del server usa quindi l'ID Ajax come operation_ParentId.

tipoElemento nome Documento d'identità operation_ParentId operation_Id
pageView Pagina Stock STYz STYz
dipendenza GET /Home/Stock qJSXU STYz STYz
request GET /Home/Stock KqKwlrSt9PA= qJSXU STYz
dipendenza GET /api/stock/value # Ottieni il valore d'inventario tramite API bBrf2L7mm2g= KqKwlrSt9PA= STYz

Quando la chiamata GET /api/stock/value viene effettuata a un servizio esterno, è necessario conoscere l'identità del server in modo da poter impostare il dependency.target campo in modo appropriato. Quando il servizio esterno non supporta il monitoraggio, target viene impostato sul nome host del servizio. Un esempio è stock-prices-api.com. Tuttavia, se il servizio si identifica restituendo un'intestazione HTTP predefinita, target contiene l'identità del servizio che consente ad Application Insights di compilare una traccia distribuita eseguendo query sui dati di telemetria da tale servizio.

Intestazioni di correlazione con W3C TraceContext

Application Insights esegue la transizione a W3C Trace-Context, che definisce:

  • traceparent: Trasporta l'ID operativo univoco globale e l'identificatore univoco della chiamata.
  • tracestate: Contiene il contesto di tracciamento specifico del sistema.

La strumentazione supportata usa il protocollo W3C Trace Context per la traccia distribuita.

Il protocollo HTTP di correlazione, detto anche Request-Id, è deprecato. Questo protocollo definisce due intestazioni:

  • Request-Id: porta l'ID univoco globale della chiamata.
  • Correlation-Context: contiene la raccolta di coppie nome-valore delle proprietà della traccia distribuita.

Application Insights usa anche il contesto di correlazione per popolare campi come dependency.target e request.source quando tale contesto è disponibile.

I modelli di dati W3C Trace-Context e Application Insights sono mappati nel modo seguente:

Approfondimenti sulle Applicazioni W3C TraceContext
Id di Request e Dependency parent-id
Operation_Id trace-id
Operation_ParentId parent-id dell'intervallo padre di questo intervallo. Questo campo deve essere vuoto se è un intervallo radice.

Per altre informazioni, vedere Modello di dati di telemetria di Application Insights.

Abilitare il supporto per la traccia distribuita W3C

Questa funzionalità è abilitata per impostazione predefinita per JavaScript e le intestazioni vengono incluse automaticamente quando il dominio della pagina di hosting corrisponde al dominio a cui vengono inviate le richieste( ad esempio, la pagina di hosting è example.com e le richieste Ajax vengono inviate a example.com). Per modificare la modalità di traccia distribuita, usare il distributedTracingMode campo di configurazione. Il valore predefinito, AI_AND_W3C, garantisce la retrocompatibilità con tutti i servizi legacy strumentati da Application Insights.

Se le richieste XMLHttpRequest o Fetch Ajax passano a un host di dominio diverso, inclusi i sottodomini, le intestazioni di correlazione non sono incluse per impostazione predefinita. Per abilitare questa funzionalità, impostare il enableCorsCorrelation campo di configurazione su true. Se imposti enableCorsCorrelation su true, tutte le richieste XMLHttpRequest e Fetch Ajax includeranno le intestazioni di correlazione. Di conseguenza, se l'applicazione nel server che chiama la richiesta non supporta l'intestazione traceparent , la richiesta potrebbe non riuscire. Questo errore dipende dal fatto che il browser e la versione possano convalidare la richiesta in base alle intestazioni accettate dal server. È possibile usare il correlationHeaderExcludedDomains campo di configurazione per escludere il dominio del server dall'inserimento dell'intestazione di correlazione tra componenti. Ad esempio, è possibile usare correlationHeaderExcludedDomains: ['*.auth0.com'] per escludere le intestazioni di correlazione dalle richieste inviate al provider di identità Auth0.

Importante

Per visualizzare tutte le configurazioni necessarie per abilitare la correlazione, vedere la documentazione sulla correlazione JavaScript.

Filtrare e pre-elaborare i dati di telemetria

Per le applicazioni Web JavaScript, usare gli inizializzatori di telemetria per filtrare, modificare o arricchire i dati di telemetria prima dell'invio.

  • Tornare false da un inizializzatore per eliminare un elemento di telemetria prima dell'invio.
  • Aggiungere o modificare campi nell'elemento di telemetria per arricchire i dati di telemetria con valori utili per filtrare e analizzare.
  • Usare la configurazione di campionamento dell'SDK per ridurre il volume dei dati di telemetria quando è necessario il campionamento statistico anziché il filtro esplicito.

Avvertimento

Il filtro dei dati di telemetria può asimmetriare le statistiche del portale e può rendere più difficile seguire gli elementi correlati. Preferire il campionamento quando è necessaria una riduzione del volume senza escludere in modo esplicito dati di telemetria specifici.

Applicazioni Web JavaScript

Per filtrare i dati di telemetria dalle applicazioni Web JavaScript, usare ITelemetryInitializer.

  1. Creare una funzione di callback dell'inizializzatore di telemetria. La funzione di callback accetta ITelemetryItem come parametro, ovvero l'evento in fase di elaborazione. Se il callback restituisce false, l'elemento di telemetria viene filtrato.

    var filteringFunction = (envelope) => {
      if (envelope.data.someField === 'tobefilteredout') {
        return false;
      }
      return true;
    };
    
  2. Aggiungi il callback dell'inizializzatore di telemetria:

    appInsights.addTelemetryInitializer(filteringFunction);
    

Inizializzatori di telemetria JavaScript

Gli inizializzatori di telemetria vengono eseguiti prima dell'invio di un elemento di telemetria JavaScript. Usarli per aggiungere, modificare o eliminare i dati di telemetria del browser. La restituzione di false da un inizializzatore abbandona l'elemento.

Usare gli inizializzatori di telemetria per un arricchimento o un filtraggio mirato. Usare il campionamento quando è necessaria una riduzione del volume senza escludere in modo esplicito dati di telemetria specifici.

Inizializzatori di telemetria JavaScript

Inserire un inizializzatore di telemetria JavaScript, se necessario. Per altre informazioni sugli inizializzatori di telemetria per Application Insights JavaScript SDK, vedere Inizializzatori di telemetria.

Inserire un inizializzatore di telemetria aggiungendo la funzione callback onInit nella configurazione dello script di caricamento di JavaScript (Web) SDK:

<script type="text/javascript">
!(function (cfg){function e(){cfg.onInit&&cfg.onInit(n)}var x,w,D,t,E,n,C=window,O=document,b=C.location,q="script",I="ingestionendpoint",L="disableExceptionTracking",j="ai.device.";"instrumentationKey"[x="toLowerCase"](),w="crossOrigin",D="POST",t="appInsightsSDK",E=cfg.name||"appInsights",(cfg.name||C[t])&&(C[t]=E),n=C[E]||function(g){var f=!1,m=!1,h={initialize:!0,queue:[],sv:"8",version:2,config:g};function v(e,t){var n={},i="Browser";function a(e){e=""+e;return 1===e.length?"0"+e:e}return n[j+"id"]=i[x](),n[j+"type"]=i,n["ai.operation.name"]=b&&b.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(h.sv||h.version),{time:(i=new Date).getUTCFullYear()+"-"+a(1+i.getUTCMonth())+"-"+a(i.getUTCDate())+"T"+a(i.getUTCHours())+":"+a(i.getUTCMinutes())+":"+a(i.getUTCSeconds())+"."+(i.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+"Z",iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}},ver:undefined,seq:"1",aiDataContract:undefined}}var n,i,t,a,y=-1,T=0,S=["js.monitor.azure.com","js.cdn.applicationinsights.io","js.cdn.monitor.azure.com","js0.cdn.applicationinsights.io","js0.cdn.monitor.azure.com","js2.cdn.applicationinsights.io","js2.cdn.monitor.azure.com","az416426.vo.msecnd.net"],o=g.url||cfg.src,r=function(){return s(o,null)};function s(d,t){if((n=navigator)&&(~(n=(n.userAgent||"").toLowerCase()).indexOf("msie")||~n.indexOf("trident/"))&&~d.indexOf("ai.3")&&(d=d.replace(/(\/)(ai\.3\.)([^\d]*)$/,function(e,t,n){return t+"ai.2"+n})),!1!==cfg.cr)for(var e=0;e<S.length;e++)if(0<d.indexOf(S[e])){y=e;break}var n,i=function(e){var a,t,n,i,o,r,s,c,u,l;h.queue=[],m||(0<=y&&T+1<S.length?(a=(y+T+1)%S.length,p(d.replace(/^(.*\/\/)([\w\.]*)(\/.*)$/,function(e,t,n,i){return t+S[a]+i})),T+=1):(f=m=!0,s=d,!0!==cfg.dle&&(c=(t=function(){var e,t={},n=g.connectionString;if(n)for(var i=n.split(";"),a=0;a<i.length;a++){var o=i[a].split("=");2===o.length&&(t[o[0][x]()]=o[1])}return t[I]||(e=(n=t.endpointsuffix)?t.location:null,t[I]="https://"+(e?e+".":"")+"dc."+(n||"services.visualstudio.com")),t}()).instrumentationkey||g.instrumentationKey||"",t=(t=(t=t[I])&&"/"===t.slice(-1)?t.slice(0,-1):t)?t+"/v2/track":g.endpointUrl,t=g.userOverrideEndpointUrl||t,(n=[]).push((i="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",o=s,u=t,(l=(r=v(c,"Exception")).data).baseType="ExceptionData",l.baseData.exceptions=[{typeName:"SDKLoadFailed",message:i.replace(/\./g,"-"),hasFullStack:!1,stack:i+"\nSnippet failed to load ["+o+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(b&&b.pathname||"_unknown_")+"\nEndpoint: "+u,parsedStack:[]}],r)),n.push((l=s,i=t,(u=(o=v(c,"Message")).data).baseType="MessageData",(r=u.baseData).message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+l+")").replace(/\"/g,"")+'"',r.properties={endpoint:i},o)),s=n,c=t,JSON&&((u=C.fetch)&&!cfg.useXhr?u(c,{method:D,body:JSON.stringify(s),mode:"cors"}):XMLHttpRequest&&((l=new XMLHttpRequest).open(D,c),l.setRequestHeader("Content-type","application/json"),l.send(JSON.stringify(s)))))))},a=function(e,t){m||setTimeout(function(){!t&&h.core||i()},500),f=!1},p=function(e){var n=O.createElement(q),e=(n.src=e,t&&(n.integrity=t),n.setAttribute("data-ai-name",E),cfg[w]);return!e&&""!==e||"undefined"==n[w]||(n[w]=e),n.onload=a,n.onerror=i,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||a(0,t)},cfg.ld&&cfg.ld<0?O.getElementsByTagName("head")[0].appendChild(n):setTimeout(function(){O.getElementsByTagName(q)[0].parentNode.appendChild(n)},cfg.ld||0),n};p(d)}cfg.sri&&(n=o.match(/^((http[s]?:\/\/.*\/)\w+(\.\d+){1,5})\.(([\w]+\.){0,2}js)$/))&&6===n.length?(d="".concat(n[1],".integrity.json"),i="@".concat(n[4]),l=window.fetch,t=function(e){if(!e.ext||!e.ext[i]||!e.ext[i].file)throw Error("Error Loading JSON response");var t=e.ext[i].integrity||null;s(o=n[2]+e.ext[i].file,t)},l&&!cfg.useXhr?l(d,{method:"GET",mode:"cors"}).then(function(e){return e.json()["catch"](function(){return{}})}).then(t)["catch"](r):XMLHttpRequest&&((a=new XMLHttpRequest).open("GET",d),a.onreadystatechange=function(){if(a.readyState===XMLHttpRequest.DONE)if(200===a.status)try{t(JSON.parse(a.responseText))}catch(e){r()}else r()},a.send())):o&&r();try{h.cookie=O.cookie}catch(k){}function e(e){for(;e.length;)!function(t){h[t]=function(){var e=arguments;f||h.queue.push(function(){h[t].apply(h,e)})}}(e.pop())}var c,u,l="track",d="TrackPage",p="TrackEvent",l=(e([l+"Event",l+"PageView",l+"Exception",l+"Trace",l+"DependencyData",l+"Metric",l+"PageViewPerformance","start"+d,"stop"+d,"start"+p,"stop"+p,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),h.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4},(g.extensionConfig||{}).ApplicationInsightsAnalytics||{});return!0!==g[L]&&!0!==l[L]&&(e(["_"+(c="onerror")]),u=C[c],C[c]=function(e,t,n,i,a){var o=u&&u(e,t,n,i,a);return!0!==o&&h["_"+c]({message:e,url:t,lineNumber:n,columnNumber:i,error:a,evt:C.event}),o},g.autoExceptionInstrumented=!0),h}(cfg.cfg),(C[E]=n).queue&&0===n.queue.length?(n.queue.push(e),n.trackPageView({})):e();})({
src: "https://js.monitor.azure.com/scripts/b/ai.3.gbl.min.js",
crossOrigin: "anonymous", // When supplied this will add the provided value as the cross origin attribute on the script tag
onInit: function (sdk) {
    sdk.addTelemetryInitializer(function (envelope) {
    envelope.data = envelope.data || {};
    envelope.data.someField = 'This item passed through my telemetry initializer';
    });
}, // Once the application insights instance has loaded and initialized this method will be called
// sri: false, // Custom optional value to specify whether fetching the snippet from integrity file and do integrity check
cfg: { // Application Insights Configuration
    connectionString: "YOUR_CONNECTION_STRING"
}});
</script>

Per un riepilogo delle proprietà non personalizzate disponibili nell'elemento di telemetria, vedere Esportazione del modello di dati di Application Insights.

È possibile aggiungere tutti gli inizializzatori desiderati. Vengono chiamati nell'ordine in cui vengono aggiunti.

Aggiungere un nome del ruolo cloud e un'istanza del ruolo cloud

Usare un inizializzatore di telemetria per impostare i ai.cloud.role tag e ai.cloud.roleInstance . Questi tag definiscono la modalità di visualizzazione del componente nella mappa delle applicazioni in Monitoraggio di Azure.

appInsights.queue.push(() => {
appInsights.addTelemetryInitializer((envelope) => {
  envelope.tags["ai.cloud.role"] = "your role name";
  envelope.tags["ai.cloud.roleInstance"] = "your role instance";
});
});

A partire dalla versione 2.6.0, applicazione Azure Insights JavaScript SDK fornisce la gestione dei cookie basata su istanze che è possibile disabilitare e riabilitare dopo l'inizializzazione.

Se si disabilitano i cookie durante l'inizializzazione usando le disableCookiesUsage configurazioni o cookieCfg.enabled , è possibile riabilitarli usando la setEnabled funzione dell'oggetto ICookieMgr.

La gestione dei cookie basata su istanza sostituisce le funzioni globali CoreUtils precedenti di disableCookies(), setCookie(), getCookie() e deleteCookie().

Per utilizzare i miglioramenti del tree-shaking introdotti nella versione 2.6.0, non usare le funzioni globali.

ICookieMgrConfig è una configurazione dei cookie per la gestione dei cookie basata su istanza aggiunta nella versione 2.6.0. Le opzioni disponibili consentono di abilitare o disabilitare l'uso dei cookie da parte dell'SDK. È anche possibile impostare percorsi e domini di cookie personalizzati e personalizzare le funzioni per il recupero, l'impostazione e l'eliminazione dei cookie.

La tabella seguente definisce le ICookieMgrConfig opzioni.

Nome TIPO Predefinito Descrizione
Enabled boolean true L'istanza corrente dell'SDK usa questo valore booleano per indicare se l'uso dei cookie è abilitato. Se false, l'istanza dell'SDK inizializzata da questa configurazione non archivia o legge i dati dai cookie.
dominio string Null Dominio di cookie personalizzato. È utile se si desidera condividere i cookie di Application Insights tra sottodomini. Se non specificato, usa il valore del valore radice cookieDomain.
sentiero string / Specifica il percorso da utilizzare per il cookie. Se non specificato, usa qualsiasi valore del valore radice cookiePath .
ignoreCookies string[] Non definito Specificare i nomi dei cookie da ignorare. Fa sì che qualsiasi nome di cookie corrispondente non venga mai letto o scritto. Possono comunque essere esplicitamente rimossi definitivamente o eliminati. Non è necessario ripetere il nome nella configurazione blockedCookies. (dalla versione 2.8.8)
blockedCookies string[] Non definito Specificare i nomi dei cookie da non scrivere mai. Impedisce la creazione o l'aggiornamento di qualsiasi nome di cookie, ma può comunque essere letto, a meno che non sia incluso anche in ignoreCookies. Possono comunque essere rimossi definitivamente o eliminati esplicitamente. Se non specificato, per impostazione predefinita viene usato lo stesso elenco in ignoreCookies. (Dalla versione 2.8.8)
getCookie (name: string) => string Null Funzione per recuperare il valore del cookie specificato. Se non specificato, l'SDK usa l'analisi e la memorizzazione nella cache dei cookie interni.
setCookie (name: string, value: string) => void Null Funzione per impostare il cookie denominato con il valore specificato. Chiamato solo quando si aggiunge o si aggiorna un cookie.
delCookie (name: string, value: string) => void Null Funzione per eliminare il cookie denominato con il valore specificato. Questa funzione è separata da setCookie per evitare la necessità di analizzare il valore per determinare se il cookie viene aggiunto o rimosso. Se non specificato, l'SDK usa l'analisi e la memorizzazione nella cache dei cookie interni.

Mappa di origine

Il supporto della mappa di origine consente di eseguire il debug del codice JavaScript minimizzato decomprimendo lo stack di chiamate minimizzato dei dati di telemetria delle eccezioni.

  • Compatibile con tutte le integrazioni correnti nel pannello Dettagli eccezione
  • Supporta tutti gli SDK JavaScript attuali e futuri, tra cui Node.js, senza la necessità di un aggiornamento dell'SDK

Application Insights supporta il caricamento delle mappe di origine nel contenitore BLOB dell'account Archiviazione di Azure. Usare le mappe di origine per decomprimere gli stack di chiamate presenti nella pagina Dettagli della transazione end-to-end. È anche possibile usare le mappe di origine per decomprimere eventuali eccezioni inviate dall'SDK JavaScript o dall'SDK di Node.js.

Screenshot che mostra la selezione dell'opzione per decomprimere uno stack di chiamate collegando un account di archiviazione.

Creare un nuovo account di archiviazione e un contenitore BLOB

Se si ha già un account di archiviazione o un contenitore BLOB esistente, è possibile ignorare questo passaggio.

  1. Creare un nuovo account di archiviazione.

  2. Creare un contenitore BLOB nell'account di archiviazione. Impostare Livello di accesso pubblico su Privato per assicurarsi che le mappe di origine non siano accessibili pubblicamente.

    Screenshot che mostra l'impostazione del livello di accesso del contenitore su Privato.

Eseguire il push delle mappe di origine nel contenitore BLOB

Integrare la pipeline di distribuzione continua con l'account di archiviazione configurandola per caricare automaticamente le mappe di origine nel contenitore BLOB configurato.

È possibile caricare mappe di origine nel contenitore di Archiviazione BLOB di Azure con la stessa struttura di cartelle con cui sono stati compilati e distribuiti. Un caso d'uso comune consiste nell'anteporre una cartella di distribuzione alla relativa versione, ad esempio 1.2.3/static/js/main.js. Quando si decomprime tramite un contenitore BLOB di Azure denominato sourcemaps, la pipeline tenta di recuperare una mappa di origine situata in sourcemaps/1.2.3/static/js/main.js.map.

Se si usa Azure Pipelines per compilare e distribuire continuamente l'applicazione, aggiungere un'attività di copia file di Azure alla pipeline per caricare automaticamente le mappe di origine.

Screenshot che mostra l'aggiunta di un'attività di copia file di Azure alla pipeline per caricare le mappe di origine in Archiviazione BLOB di Azure.

Configurare la risorsa di Application Insights con un account di archiviazione mappa di origine

Sono disponibili due opzioni per configurare la risorsa di Application Insights con un account di archiviazione mappa di origine.

Scheda Dettagli sulle transazioni end-to-end

Nella scheda Dettagli transazione end-to-end selezionare Decomprimi. Configurare la risorsa se non è configurata.

  1. Nel portale di Azure visualizzare i dettagli di un'eccezione minimizzata.
  2. Selezionare Decomprimi.
  3. Se la risorsa non è configurata, configurarla.
Scheda Proprietà

Per configurare o modificare l'account di archiviazione o il contenitore BLOB collegato alla risorsa di Application Insights:

  1. Andare alla scheda Proprietà della risorsa di Application Insights.

  2. Selezionare Modifica contenitore BLOB mapping di origine.

  3. Selezionare un contenitore BLOB differente come contenitore della mappa di origine.

  4. Selezionare Applica.

    Screenshot che mostra la riconfigurazione del contenitore BLOB di Azure selezionato nel riquadro Proprietà.

Visualizza lo stack di chiamate non minimizzato

Per visualizzare lo stack delle chiamate decompresso, selezionare un elemento di Telemetria delle eccezioni nel portale di Azure, individuare le mappe di origine corrispondenti allo stack delle chiamate e trascinarle sullo stack delle chiamate nel portale di Azure. La mappa di origine deve avere lo stesso nome del file di origine di uno stack frame, ma con un'estensione map.

Se si verificano problemi che coinvolgono il supporto della mappa di origine per le applicazioni JavaScript, vedere Risolvere i problemi relativi al supporto delle mappe di origine per le applicazioni JavaScript.

Animazione che illustra la funzionalità Decomprimi.

Scuotimento albero

Lo scuotimento dell'albero rimuove il codice inutilizzato dal bundle JavaScript finale.

Per sfruttare i vantaggi dello scuotimento dell'albero, importare solo i componenti necessari dell'SDK nel codice. In questo modo, si esclude il codice inutilizzato dal bundle finale, riducendone le dimensioni e migliorando le prestazioni.

Miglioramenti e raccomandazioni per lo scuotimento dell'albero

Nella versione 2.6.0, l'SDK ha deprecato e rimosso l'utilizzo interno di queste classi statiche di helper per migliorare il supporto agli algoritmi di tree-shaking. Questa modifica consente ai pacchetti npm di eliminare in modo sicuro il codice inutilizzato.

  • CoreUtils
  • EventHelper
  • Util
  • UrlHelper
  • DateTimeUtils
  • ConnectionStringParser

Le funzioni sono ora esportate come elementi di primo livello dai moduli, facilitando il refactoring del codice e migliorando il tree shaking.

Le classi statiche sono ora oggetti const che fanno riferimento alle nuove funzioni esportate.

Funzioni e sostituzioni deprecate degli alberi

Questa sezione si applica solo se si usano le funzioni deprecate e si vogliono ottimizzare le dimensioni del pacchetto. Per ridurre le dimensioni e supportare tutte le versioni di Internet Explorer, usare le funzioni di sostituzione.

Existing Sostituzione
CoreUtils @microsoft/applicationinsights-core-js
CoreUtils._canUseCookies No. Non usare questa funzione perché fa sì che tutti i riferimenti CoreUtils vengano inclusi nel codice finale.
Effettuare il refactoring della gestione dei cookie per usare appInsights.getCookieMgr().setEnabled(true/false) per impostare il valore e appInsights.getCookieMgr().isEnabled() per controllare il valore.
CoreUtils.isTypeof isTypeof
CoreUtils.isUndefined isUndefined
CoreUtils.isNullOrUndefined isNullOrUndefined
CoreUtils.hasOwnProperty hasOwnProperty
CoreUtils.isFunction isFunction
CoreUtils.isObject IsObject
CoreUtils.isDate // verifica se la stringa è una data isDate
CoreUtils.isArray isArray
CoreUtils.isError isError
CoreUtils.isString IsString
CoreUtils.isNumber isNumber
CoreUtils.isBoolean (funzione che verifica se un valore è booleano) isBoolean
CoreUtils.toISOString toISOString o getISOString
CoreUtils.arrForEach arrForEach
CoreUtils.arrIndexOf arrIndexOf
CoreUtils.arrMap arrMap
CoreUtils.arrReduce arrReduce
CoreUtils.strTrim strTrim
CoreUtils.objCreate objCreateFn
CoreUtils.objKeys objKeys
CoreUtils.objDefineAccessors objDefineAccessors
CoreUtils.addEventHandler addEventHandler
CoreUtils.dateNow dateNow
CoreUtils.isIE isIE
CoreUtils.disableCookies disableCookies
Il riferimento a una delle due funzioni fa sì che venga incluso anche CoreUtils per garantire la compatibilità con le versioni precedenti.
Effettuare il refactoring della gestione dei cookie per usare appInsights.getCookieMgr().setEnabled(false)
CoreUtils.newGuid newGuid
CoreUtils.perfNow perfNow
CoreUtils.newId newId
CoreUtils.randomValue randomValue
CoreUtils.random32 random32
CoreUtils.mwcRandomSeed mwcRandomSeed
CoreUtils.mwcRandom32 mwcRandom32
CoreUtils.generateW3CId generateW3CId
EventHelper @microsoft/applicationinsights-core-js
EventHelper.Attach attachEvent
EventHelper.AttachEvent attachEvent
EventHelper.Detach detachEvent
EventHelper.DetachEvent detachEvent
Utile @microsoft/applicationinsights-common-js
Util.NotSpecified strNotSpecified
Util.createDomEvent (crea un evento DOM) createDomEvent
Util.disableStorage utlDisabilitaMemorizzazione
Util.isInternalApplicationInsightsEndpoint isInternalApplicationInsightsEndpoint
Util.canUseLocalStorage utlCanUseLocalStorage
Util.getStorage utlGetLocalStorage
Util.setStorage utlSetLocalStorage
Util.removeStorage utlRemoveStorage
Util.canUseSessionStorage utlCanUseSessionStorage
Util.getSessionStorageKeys utlGetSessionStorageKeys
Util.getSessionStorage utlGetSessionStorage
Util.setSessionStorage utlSetSessionStorage
Util.removeSessionStorage utlRemoveSessionStorage
Util.disableCookies disableCookies
Per garantire la compatibilità con le versioni precedenti, fare riferimento a CoreUtils.
Effettuare il refactoring della gestione dei cookie per usare appInsights.getCookieMgr().setEnabled(false)
Util.canUseCookies può utilizzare i cookie
Per garantire la compatibilità con le versioni precedenti, fare riferimento a CoreUtils.
Effettuare il refactoring della gestione dei cookie per usare appInsights.getCookieMgr().isEnabled()
Util.disallowsSameSiteNone uaDisallowsSameSiteNone
Util.setCookie coreSetCookie
Per garantire la compatibilità con le versioni precedenti, fare riferimento a CoreUtils.
Effettuare il refactoring della gestione dei cookie per usare appInsights.getCookieMgr().set(name: string, value: string)
Util.stringToBoolOrDefault stringToBoolOrDefault
Util.getCookie coreGetCookie
Per garantire la compatibilità con le versioni precedenti, fare riferimento a CoreUtils.
Effettuare il refactoring della gestione dei cookie per usare appInsights.getCookieMgr().get(name: string)
Util.deleteCookie coreEliminaCookie
Per garantire la compatibilità con le versioni precedenti, fare riferimento a CoreUtils.
Effettuare il refactoring della gestione dei cookie per usare appInsights.getCookieMgr().del(name: string, path?: string)
Util.trim strTrim
Util.newId newId
Util.random32 ---
Nessuna sostituzione, effettuare il refactoring del codice per usare il core random32(true)
Util.generateW3CId generateW3CId
Util.isArray isArray
Util.isError isError
Util.isDate isDate
Util.toISOStringForIE8 toISOString (metodo per generare una stringa in formato ISO)
Util.getIEVersion getIEVersion
Util.msToTimeSpan msToTimeSpan
Util.isCrossOriginError isCrossOriginError
Util.dump dumpObj
Util.getExceptionName getExceptionName
Util.addEventHandler attachEvent
Util.IsBeaconApiSupported isBeaconApiSupported
Util.getExtension getExtensionByName
UrlHelper @microsoft/applicationinsights-common-js
UrlHelper.parseUrl urlParseUrl
UrlHelper.getAbsoluteUrl urlGetAbsoluteUrl
UrlHelper.getPathName urlGetPathName
UrlHelper.getCompeteUrl urlGetCompleteUrl
UrlHelper.parseHost urlParseHost
UrlHelper.parseFullHost urlParseFullHost
DateTimeUtils @microsoft/applicationinsights-common-js
DateTimeUtils.Now dateTimeUtilsNow
DateTimeUtils.GetDuration dateTimeUtilsDuration
ConnectionStringParser @microsoft/applicationinsights-common-js
ConnectionStringParser.parse parseConnectionString

Notifiche del servizio

L'SDK include notifiche del servizio che forniscono raccomandazioni utili per garantire i flussi di telemetria senza interruzioni in Application Insights. Le notifiche vengono visualizzate come messaggio di eccezione all'interno di Application Insights. L'SDK garantisce che le notifiche siano pertinenti in base alle impostazioni dell'SDK e che regola il livello di dettaglio in base all'urgenza della raccomandazione. Mantieni attive le notifiche di servizio, ma puoi disattivarle tramite la configurazione featureOptIn.

Attualmente non vengono inviate notifiche attive.

JavaScript SDK gestisce le notifiche del servizio ed esegue regolarmente il polling di un file JSON pubblico per controllare e aggiornare queste notifiche. Per disabilitare il polling eseguito da JavaScript SDK, disabilitare la modalità featureOptIn.

Risoluzione dei problemi

Vedere l'articolo sulla risoluzione dei problemi dedicato.

Passaggi successivi