Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Azure Application 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.
Per istruzioni su come aggiungere la configurazione dell'SDK, vedere Aggiungere la configurazione dell'SDK.
| Nome | TIPO | 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| convertUndefined Fornire all'utente un'opzione per convertire un campo non definito in un valore definito dall'utente. |
any |
Non definito |
| 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 |
| 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 |
| 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 |
| 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 |
| diagnosticLogInterval (interno) Intervallo di polling (in ms) per la coda di registrazione interna |
NUMERIC | 10.000 |
| disableAjaxTracking Se true, le chiamate Ajax non vengono raccolte automaticamente. L'impostazione predefinita è false. |
boolean | falso |
| 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 |
| 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 |
| disableDataLossAnalysis Se false, i buffer del mittente di dati di telemetria interni vengono controllati all'avvio per gli elementi non ancora inviati. |
boolean | true |
| disabilita il tracciamento delle eccezioni Se true, le eccezioni non vengono recuperate 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 |
| disableFlushOnBeforeUnload Impostazione predefinita: false. Se true, il metodo flush non viene chiamato quando vengono attivati gli eventi onBeforeUnload |
boolean | falso |
| disableIkeyDeprecationMessage Disabilitare il messaggio di errore di deprecazione della chiave di strumentazione. Se true, i messaggi di errore NON vengono inviati. |
boolean | true |
| disableInstrumentationKeyValidation Se true, il controllo di convalida della chiave di strumentazione viene ignorato. Il valore predefinito è False. |
boolean | falso |
| disableTelemetry Se true, i dati di telemetria non vengono raccolti o inviati. L'impostazione predefinita è false. |
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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| enableUnhandledPromiseRejectionTracking Se true, i rifiuti delle promesse non gestite vengono automaticamente riportati 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 |
| 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 |
| 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 |
| featureOptIn Impostare Dettagli del consenso esplicito della funzionalità. Questo campo di configurazione è disponibile solo nella versione 3.0.3 e successive. |
IFeatureOptIn | Non definito |
| 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 |
| 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"] |
| isBeaconApiDisabled Se false, l'SDK invia tutti i dati di telemetria usando l'API Beacon |
boolean | true |
| isBrowserLinkTrackingEnabled L'impostazione predefinita è false. Se true, l'SDK tiene traccia di tutte le richieste di Browser Link. |
boolean | falso |
| isRetryDisabled Impostazione predefinita: false. Se false, riprovare 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 |
| 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 |
| 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 |
| 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 |
| maxBatchInterval Durata dell'invio in batch dei 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 |
| namePrefix Valore facoltativo usato come prefisso del nome per localStorage e nome del cookie di sessione. |
string | Non definito |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| sessionExpirationMs Una sessione viene registrata se ha continuato 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 |
| 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 |
| 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 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
Gli agenti e gli SDK di Application Insights per .NET, .NET Core, Java, Node.jse JavaScript supportano la traccia distribuita in modo nativo.
Dopo avere installato e configurato la versione corretta di Application Insights SDK, le informazioni di traccia vengono raccolte automaticamente per le librerie, le tecnologie e i framework più diffusi da agenti di raccolta delle dipendenze dell'SDK automatici. L'elenco completo delle tecnologie supportate è disponibile nella documentazione sulla raccolta automatica delle dipendenze.
Qualsiasi tecnologia può anche essere rilevata manualmente con una chiamata a TrackDependency in TelemetryClient.
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 versione più recente di Application Insights SDK supporta il protocollo Trace-Context, ma potrebbe essere necessario acconsentire esplicitamente. La compatibilità con il precedente protocollo di correlazione supportato da Application Insights SDK è mantenuta.
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 definisce anche l'estensione per il protocollo HTTP di correlazione. Usa le coppie nome-valore Request-Context per propagare la raccolta di proprietà usate dal chiamante o dal destinatario della chiamata. L'SDK di Application Insights utilizza questa intestazione per impostare i campi dependency.target e request.source.
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 framework AI_AND_W3C viene fornito per impostazione predefinita per garantire la retrocompatibilità con i servizi legacy strumentati da Application Insights.
-
Aggiungere la configurazione seguente:
distributedTracingMode: DistributedTracingModes.W3C Configurazione basata su script del loader SDK JavaScript (Web)
Aggiungere la configurazione seguente:
distributedTracingMode: 2 // DistributedTracingModes.W3C
Se le richieste XMLHttpRequest o Fetch Ajax vengono inviate 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 sul server chiamato non supporta l'intestazione traceparent , la richiesta potrebbe non riuscire, a seconda che il browser o la versione possa 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
È possibile scrivere codice per filtrare, modificare o arricchire i dati di telemetria prima dell'invio dall'SDK. L'elaborazione include i dati inviati dai moduli di telemetria standard, ad esempio la raccolta di richieste HTTP e la raccolta delle dipendenze.
Il filtro può modificare o rimuovere i dati di telemetria prima che vengano inviati dall'SDK implementando
ITelemetryProcessor. Ad esempio, è possibile ridurre il volume di dati di telemetria escludendo le richieste dai robot. A differenza del campionamento, si ha il controllo completo su ciò che viene inviato o rimosso, ma influisce su qualsiasi metrica basata su log aggregati. A seconda della modalità di eliminazione degli elementi, è anche possibile perdere la possibilità di spostarsi tra gli elementi correlati.Aggiungere o modificare proprietà a tutti i dati di telemetria inviati dall'app implementando un oggetto
ITelemetryInitializer. Ad esempio, è possibile aggiungere valori calcolati o numeri di versione in base ai quali filtrare i dati nel portale.Il campionamento riduce il volume di dati di telemetria senza influire sulle statistiche. Mantiene insieme i punti dati correlati in modo che sia possibile spostarsi tra di essi durante la diagnosi di un problema. Nel portale i conteggi totali vengono moltiplicati per compensare il campionamento.
Annotazioni
L'API SDK viene usata per inviare metriche ed eventi personalizzati.
Filtraggio
Questa tecnica consente di controllare direttamente gli elementi inclusi o esclusi dal flusso di telemetria. Il filtro può essere usato per eliminare gli elementi di telemetria dall'invio ad Application Insights. È possibile usare il filtro con il campionamento o separatamente.
Per filtrare i dati di telemetria, scrivere un processore di telemetria e registrarlo con TelemetryConfiguration. Tutti i dati di telemetria passano attraverso il processore. È possibile scegliere di rilasciarlo dal flusso o assegnarlo al processore successivo nella catena. I dati di telemetria dai moduli standard, come il collettore di richieste HTTP e il collettore di dipendenze, e la telemetria che hai tracciato personalmente sono inclusi. Ad esempio, è possibile filtrare i dati di telemetria relativi alle richieste dei robot o alle chiamate di dipendenza riuscite.
Avvertimento
Filtrare i dati di telemetria inviati dall'SDK usando processori può asimmetriare le statistiche visualizzate nel portale e rendere difficile seguire gli elementi correlati.
In alternativa, valutare la possibilità di usare il campionamento.
Applicazioni Web JavaScript
È possibile filtrare i dati di telemetria dalle applicazioni Web JavaScript usando ITelemetryInitializer.
Creare una funzione di callback dell'inizializzatore di telemetria. La funzione di callback accetta
ITelemetryItemcome parametro, ovvero l'evento in fase di elaborazione. Se si restituiscefalseda questo callback, l'elemento di telemetria viene filtrato.var filteringFunction = (envelope) => { if (envelope.data.someField === 'tobefilteredout') { return false; } return true; };Aggiungi il callback dell'inizializzatore di telemetria:
appInsights.addTelemetryInitializer(filteringFunction);
ITelemetryProcessor e ITelemetryInitializer
Qual è la differenza tra processori di telemetria e inizializzatori di telemetria?
- Ci sono alcune sovrapposizioni in ciò che è possibile fare con loro. Entrambi possono essere usati per aggiungere o modificare le proprietà dei dati di telemetria, anche se è consigliabile usare gli inizializzatori a tale scopo.
- Gli inizializzatori di telemetria vengono sempre eseguiti prima dei processori di telemetria.
- Gli inizializzatori di telemetria possono essere chiamati più volte. Per convenzione, non impostano alcuna proprietà già impostata.
- I processori di telemetria consentono di sostituire o rimuovere completamente un elemento di telemetria.
- Tutti gli inizializzatori di telemetria registrati vengono chiamati per ogni elemento di telemetria. Per i processori di telemetria, SDK garantisce la chiamata al primo processore di telemetria. Se il resto dei processori viene chiamato o meno viene deciso dai processori di telemetria precedenti.
- Usare gli inizializzatori di telemetria per arricchire i dati di telemetria con più proprietà o eseguire l'override di uno esistente. Usare un processore di telemetria per filtrare i dati di telemetria.
Aggiungere/modificare le proprietà
Usare gli inizializzatori di telemetria per arricchire i dati di telemetria con informazioni aggiuntive o per eseguire l'override delle proprietà di telemetria impostate dai moduli di telemetria standard.
Ad esempio, Application Insights per un pacchetto Web raccoglie i dati di telemetria sulle richieste HTTP. Per impostazione predefinita, contrassegna qualsiasi richiesta con un codice >di risposta =400 come non riuscita. Se invece si vuole considerare 400 come un risultato positivo, è possibile fornire un inizializzatore di telemetria che imposti la proprietà Success.
Se si specifica un inizializzatore di telemetria, viene chiamato ogni volta che viene chiamato uno dei metodi Track*(). Questo inizializzatore include Track() metodi chiamati dai moduli di telemetria standard. Per convenzione, questi moduli non impostano alcuna proprietà già impostata da un inizializzatore. Gli inizializzatori di telemetria vengono chiamati prima di chiamare i processori di telemetria, quindi tutti gli arricchimenti eseguiti dagli inizializzatori sono visibili ai processori.
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 di callback onInit nella configurazione dello script del caricatore SDK JavaScript (Web):
<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";
});
});
Gestione dei cookie
A partire dalla versione 2.6.0, Azure Application Insights JavaScript SDK fornisce la gestione dei cookie basata su istanze che può essere disabilitata e riabilitata dopo l'inizializzazione.
Se i cookie sono stati disabilitati durante l'inizializzazione usando le configurazioni disableCookiesUsage o cookieCfg.enabled, è possibile riabilitarli usando la funzione setEnabled dell'oggetto ICookieMgr.
La gestione dei cookie basata su istanza sostituisce le funzioni globali CoreUtils precedenti di disableCookies(), setCookie(), getCookie() e deleteCookie().
Per sfruttare i miglioramenti apportati agli alberi introdotti nella versione 2.6.0, è consigliabile non usare più le funzioni globali.
Configurazione dei cookie
ICookieMgrConfig è una configurazione di cookie per la gestione dei cookie basata su istanza aggiunta nella versione 2.6.0. Le opzioni fornite 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 di cookie.
Le opzioni ICookieMgrConfig sono definite nella tabella seguente.
| 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 usare per il cookie, se non viene specificato che usa alcun valore dal valore radice cookiePath. |
| ignoreCookies | string[] | Non definito | Specificare i nomi dei cookie da ignorare, perché qualsiasi nome di cookie corrispondente non venga mai letto o scritto. Possono comunque essere eliminati o eliminati in modo esplicito. 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 possono comunque essere letti, a meno che non siano inclusi anche in ignoreCookies. Possono comunque essere eliminati o eliminati in modo esplicito. 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 denominato, se non specificato usa l'analisi/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, separato da setCookie per evitare la necessità di analizzare il valore per determinare se il cookie viene aggiunto o rimosso. Se non viene specificato, usa l'analisi/memorizzazione nella cache dei cookie interni. |
Mappa di origine
Il supporto della mappa di origine consente di eseguire il debug di codice JavaScript minimizzato con la possibilità di decomprimere 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, inclusi Node.JS, senza la necessità di un aggiornamento dell'SDK
Collegamento all'account di archiviazione BLOB
Application Insights supporta il caricamento delle mappe di origine nel contenitore BLOB dell'account di archiviazione di Azure. È possibile usare le mappe di origine per decomprimere gli stack di chiamate disponibili nella pagina Dettagli delle transazioni end-to-end. È anche possibile usare le mappe di origine per decomprimere eventuali eccezioni inviate dall'SDK JavaScript o dall'SDK di Node.js.
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.
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.
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.
Caricare mappe di origine tramite Azure Pipelines (scelta consigliata)
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.
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.
- Nel portale di Azure visualizzare i dettagli di un'eccezione minimizzata.
- Selezionare Decomprimi.
- 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:
Andare alla scheda Proprietà della risorsa di Application Insights.
Selezionare Modifica contenitore BLOB mapping di origine.
Selezionare un contenitore BLOB differente come contenitore della mappa di origine.
Selezionare Applica.
Visualizzare lo stack di chiamate non minimizzato
Per visualizzare lo stack di chiamate non minimizzato, selezionare un elemento di dati di telemetria eccezioni nel portale di Azure, trovare le mappe di origine corrispondenti allo stack di chiamate e trascinare e rilasciare le mappe di origine nello stack di 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.
Scuotimento albero
Lo scuotimento dell'albero elimina 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, il codice inutilizzato non è incluso nel bundle finale, riducendone le dimensioni e migliorando le prestazioni.
Miglioramenti e raccomandazioni per lo scuotimento dell'albero
Nella versione 2.6.0 è stato deprecato e rimosso l'utilizzo interno di queste classi helper statiche per migliorare il supporto per gli algoritmi di scuotimento ad albero. Consente ai pacchetti npm di eliminare in modo sicuro il codice inutilizzato.
CoreUtilsEventHelperUtilUrlHelperDateTimeUtilsConnectionStringParser
Le funzioni vengono ora esportate come radici di primo livello dai moduli, semplificando il refactoring del codice per migliorare lo scuotimento dell'albero.
Le classi statiche sono state modificate in oggetti const che fanno riferimento alle nuove funzioni esportate e sono previste modifiche future per effettuare il refactoring dei riferimenti.
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. È consigliabile usare le funzioni di sostituzione per ridurre le dimensioni e supportare tutte le versioni di Internet Explorer.
| Existing | Sostituzione |
|---|---|
| CoreUtils | @microsoft/applicationinsights-core-js |
| CoreUtils._canUseCookies | No. Non usare 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 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) |
| 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
Le notifiche del servizio sono una funzionalità integrata nell'SDK per fornire consigli interattivi per garantire che i flussi di telemetria non vengano interrotti in Application Insights. È possibile visualizzare le notifiche come messaggio di eccezione in Application Insights. Si garantisce che le notifiche siano rilevanti in base alle impostazioni dell'SDK e si modifica il livello di dettaglio in base all'urgenza della raccomandazione. È consigliabile lasciare attiva le notifiche del servizio, ma è possibile rifiutare esplicitamente la configurazione featureOptIn.
Attualmente non vengono inviate notifiche attive.
Le notifiche del servizio vengono gestite da JavaScript SDK, che 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
- Per esaminare le domande frequenti, vedere Domande frequenti sulla configurazione di JavaScript SDK.
- Tenere traccia dell'utilizzo
- Attività Copia dei file di Azure
- Informazioni di riferimento per i tipi di dati di Monitoraggio di Azure e codice del SDK per l'SDK di JavaScript.