Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O SDK do JavaScript Application Insights do Azure fornece configuração para rastrear, monitorar e depurar seus aplicativos Web.
Configuração do SDK
Esses campos de configuração são opcionais e o padrão é falso, a menos que indicado de outra forma.
Para visualizar as instruções sobre como adicionar a configuração do SDK, confira Adicionar configuração do SDK.
| Nome | Tipo | Padrão |
|---|---|---|
| ID da conta Uma ID de conta opcional, se seu aplicativo agrupar usuários em contas. Sem espaços, vírgulas, ponto e vírgulas, sinal de igual ou barras verticais |
cadeia | nulo |
| addRequestContext Forneça uma maneira de enriquecer logs de dependências com contexto no início de uma chamada à API. O padrão é indefinido. Você precisa verificar se xhr existe se você configurar o contexto relacionado a xhr. Você precisa verificar se fetch request e fetch response existe se você configurar o contexto relacionado a fetch. Caso contrário, talvez você não obtenha os dados necessários. |
(requestContext: IRequestionContext) => {[Key: string]: Any} | não definido |
| ajaxPerfLookupDelay O padrão é 25 ms. O período de tempo a esperar antes de tentar novamente encontrar os tempos do windows.performance para uma solicitação Ajax, o tempo está em milissegundos e é passado diretamente para setTimeout(). |
numérico | vinte e cinco |
| ID do aplicativo AppId é usado para a correlação entre dependências AJAX acontecendo no lado do cliente com as solicitações do lado do servidor. Quando a API do Sinalizador estiver habilitada, ela não poderá ser usada automaticamente, mas poderá ser definida manualmente na configuração. O padrão é nulo |
cadeia | nulo |
| autoTrackPageVisitTime Se marcado como true, em uma exibição de página, o tempo de exibição da página instrumentada anterior será acompanhado e enviado como uma telemetria, e um novo temporizador será iniciado para a exibição de página atual. Ele é enviado como uma métrica personalizada chamada PageVisitTime em milliseconds e é calculado por meio da função Date now() (se disponível) e recorre a (new Date()).getTime() se now() não está disponível (IE8 ou inferior). O padrão é false. |
booleano | falso |
| convertUndefined Forneça ao usuário uma opção para converter campo indefinido em valor definido pelo usuário. |
any |
não definido |
| cookieCfg Padrões para a habilitação do uso de cookies, consulte as configurações ICookieCfgConfig para todos os padrões. |
ICookieCfgConfig [Opcional] (A partir da versão 2.6.0) |
não definido |
| cookieDomain Domínio de cookie personalizado. É útil se você deseja compartilhar cookies do Application Insights entre subdomínios. (Desde v2.6.0) Se cookieCfg.domain for definido, terá precedência sobre esse valor. |
alias para cookieCfg.domain[Opcional] |
nulo |
| cookiePath Caminho do cookie personalizado. É útil se você deseja compartilhar cookies do Application Insights por trás de um gateway de aplicativo. Se cookieCfg.path for definido, terá precedência. |
alias para cookieCfg.path[Opcional] (A partir da versão 2.6.0) |
nulo |
| correlationHeaderDomains Desabilita cabeçalhos de correlação para domínios específicos |
cadeia de caracteres[] | não definido |
| correlationHeaderExcludedDomains Desabilita cabeçalhos de correlação para domínios específicos |
cadeia de caracteres[] | não definido |
| correlationHeaderExcludePatterns Desabilitar cabeçalhos de correlação usando expressões regulares |
regex[] | não definido |
| createPerfMgr A função de retorno de chamada que é chamada para criar uma instância IPerfManager quando necessário e quando enablePerfMgr está habilitado permite substituir a criação padrão de um PerfManager() sem a necessidade de setPerfMgr() após a inicialização. |
(núcleo: IAppInsightsCore, notificationManager: INotificationManager) => IPerfManager | não definido |
| customHeaders A capacidade do usuário de fornecer cabeçalhos extras ao usar um ponto de extremidade personalizado. customHeaders não são adicionados no momento de desligamento do navegador quando o remetente do sinalizador for usado. E não há suporte para a adição de cabeçalhos personalizados no IE9 ou anterior. |
[{header: string, value: string}] |
não definido |
| diagnosticLogInterval Intervalo (interno) de sondagem (em ms) para fila de log interno |
numérico | 10.000 |
| disableAjaxTracking Se marcado como true, as chamadas AJAX não serão coletadas automaticamente. O padrão é false. |
booleano | falso |
| desativarUsoDeCookies Padrão falso. Um booleano que indica se o uso de cookies pelo SDK deve ser desabilitado. Se verdadeiro, o SDK não armazena nem lê os dados dos cookies. (Desde v2.6.0) Se cookieCfg.enabled for definido, terá precedência. O uso de cookies pode ser reabilitado após a inicialização por meio de core.getCookieMgr().setEnabled(true). |
alias para cookieCfg.enabled[Opcional] |
falso |
| disableCorrelationHeaders Se falso, o SDK adiciona dois cabeçalhos ('Request-Id' e 'Request-Context') a todas as solicitações de dependência para correlacioná-las com as solicitações correspondentes no lado do servidor. O padrão é false. |
booleano | falso |
| disableDataLossAnalysis Se falso, os buffers do remetente de telemetria interna são verificados na inicialização de itens ainda não enviados. |
booleano | verdadeiro |
| disableExceptionTracking Se marcado como true, as exceções não serão coletadas automaticamente. O padrão é false. |
booleano | falso |
| disableFetchTracking A configuração padrão para disableFetchTracking é false, o que significa que está habilitada. No entanto, em versões anteriores a 2.8.10, ela foi desabilitada por padrão. Quando definido como true, as solicitações de Fetch não são coletadas automaticamente. A configuração padrão foi alterada de true para false na versão 2.8.0. |
booleano | falso |
| disableFlushOnBeforeUnload Padrão falso. Se verdadeiro, o método de liberação não é chamado quando o evento onBeforeUnload é acionado |
booleano | falso |
| disableIkeyDeprecationMessage Desabilitar mensagem de erro de substituição da Chave de instrumentação. Se verdadeiro, as mensagens de erro NÃO são enviadas. |
booleano | verdadeiro |
| disableInstrumentationKeyValidation Se marcado como true, a verificação de validação da chave de instrumentação será ignorada. O valor padrão é falso. |
booleano | falso |
| desativar telemetria Se marcado como true, a telemetria não será coletada ou enviada. O padrão é false. |
booleano | falso |
| disableXhr Não use XMLHttpRequest ou XDomainRequest (para Internet Explorer < versão 9) por padrão, em vez disso, tente usar fetch() ou sendBeacon. Se nenhum outro transporte estiver disponível, ele usará XMLHttpRequest |
booleano | falso |
| distributedTracingMode Define o modo de rastreamento distribuído. Se o modo AI_AND_W3C ou W3C for definido, os cabeçalhos de contexto de rastreamento W3C (traceparent/tracestate) serão gerados e incluídos em todas as solicitações de saída. O AI_AND_W3C é fornecido para retrocompatibilidade com os serviços instrumentados do Application Insights herdados. |
numérico ou DistributedTracingModes |
DistributedTracing Modes.AI_AND_W3C |
| enableAjaxErrorStatusText Padrão falso. Se verdadeiro, inclua o texto de dados de erro de resposta booleano no evento de dependência em caso de falha em solicitações AJAX. |
booleano | falso |
| enableAjaxPerfTracking Padrão falso. Sinalizador para habilitar a pesquisa e a inclusão intervalos extras do window.performance do navegador nas métricas do Ajax (XHR e fetch) relatadas. |
booleano | falso |
| ativarRastreamentoAutomáticoDeRota Rastreia automaticamente as alterações de rota nos SPA (Aplicativos de Página Única). Se verdadeiro, cada alteração de rota envia uma nova Exibição de Página para o Application Insights. As alterações de rota de hash ( example.com/foo#bar) também são registradas como novas exibições de página.Observação: se você habilitar este campo, não habilite o objeto para a historyconfiguração do roteador React porque você obtém vários eventos de exibição de página. |
booleano | falso |
| enableCorsCorrelation Se verdadeiro, o SDK adiciona dois cabeçalhos ('Request-Id' e 'Request-Context') a todas as solicitações CORS para correlacionar dependências do AJAX de saída com solicitações correspondentes no lado do servidor. O padrão é falso |
booleano | falso |
| enableDebug Se marcado como true, os dados de depuração internos são lançados como uma exceção em vez de serem registrados, independentemente das configurações de log do SDK. O padrão é false. Observação: habilitar essa configuração resulta em queda da telemetria sempre que ocorrer um erro interno. Isso pode ser útil para identificar rapidamente problemas com sua configuração ou uso do SDK. Se você não quiser perder a telemetria durante a depuração, considere usar loggingLevelConsole ou loggingLevelTelemetry em vez de enableDebug. |
booleano | falso |
| enablePerfMgr Quando habilitado (verdadeiro), ele criará perfEvents locais para o código que foi instrumentado para emitir perfEvents (por meio do auxiliar doPerf()). Ele pode ser usado para identificar problemas de desempenho no SDK com base em seu uso ou, opcionalmente, em seu próprio código instrumentado. |
booleano | falso |
| enableRequestHeaderTracking Se verdadeiro, os cabeçalhos de solicitação de Fetch e do AJAX são rastreados, o padrão é falso. Se o ignoreHeaders não estiver configurado, os cabeçalhos Authorization e X-API-Key não serão registrados. |
booleano | falso |
| enableResponseHeaderTracking Se verdadeiro, os cabeçalhos de resposta da solicitação de Fetch e do AJAX são rastreados, o padrão é falso. Se o ignoreHeaders não estiver configurado, o cabeçalho WWW-Authenticate não será registrado. |
booleano | falso |
| enableSessionStorageBuffer Padrão verdadeiro. Se marcado como true, o buffer com todas as telemetrias não enviadas será armazenado no armazenamento de sessão. O buffer é restaurado no carregamento da página |
booleano | verdadeiro |
| enableUnhandledPromiseRejectionTracking Se verdadeiro, as rejeições de promessa não tratadas são coletadas automaticamente como um erro do JavaScript. Quando disableExceptionTracking for verdadeiro (não rastreia exceções), o valor de configuração será ignorado e as rejeições de promessa não tratadas não serão relatadas. |
booleano | falso |
| eventsLimitInMem O número de eventos que podem ser mantidos na memória antes que o SDK comece a descartar eventos quando não estiver usando o Armazenamento de Sessão (o padrão). |
número | 10.000 |
| excludeRequestFromAutoTrackingPatterns Forneça uma maneira de excluir uma rota específica do rastreamento automático para XMLHttpRequest ou solicitação de Fetch. Se definido, para uma solicitação Ajax/fetch em que o URL da solicitação corresponda aos padrões regex, o rastreamento automático será desativado. O padrão é indefinido. |
string[] | RegExp[] | não definido |
| featureOptIn Defina os detalhes da opção de Recurso. Esse campo de configuração só está disponível na versão 3.0.3 e posteriores. |
IFeatureOptIn | não definido |
| idLength Identifica o comprimento padrão usado para gerar novos valores de sessão aleatória e de ID de usuário. O padrão é 22, o valor padrão anterior era 5 (v2.5.8 ou inferior), se você precisar manter o comprimento máximo anterior, defina o valor como 5. |
numérico | 22 |
| ignoreHeaders Cabeçalhos de solicitação e resposta de Fetch e do AJAX a serem ignorados nos dados de log. Para substituir ou descartar o padrão, adicione um array com todos os cabeçalhos a serem excluídos ou um array vazio à configuração. |
cadeia de caracteres[] | ["Autorização", "X-API-Key", "Autenticar WWW"] |
| isBeaconApiDisabled Se falso, o SDK envia toda a telemetria usando a API do Sinalizador |
booleano | verdadeiro |
| isBrowserLinkTrackingEnabled O padrão é false. Se verdadeiro, o SDK rastreia todas as solicitações do Link do Navegador. |
booleano | falso |
| isRetryDisabled Padrão falso. Se marcado como false, tente novamente em 206 (êxito parcial), 408 (tempo limite), 429 (número excessivo de solicitações), 500 (erro interno do servidor), 503 (serviço indisponível) e 0 (offline, somente se detectado) |
booleano | falso |
| isStorageUseDisabled Se verdadeiro, o SDK não armazena nem lê nenhum dado do armazenamento local e da sessão. O padrão é false. |
booleano | falso |
| loggingLevelConsole Registra erros internos do Application Insights no console. 0: desativado, 1: Somente erros críticos, 2: Tudo (erros e avisos) |
numérico | 0 |
| loggingLevelTelemetry Envia erros internos do Application Insights como telemetria. 0: desativado, 1: Somente erros críticos, 2: Tudo (erros e avisos) |
numérico | 1 |
| maxAjaxCallsPerView Padrão 500 - controla quantas chamadas do Ajax são monitoradas por exibição de página. Defina como -1 para monitorar todas as chamadas AJAX (ilimitadas) na página. |
numérico | 500 |
| maxAjaxPerfLookupAttempts O valor padrão é 3. É necessário o número máximo de vezes para procurar os intervalos do window.performance (se disponíveis). Nem todos os navegadores preenchem o window.performance antes de relatar o fim da solicitação XHR. Para solicitações de fetch, ele é adicionado após a conclusão. |
numérico | 3 |
| maxBatchInterval Quanta telemetria colocar em lote antes de enviar (milissegundos) |
numérico | 15000 |
| maxBatchSizeInBytes Tamanho máximo do lote de telemetria. Se um lote exceder esse limite, ele será imediatamente enviado e um novo lote será iniciado |
numérico | 10.000 |
| namePrefix Um valor opcional que é usado como sufixo de nome para o localStorage e o nome do cookie de sessão. |
cadeia | não definido |
| onunloadDisableBeacon Padrão falso. quando a guia é fechada, o SDK envia toda a telemetria restante usando a API do Sinalizador |
booleano | falso |
| onunloadDisableFetch Se houver suporte para fetch keepalive, não use-o para enviar eventos durante o descarregamento, ele ainda poderá voltar para fetch() sem keepalive |
booleano | falso |
| overridePageViewDuration Se marcado como true, o comportamento padrão do trackPageView será alterado para registrar o final do intervalo de duração da exibição de página quando o trackPageView for chamado. Se marcado como false e nenhuma duração personalizada for fornecida para o trackPageView, o desempenho de exibição de página será calculado usando a API Navigation Timing. O padrão é false. |
booleano | falso |
| perfEvtsSendAll Quando enablePerfMgr está habilitado e o IPerfManager aciona um INotificationManager. perfEvent (), esse sinalizador determina se um evento é disparado (e enviado a todos os ouvintes) para todos os eventos (true) ou apenas para eventos 'pai' (falso <padrão >). Um IPerfEvent pai é um evento em que nenhum outro IPerfEvent ainda está em execução no ponto em que o evento está sendo criado e sua propriedade pai não é nula ou indefinida. A partir da v 2.5.7 |
booleano | falso |
| porcentagemDeAmostragem Porcentagem de eventos enviados. O padrão é 100, o que significa que todos os eventos são enviados. Defina se desejar preservar seu limite de dados para aplicativos de grande escala. |
numérico | 100 |
| sdkExtension Define o nome da extensão do SDK. Somente caracteres alfabéticos são permitidos. O nome da extensão é adicionado como um prefixo à marca ' ai.internal.sdkVersion ' (por exemplo, 'ext_javascript:2.0.0'). O padrão é nulo. |
cadeia | nulo |
| sessionCookiePostfix Um valor opcional usado como sufixo de nome para o nome do cookie de sessão. Se indefinido, namePrefix é usado como sufixo de nome para o nome do cookie de sessão. |
cadeia | não definido |
| sessionExpirationMs Uma sessão será registrada se continuar por esse período de tempo em milissegundos. O padrão é 24 horas |
numérico | 86,4 milhões |
| sessionRenewalMs Uma sessão será registrada se o usuário estiver inativo por esse período de tempo em milissegundos. O padrão é 30 minutos |
numérico | 1,8 milhões |
| throttleMgrCfg Definir a configuração do gerenciador de limitação por chave. Esse campo de configuração só está disponível na versão 3.0.3 e posteriores. |
{[key: number]: IThrottleMgrConfig} |
não definido |
| userCookiePostfix Um valor opcional usado como sufixo para o nome do cookie de usuário. Se indefinido, nenhum postfix é adicionado ao nome do cookie de usuário. |
cadeia | não definido |
Rastreamento distribuído
As arquiteturas modernas de nuvem e microsserviços habilitaram serviços simples e independentemente implantáveis que reduzem os custos, aumentando a disponibilidade e a taxa de transferência. No entanto, tornou os sistemas como um todo mais difíceis de compreender e depurar. O rastreamento distribuído resolve esse problema fornecendo um criador de perfil de desempenho que funciona como pilhas de chamadas para arquiteturas de nuvem e microsserviços.
O Azure Monitor fornece duas experiências para consumir dados de rastreamento distribuídos: a exibição de diagnóstico de transação para uma única transação/solicitação e a exibição do mapa do aplicativo para mostrar como os sistemas interagem.
O Application Insights pode monitorar cada componente separadamente e detectar qual componente é responsável por falhas ou degradação de desempenho usando a correlação de telemetria distribuída. Este artigo explica o modelo de dados, técnicas de propagação de contexto, protocolos e implementação de táticas de correlação em diferentes linguagens e plataformas usadas pelo Application Insights.
Habilitar o rastreamento distribuído por meio do Application Insights por meio de SDKs ou auto-instrumentação
Os agentes do Application Insights e os SDKs para .NET, .NET Core, Java, Node.jse JavaScript dão suporte ao rastreamento distribuído nativamente.
Com o SDK do Application Insights adequado instalado e configurado, as informações de rastreamento são coletadas automaticamente para estruturas, bibliotecas e tecnologias populares por coletores automáticos de dependência do SDK. A lista completa de tecnologias com suporte está disponível na Documentação de autocoleta de dependência.
Qualquer tecnologia também pode ser rastreada manualmente usando TrackDependency no TelemetryClient.
Modelo de dados para correlação de telemetria
O Application Insights define um modelo de dados para correlação de telemetria distribuída. Para associar a telemetria a uma operação lógica, cada item de telemetria tem um campo de contexto chamado operation_Id. Cada item de telemetria no rastreamento distribuído compartilha esse identificador. Portanto, mesmo se você perder a telemetria de uma única camada, ainda poderá associar a telemetria relatada por outros componentes.
Uma operação lógica distribuída normalmente consiste em um conjunto de operações menores que são solicitações processadas por um dos componentes.
Telemetria de solicitação define essas operações. Cada item de telemetria de solicitação tem o seu próprio id que o identifica exclusivamente e globalmente. E todos os itens de telemetria (como rastreamentos e exceções) associados à solicitação devem definir o operation_parentId ao valor da solicitação id.
A telemetria de dependência representa todas as operações de saída, como uma chamada HTTP para outro componente. Ele também define seu próprio id que é globalmente exclusivo. A telemetria de solicitação, iniciada por essa chamada de dependência, usa este id como operation_parentId.
Você pode criar uma exibição da operação lógica distribuída usando operation_Id, operation_parentIde request.id com dependency.id. Esses campos também definem a ordem causalidade das chamadas de telemetria.
Em um ambiente de microsserviços, os rastreamentos de componentes podem ir para diferentes itens de armazenamento. Cada componente pode ter sua própria cadeia de conexão no Application Insights. Para obter telemetria para a operação lógica, o Application Insights consulta dados de cada item de armazenamento.
Quando o número de itens de armazenamento é grande, você precisa de uma dica sobre onde procurar em seguida. O modelo de dados do Application Insights define dois campos para resolver esse problema: request.source e dependency.target. O primeiro campo identifica o componente que iniciou a solicitação de dependência. O segundo campo identifica qual componente retornou a resposta da chamada de dependência.
Para obter informações sobre como consultar dados de várias instâncias, consulte Consultar dados em espaços de trabalho, aplicativos e recursos do Log Analytics no Azure Monitor.
Example
Vamos examinar um exemplo. Um aplicativo chamado Preços de Ações mostra o preço de mercado atual de uma ação usando uma API externa chamada Ações. O aplicativo Preços de ações tem uma página chamada Ações que o navegador da Web do cliente abre usando GET /Home/Stock. O aplicativo consulta a API de Estoque usando a chamada HTTP GET /api/stock/value.
Você pode analisar a telemetria resultante executando uma consulta:
(requests | union dependencies | union pageViews)
| where operation_Id == "STYz"
| project timestamp, itemType, name, id, operation_ParentId, operation_Id
Nos resultados, todos os itens de telemetria compartilham a raiz operation_Id. Quando uma chamada do Ajax é feita a partir da página, uma nova ID exclusiva (qJSXU) é atribuída à telemetria de dependência e a ID do pageView é usada como operation_ParentId. Em seguida, a solicitação do servidor usa a ID do Ajax como operation_ParentId.
| tipoDeItem | nome | ID | operation_ParentId | operation_Id |
|---|---|---|---|---|
| pageView | Página de ações | STYz |
STYz |
|
| dependência | GET /Home/Stock | qJSXU |
STYz |
STYz |
| solicitação | GET Início/Estoque | KqKwlrSt9PA= |
qJSXU |
STYz |
| dependência | GET /api/stock/value | bBrf2L7mm2g= |
KqKwlrSt9PA= |
STYz |
Quando a chamada GET /api/stock/value é feita para um serviço externo, você precisa saber a identidade desse servidor para que possa definir o dependency.target campo adequadamente. Quando o serviço externo não dá suporte ao monitoramento, target é definido como o nome do host do serviço. Um exemplo é stock-prices-api.com. No entanto, se o serviço se identificar retornando um cabeçalho HTTP predefinido, target contém a identidade de serviço que permite ao Application Insights criar um rastreamento distribuído consultando a telemetria desse serviço.
Cabeçalhos de correlação usando o TraceContext W3C
O Application Insights está fazendo a transição para o Contexto de Rastreamento do W3C, que define:
-
traceparent: Carrega a ID de operação globalmente única e o identificador exclusivo da chamada. -
tracestate: contém o contexto de rastreamento específico do sistema.
A versão mais recente do SDK do Application Insights dá suporte ao protocolo Trace-Context, mas talvez seja necessário aceitar. (A compatibilidade retroativa com o protocolo de correlação anterior, suportado pelo SDK do Application Insights, é mantida.)
O protocolo HTTP de correlação, também chamado request-Id, está sendo preterido. Este protocolo define dois cabeçalhos:
-
Request-Id: Carrega a identificação global exclusiva da chamada. -
Correlation-Context: carrega a coleção de pares nome-valor das propriedades de rastreamento distribuído.
O Application Insights também define a extensão para o protocolo HTTP de correlação. Ele usa pares nome-valor de Request-Context para propagar a coleção de propriedades usadas pelo computador chamado ou chamador imediato. O SDK do Application Insights usa esse cabeçalho para definir os campos dependency.target e request.source.
Os modelos de dados do Contexto de Rastreamento do W3C e do Application Insights são mapeados da seguinte maneira:
| Application Insights | W3C TraceContext |
|---|---|
Id de Request e Dependency |
parent-id |
Operation_Id |
trace-id |
Operation_ParentId |
parent-id do intervalo pai desse intervalo. Esse campo deve estar vazio se for um intervalo raiz. |
Para obter mais informações, consulte o modelo de dados de telemetria do Application Insights.
Habilitar o suporte ao rastreamento distribuído do W3C
Esse recurso é habilitado por padrão para JavaScript e os cabeçalhos são incluídos automaticamente quando o domínio da página de hospedagem é o mesmo que o domínio para o qual as solicitações são enviadas (por exemplo, a página de hospedagem é example.com e as solicitações do Ajax são enviadas).example.com Para alterar o modo de rastreamento distribuído, use o distributedTracingMode campo de configuração. AI_AND_W3C é fornecido por padrão para compatibilidade retroativa com quaisquer serviços herdados instrumentalizados pelo Application Insights.
-
Adicione a seguinte configuração:
distributedTracingMode: DistributedTracingModes.W3C Configuração baseada no Script do Carregador do SDK do JavaScript (Web)
Adicione a seguinte configuração:
distributedTracingMode: 2 // DistributedTracingModes.W3C
Se as solicitações XMLHttpRequest ou Fetch Ajax forem enviadas para um host de domínio diferente, incluindo subdomínios, os cabeçalhos de correlação não serão incluídos por padrão. Para habilitar esse recurso, defina o enableCorsCorrelation campo de configuração como true. Se você definir enableCorsCorrelation como true, todas as solicitações XMLHttpRequest e Fetch Ajax incluirão os cabeçalhos de correlação. Como resultado, se o aplicativo no servidor que está sendo chamado não oferecer suporte ao traceparent cabeçalho, a solicitação poderá falhar, dependendo se o navegador/versão puder validar a solicitação com base em quais cabeçalhos o servidor aceita. Você pode usar o correlationHeaderExcludedDomains campo de configuração para excluir o domínio do servidor da injeção de cabeçalho de correlação entre componentes. Por exemplo, você pode usar correlationHeaderExcludedDomains: ['*.auth0.com'] para excluir cabeçalhos de correlação de solicitações enviadas ao provedor de identidade Auth0.
Importante
Para ver todas as configurações necessárias para habilitar a correlação, consulte a documentação de correlação do JavaScript.
Filtrar e pré-processar telemetria
Você pode escrever código para filtrar, modificar ou enriquecer sua telemetria antes que ela seja enviada do SDK. O processamento inclui dados enviados dos módulos de telemetria padrão, como coleta de solicitações HTTP e coleção de dependências.
A filtragem pode modificar ou descartar a telemetria antes de ser enviada do SDK implementando
ITelemetryProcessor. Por exemplo, você pode reduzir o volume de telemetria excluindo solicitações de robôs. Ao contrário da amostragem, você tem controle total sobre o que é enviado ou descartado, mas pode afetar as métricas que se baseiam em logs agregados. Dependendo de como você descarta itens, você também pode perder a capacidade de navegar entre itens relacionados.Adicione ou modifique propriedades de qualquer telemetria enviada de seu aplicativo implementando um
ITelemetryInitializer. Por exemplo, você pode adicionar valores calculados ou números de versão pelos quais filtrar os dados no portal.A amostragem reduz o volume de telemetria sem afetar suas estatísticas. Ele mantém juntos os pontos de dados relacionados para que você possa navegar entre eles quando diagnosticar um problema. No portal, as contagens totais são multiplicadas para compensar a amostragem.
Observação
A API do SDK é usada para enviar eventos e métricas personalizados.
Filtragem
Essa técnica fornece controle direto sobre o que está incluído ou excluído do fluxo de telemetria. A filtragem pode ser usada para remover itens de telemetria de serem enviados para o Application Insights. Você pode usar a filtragem com amostragem ou separadamente.
Para filtrar a telemetria, você escreve um processador de telemetria e registra-o com TelemetryConfiguration. Toda a telemetria passa pelo processador. Você pode optar por removê-lo do fluxo ou passá-lo para o próximo processador na cadeia. A telemetria dos módulos padrão, como o coletor de solicitações HTTP e o coletor de dependências, e a telemetria que você mesmo rastreou está incluída. Por exemplo, é possível filtrar a telemetria sobre solicitações de robôs ou sobre chamadas de dependência bem-sucedidas.
Aviso
Filtrar a telemetria enviada do SDK usando processadores pode distorcer as estatísticas que você vê no portal e dificultar o acompanhamento de itens relacionados.
Em vez disso, considere usar amostragem.
Aplicativos Web JavaScript
Você pode filtrar a telemetria de aplicativos Web JavaScript usando ITelemetryInitializer.
Crie uma função de callback do inicializador de telemetria. A função de retorno de chamada usa
ITelemetryItemcomo parâmetro, que é o evento que está sendo processado. Um resultadofalsenesse retorno de chamada faz com que o item de telemetria seja filtrado.var filteringFunction = (envelope) => { if (envelope.data.someField === 'tobefilteredout') { return false; } return true; };Adicione um callback de inicializador de telemetria:
appInsights.addTelemetryInitializer(filteringFunction);
ITelemetryProcessor e ITelemetryInitializer
Qual é a diferença entre processadores de telemetria e inicializadores de telemetria?
- Há algumas sobreposições no que você pode fazer com eles. Ambos podem ser usados para adicionar ou modificar propriedades de telemetria, embora seja recomendável que você use inicializadores para essa finalidade.
- Os inicializadores de telemetria sempre são executados antes dos processadores de telemetria.
- Os inicializadores de telemetria podem ser chamados mais de uma vez. Por convenção, normalmente não configuram propriedades que já estão configuradas.
- Os processadores de telemetria permitem substituir ou descartar completamente um item de telemetria.
- Todos os inicializadores de telemetria registrados são acionados para cada item de telemetria. Para processadores de telemetria, o SDK garante a chamada do primeiro processador de telemetria. Os processadores de telemetria anteriores é que decidem se o restante dos processadores será chamado ou não.
- Use inicializadores de telemetria para enriquecer a telemetria com mais propriedades ou substituir uma existente. Use um processador de telemetria para filtrar a telemetria.
Adicionar/modificar propriedades
Use inicializadores de telemetria para enriquecer a telemetria com informações adicionais ou para substituir as propriedades de telemetria definidas pelos módulos de telemetria padrão.
Por exemplo, o Application Insights para um pacote Web coleta telemetria sobre solicitações HTTP. Por padrão, ele sinaliza qualquer solicitação com um código >de resposta =400 como falha. Se, em vez disso, você quiser tratar 400 como um sucesso, poderá fornecer um inicializador de telemetria que define a propriedade de sucesso.
Se você fornecer um inicializador de telemetria, ele será chamado sempre que qualquer um dos métodos Track*() for chamado. Esse inicializador inclui métodos Track() chamados pelos módulos de telemetria padrão. Por convenção, esses módulos não definem nenhuma propriedade que já foi definida por um inicializador. Os inicializadores de telemetria são chamados antes de chamar processadores de telemetria, portanto, todos os enriquecimentos feitos pelos inicializadores são visíveis para os processadores.
Inicializadores de telemetria javaScript
Insira um inicializador de telemetria JavaScript, se necessário. Para obter mais informações sobre os inicializadores de telemetria para o SDK javaScript do Application Insights, consulte inicializadores de telemetria.
Insira um inicializador de telemetria adicionando a função de retorno de chamada onInit na configuração do Script de Carregador de SDK do 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>
Para obter um resumo das propriedades não personalizadas disponíveis no item de telemetria, confira Modelo de dados de exportação do Application Insights.
Você pode adicionar quantos inicializadores desejar. Eles são chamados na ordem em que são adicionados.
Adicionar um nome de função de nuvem e uma instância de função de nuvem
Use um inicializador de telemetria para definir as tags ai.cloud.role e ai.cloud.roleInstance. Essas marcas definem como o componente aparece no Mapa do Aplicativo no Azure Monitor.
appInsights.queue.push(() => {
appInsights.addTelemetryInitializer((envelope) => {
envelope.tags["ai.cloud.role"] = "your role name";
envelope.tags["ai.cloud.roleInstance"] = "your role instance";
});
});
Gerenciamento de cookie
A partir da versão 2.6.0, o SDK do JavaScript para o Application Insights do Azure fornece gerenciamento de cookies baseado em instância que pode ser desabilitado e reabilitado após a inicialização.
Se você desabilitou os cookies durante a inicialização usando as configurações disableCookiesUsage ou cookieCfg.enabled, poderá reativá-los usando a função setEnabled do objeto ICookieMgr.
O gerenciamento de cookies baseado em instância substitui as funções globais anteriores do CoreUtils de disableCookies(), setCookie(), getCookie(), e deleteCookie().
Para usufruir os aprimoramentos de balanceamento de árvore introduzidos na versão 2.6.0, é recomendável não usar mais as funções globais.
Configuração de cookie
ICookieMgrConfig é uma configuração de cookie para gerenciamento de cookie baseado em instância adicionado em 2.6.0. As opções fornecidas permitem habilitar ou desabilitar o uso de cookies pelo SDK. Você também pode definir domínios e caminhos de cookies personalizados e personalizar as funções para buscar, configurar e excluir cookies.
As opções de ICookieMgrConfig são definidas na tabela a seguir.
| Nome | Tipo | Padrão | Descrição |
|---|---|---|---|
| Habilitado | booleano | verdadeiro | A instância atual do SDK usa esse booleano para indicar se o uso de cookies está habilitado. Se falso, a instância do SDK inicializada por essa configuração não armazena ou lê nenhum dado dos cookies. |
| domínio | cadeia | nulo | Domínio de cookie personalizado. É útil se você deseja compartilhar cookies do Application Insights entre subdomínios. Se ele não for fornecido, usará o valor do valor raiz do cookieDomain. |
| caminho | cadeia | / | Especifica o caminho a ser usado para o cookie, se não for fornecido, usará qualquer valor do valor cookiePath raiz. |
| ignorarCookies | cadeia de caracteres[] | não definido | Especifique os nomes de cookie a serem ignorados, isso faz com que qualquer nome de cookie correspondente nunca seja lido ou gravado. Eles ainda podem ser explicitamente limpos ou excluídos. Não é necessário repetir o nome na configuração do blockedCookies. (desde v2.8.8) |
| blockedCookies | cadeia de caracteres[] | não definido | Especifique os nomes de cookie para nunca gravar. Isso impede a criação ou atualização de qualquer nome de cookie, mas ainda podem ser lidos, a menos que também sejam incluídos no ignoreCookies. Eles ainda podem ser limpos ou excluídos explicitamente. Se não for fornecido, usará como padrão a mesma lista no ignoreCookies. (Desde v2.8.8) |
| getCookie | (name: string) => string |
nulo | Função para buscar do valor do cookie nomeado, se não fornecido, usa a análise/cache cookie interno. |
| setCookie | (name: string, value: string) => void |
nulo | Função para configurar o cookie nomeado com o valor especificado; somente é chamado ao adicionar ou atualizar um cookie. |
| delCookie | (name: string, value: string) => void |
nulo | Função para excluir o cookie nomeado com o valor especificado, separado do setCookie para evitar a necessidade de analisar o valor para determinar se o cookie está sendo adicionado ou removido. Se não for fornecido, usará a análise/cache de cookies internos. |
Mapa de origem
O suporte ao sourcemap ajuda a depurar o código JavaScript minificado com a capacidade de desminificação da pilha de chamadas minificada de sua telemetria de exceção.
- Compatível com todas as integrações atuais no painel Detalhes da Exceção
- Compatível com todos os SDKs do JavaScript atuais e futuros, incluindo Node.JS, sem a necessidade de atualização do SDK
Vincular à conta de armazenamento de blobs
O Application Insights oferece suporte ao carregamento de source maps para o seu próprio contêiner de blobs da conta de armazenamento. Os source maps podem ser usados para desminificar pilhas de chamadas encontradas na página de Detalhes de transações de ponta a ponta. Você também pode usar mapas de origem para desminificar qualquer exceção enviada pelo SDK do JavaScript ou pelo SDK doNode.js.
Criar uma nova conta de armazenamento e um contêiner de blobs
Se você já tiver uma conta de armazenamento ou um contêiner de blobs, poderá ignorar esta etapa.
Crie um contêiner de blobs em sua conta de armazenamento. Defina oNível de acesso público como Privadopara garantir que seus source maps não estejam acessíveis publicamente.
Enviar source maps por push para o contêiner de blobs
Você deve integrar o pipeline de implantação contínua à sua conta de armazenamento configurando-a para carregar automaticamente os source maps para o contêiner de blob configurado.
Você pode carregar source maps em seu contêiner de Armazenamento de Blobs do Azure com a mesma estrutura de pasta com a qual foram compilados e implantados. Um caso de uso comum é prefixar uma pasta de implantação com sua versão, por exemplo, 1.2.3/static/js/main.js. Quando você desminifica por meio de um contêiner de blob do Azure chamado sourcemaps, o pipeline tenta buscar um mapa de origem localizado em sourcemaps/1.2.3/static/js/main.js.map.
Carregar mapas de origem por meio do Azure Pipelines (recomendado)
Se você estiver usando o Azure Pipelines para compilar e implantar o aplicativo continuamente, adicione uma tarefa da cópia o arquivo do Azure ao seu pipeline para carregar automaticamente os source maps.
Configurar o recurso do Application Insights com uma conta de armazenamento de source maps
Você tem duas opções para configurar o recurso do Application Insights com uma conta de armazenamento de source map.
Guia de detalhes da Transação de ponta a ponta
Na guia Detalhes da transação de ponta a ponta, selecione Desminificar. Configure o recurso se ele não estiver configurado.
- No Portal do Azure, você pode exibir os detalhes de uma exceção que foi desminificada.
- Selecione Desminificar.
- Se o recurso não estiver configurado, configure-o.
Guia Propriedades
Para configurar ou alterar a conta de armazenamento ou o contêiner de blob vinculado ao recurso do Application Insights:
Navegue até a guia de Propriedades do recurso do Application Insights:
Selecione Alterar contêiner de blobs do source map.
Selecione um contêiner de blobs diferente como o contêiner dos source maps.
Escolha Aplicar.
Exibir a pilha de chamadas não minimizada
Para exibir a pilha de chamadas não minificada, selecione um item de telemetria de exceção no portal do Azure, localize os source maps que correspondem à pilha de chamadas e arraste e solte os source maps na pilha de chamadas no portal do Azure. O source map deve ter o mesmo nome do arquivo de origem de um registro de ativação, mas com uma extensão map.
Caso tenha problemas que envolvem o suporte ao source map para aplicativos JavaScript, confira como Solucionar problemas de suporte a source map para aplicativos JavaScript.
Balanceamento de árvore
O balanço da árvore elimina o código não utilizado do pacote JavaScript final.
Para aproveitar o balanceamento de árvore, importe apenas os componentes necessários do SDK para seu código. Ao fazer isso, o código não utilizado não será incluído no pacote final, reduzindo seu tamanho e melhorando o desempenho.
Melhorias e recomendações de balanceamento de árvore
Na versão 2.6.0, descontinuamos e removemos o uso interno dessas classes auxiliares estáticas para melhorar o suporte a algoritmos de balanceamento de árvore. Ela permite que os pacotes npm descartem com segurança o código não utilizado.
CoreUtilsEventHelperUtilUrlHelperDateTimeUtilsConnectionStringParser
As funções agora são exportadas como raízes de nível superior dos módulos, tornando mais fácil refatorar seu código para melhor balanceamento de árvore.
As classes estáticas foram alteradas para objetos const que referenciam as novas funções exportadas, e mudanças futuras estão planejadas para refatorar ainda mais as referências.
Funções e substituições preteridas de balanceamento de árvore
Esta seção só se aplica a você se estiver usando as funções preteridas e quiser otimizar o tamanho do pacote. É recomendável usar as funções de substituição para reduzir o tamanho e dar suporte a todas as versões do Internet Explorer.
| Existente | Substituição |
|---|---|
| CoreUtils | @microsoft/applicationinsights-core-js |
| CoreUtils._canUseCookies | Nenhum. Não use, pois faz com que toda a referência do CoreUtils seja incluída no seu código final. Refatore sua manipulação de cookie para usar o appInsights.getCookieMgr().setEnabled(true/false) para definir o valor e appInsights.getCookieMgr().isEnabled() verificar o valor. |
| CoreUtils.isTypeof | isTypeof |
| CoreUtils.isUndefined | éIndefinido |
| CoreUtils.isNullOrUndefined | éNuloOuIndefinido |
| CoreUtils.hasOwnProperty | hasOwnProperty |
| CoreUtils.isFunction | IsFunction |
| CoreUtils.isObject | isObject |
| CoreUtils.isDate | isDate |
| CoreUtils.isArray | isArray |
| CoreUtils.isError | isError |
| CoreUtils.isString | isString |
| CoreUtils.isNumber | isNumber |
| CoreUtils.isBoolean | isBoolean |
| CoreUtils.toISOString | toISOString ou 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 | adicionarManipuladorDeEventos |
| CoreUtils.dateNow | dateNow |
| CoreUtils.isIE | isIE |
| CoreUtils.disableCookies | disableCookies A referência a um deles faz com que CoreUtils seja referenciado para compatibilidade com versões anteriores. Refatore sua manipulação de cookie para usar o 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 |
| Util | @microsoft/applicationinsights-common-js |
| Util.NotSpecified | strNotSpecified |
| Util.createDomEvent | createDomEvent |
| Util.disableStorage | utlDisableStorage |
| 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 A referência a um deles faz com que CoreUtils seja referenciado para compatibilidade com versões anteriores. Refatore sua manipulação de cookie para usar o appInsights.getCookieMgr().setEnabled(false) |
| Util.canUseCookies | canUseCookies A referência a um deles faz com que CoreUtils seja referenciado para compatibilidade com versões anteriores. Refatore sua manipulação de cookie para usar o appInsights.getCookieMgr().isEnabled() |
| Util.disallowsSameSiteNone | uaDisallowsSameSiteNone |
| Util.setCookie | coreSetCookie A referência faz com que CoreUtils seja referenciado para compatibilidade com versões anteriores. Refatore sua manipulação de cookie para usar o appInsights.getCookieMgr().set(name: string, value: string) |
| Util.stringToBoolOrDefault | stringToBoolOrDefault |
| Util.getCookie | coreGetCookie A referência faz com que CoreUtils seja referenciado para compatibilidade com versões anteriores. Refatore sua manipulação de cookie para usar o appInsights.getCookieMgr().get(name: string) |
| Util.deleteCookie | coreDeleteCookie A referência faz com que CoreUtils seja referenciado para compatibilidade com versões anteriores. Refatore sua manipulação de cookie para usar o appInsights.getCookieMgr().del(name: string, path?: string) |
| Util.trim | strTrim |
| Util.newId | newId |
| Util.random32 | --- Sem substituição, refatore seu código para usar o núcleo random32(true) |
| Util.generateW3CId | generateW3CId |
| Util.isArray | isArray |
| Util.isError | isError |
| Util.isDate | isDate |
| Util.toISOStringForIE8 | toISOString |
| Util.getIEVersion | getIEVersion |
| Util.msToTimeSpan | msToTimeSpan |
| Util.isCrossOriginError | isCrossOriginError |
| Util.dump | dumpObj |
| Util.getExceptionName | obterNomeDaExceção |
| 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 |
Notificações de serviço
As notificações de serviço são um recurso integrado ao SDK para fornecer recomendações acionáveis para ajudar a garantir que seus fluxos de telemetria sejam ininterruptos para o Application Insights. Você pode ver as notificações como uma mensagem de exceção no Application Insights. Garantimos que as notificações sejam relevantes para você com base nas suas configurações do SDK e ajustamos o detalhamento com base na urgência da recomendação. É recomendável deixar as notificações de serviço ativadas, mas você pode recusar por meio da configuração featureOptIn.
Atualmente, nenhuma notificação ativa está sendo enviada.
As notificações de serviço são gerenciadas pelo SDK do JavaScript, que pesquisa regularmente um arquivo JSON público para controlar e atualizar essas notificações. Para desabilitar a sondagem feita pelo SDK do JavaScript, desabilite o modo featureOptIn.
Solução de problemas
Confira o artigo de solução de problemas dedicado.
Próximas etapas
- Para examinar as perguntas frequentes, consulte FAQ da configuração do SDK do JavaScript.
- Acompanhar uso
- Tarefa Adicionar cópias de arquivos do Azure
- Referência de tipos de dados do Azure Monitor e código SDK para o SDK do JavaScript.