Compartilhar via


Configuração de SDK do JavaScript Application Insights do Microsoft Azure Monitor

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.

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.

  1. Crie uma função de callback do inicializador de telemetria. A função de retorno de chamada usa ITelemetryItem como parâmetro, que é o evento que está sendo processado. Um resultado false nesse retorno de chamada faz com que o item de telemetria seja filtrado.

    var filteringFunction = (envelope) => {
      if (envelope.data.someField === 'tobefilteredout') {
        return false;
      }
      return true;
    };
    
  2. 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";
});
});

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.

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

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.

Captura de tela que mostra a seleção da opção para desminificar uma pilha de chamadas vinculando-se a uma conta de armazenamento.

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.

  1. Criar uma nova conta de Armazenamento.

  2. 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.

    Captura de tela que mostra a definição do nível de acesso do contêiner como Privado.

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.

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.

Captura de tela que mostra a adição de uma tarefa de cópia de arquivo do Azure ao seu pipeline para carregar os source maps para o Armazenamento de Blobs do Azure.

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.

  1. No Portal do Azure, você pode exibir os detalhes de uma exceção que foi desminificada.
  2. Selecione Desminificar.
  3. 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:

  1. Navegue até a guia de Propriedades do recurso do Application Insights:

  2. Selecione Alterar contêiner de blobs do source map.

  3. Selecione um contêiner de blobs diferente como o contêiner dos source maps.

  4. Escolha Aplicar.

    Captura de tela que mostra a reconfiguração do contêiner de blob do Azure selecionado no painel Propriedades.

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.

Animação demonstrando o recurso de desminificar.

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.

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

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