Configuración del SDK de JavaScript para Application Insights de Microsoft Azure Monitor

La configuración del SDK de JavaScript para Aplicación de Azure Insights proporciona características avanzadas para el seguimiento, la supervisión y la depuración de las aplicaciones web.

Configuración del SDK

Estos campos de configuración son opcionales y adoptan como valor predeterminado false a menos que se indique lo contrario. En las secciones siguientes se agrupan los campos por propósito.

Para obtener instrucciones sobre cómo agregar la configuración del SDK, consulte Agregar configuración del SDK.

Cookies y almacenamiento de sesión

Campos que controlan el uso, la nomenclatura y los nombres de cookies o almacenamiento local usados para las sesiones.

Nombre Tipo Valor predeterminado
cookieCfg

De forma predeterminada, el uso de cookies está habilitado; consulte la configuración de ICookieCfgConfig para ver los valores predeterminados completos.
ICookieCfgConfig
[Opcional]
(Desde 2.6.0)
no definido
cookieDomain

Dominio de cookies personalizado. Resulta útil si desea compartir cookies de Application Insights entre subdominios.
(Desde v2.6.0) Si se define cookieCfg.domain, tiene prioridad sobre este valor.
alias para cookieCfg.domain
[Opcional]
nulo
cookiePath

Ruta de cookies personalizada. Resulta útil si quiere compartir cookies de Application Insights detrás de una puerta de enlace de aplicación.
Si se define cookieCfg.path, tiene prioridad.
alias para cookieCfg.path
[Opcional]
(Desde 2.6.0)
nulo
desactivarUsoDeCookies

El valor predeterminado es false. Valor booleano que indica si deshabilitar el uso de cookies por parte del SDK. Si es true, el SDK no almacena ni lee ningún dato de las cookies.
(Desde v2.6.0) Si se define cookieCfg.enabled, tiene prioridad. El uso de cookies se puede volver a habilitar después de la inicialización mediante core.getCookieMgr().setEnabled(true).
alias para cookieCfg.enabled
[Opcional]
falso
Prefijo de nombre

Valor opcional que se usa como postfijo de nombre para el nombre de cookies de sesión y localStorage.
cuerda / cadena no definido
sessionCookiePostfix

Valor opcional que se usa como postfijo de nombre para el nombre de la cookie de sesión. Si el valor es indefinido, namePrefix se usa como sufijo para el nombre de la cookie de sesión.
cuerda / cadena no definido
userCookiePostfix

Valor opcional que se usa como postfijo de nombre para el nombre de cookie de usuario. Si el valor es undefined, no se agrega ningún postfijo en el nombre de cookies de usuario.
cuerda / cadena no definido

Seguimiento de Ajax y Fetch

Campos que controlan la recopilación automática de solicitudes de Ajax y Fetch, encabezados de solicitud y respuesta, y tiempos de rendimiento del explorador.

Nombre Tipo Valor predeterminado
agregarContextoDeSolicitud

Proporcione una manera de enriquecer los registros de dependencias con contexto al principio de una llamada API. El valor predeterminado es undefined. Debe comprobar si existe xhr si configura contexto relacionado con xhr. Debe comprobar si fetch request y fetch response existen al configurar el contexto relacionado con fetch. De lo contrario, es posible que no obtenga los datos que necesita.
(es-ES: contextoDeSolicitud: IContextoDeSolicitud) => {[clave: cadena]: cualquier} no definido
ajaxPerfLookupDelay

Su valor predeterminado es 25 ms. Cantidad de tiempo que hay que esperar antes de volver a intentar encontrar los intervalos de windows.performance para una solicitud AJAX. El tiempo se expresa en milisegundos y se pasa directamente a setTimeout().
numérico 25
customHeaders

La capacidad del usuario para proporcionar encabezados adicionales al usar un punto de conexión personalizado. No se añaden customHeaders en el momento de apagado del navegador cuando se utiliza el emisor beacon. Además, no se admite la incorporación de encabezados personalizados en IE9 o versiones anteriores.
[{header: string, value: string}] no definido
desactivarAjaxTracking

Si es verdadero, las llamadas Ajax no se recopilan automáticamente. El valor predeterminado es False.
boolean falso
disableFetchTracking

El valor predeterminado de disableFetchTracking es false, lo que significa que la característica está habilitada. Sin embargo, en versiones anteriores a la 2.8.10, estaba deshabilitada de manera predeterminada. Cuando se establece en true, las solicitudes Fetch no se recopilan automáticamente. El valor predeterminado ha cambiado de true a false en la versión 2.8.0.
boolean falso
disableXhr

No use XMLHttpRequest o XDomainRequest (para Internet Explorer < versión 9) de manera predeterminada; intente usar fetch() o sendBeacon en su lugar. Si no hay ningún otro transporte disponible, usa XMLHttpRequest.
boolean falso
enableAjaxErrorStatusText

El valor predeterminado es false. Si es true, incluya el valor booleano de texto de datos de error de respuesta en el evento de dependencia en solicitudes AJAX erróneas.
boolean falso
enableAjaxPerfTracking

El valor predeterminado es false. Marca para habilitar la búsqueda y la inclusión de intervalos de window.performance de explorador adicionales en las métricas notificadas de AJAX (XHR y Fetch).
boolean falso
enableRequestHeaderTracking

Si es true, se realiza un seguimiento de los encabezados de solicitud AJAX y Fetch. El valor predeterminado es false. Si ignoreHeaders no se configura, no se registran los encabezados Authorization y X-API-Key.
boolean falso
enableResponseHeaderTracking

Si es cierto, se realiza un seguimiento de los encabezados de respuesta de las solicitudes AJAX y Fetch; el valor predeterminado es falso. Si ignoreHeaders no se configura, no se registra el encabezado WWW-Authenticate.
boolean falso
excludeRequestFromAutoTrackingPatterns

Proporcione una manera de excluir una ruta específica del seguimiento automático de la solicitud XMLHttpRequest o Fetch. Si se define, en el caso de una solicitud AJAX o Fetch en que la dirección URL de la solicitud coincide con los patrones de regex, el seguimiento automático está desactivado. El valor predeterminado es undefined.
string[] | RegExp[] no definido
ignorar encabezados

Los encabezados de solicitud y respuesta de AJAX y Fetch no se incluirán en los datos de registro. Para invalidar o descartar el valor predeterminado, agregue una matriz con todos los encabezados que se van a excluir o una matriz vacía a la configuración.
string[] ["Autorización", "X-API-Key", "WWW-Authenticate"]
isBeaconApiDisabled

Si es falso, el SDK envía toda la telemetría mediante la API de Beacon.
boolean cierto
maxAjaxCallsPerView

El valor predeterminado es 500: controla cuántas llamadas AJAX se supervisan por vista de página. Establézcalo en -1 para supervisar todas las llamadas AJAX (ilimitadas) en la página.
numérico 500
maxAjaxPerfLookupAttempts

El valor predeterminado es 3. El número máximo de veces que se deben buscar los intervalos de window.performance (si están disponibles) es obligatorio. No todos los exploradores rellenan window.performance antes de notificar el final de la solicitud XHR. Para las solicitudes Fetch, se agrega una vez completado.
numérico 3
onunloadDisableBeacon

El valor predeterminado es false. Si la pestaña está cerrada, el SDK envía la telemetría restante mediante la API de Beacon.
boolean falso
onunloadDisableFetch

Si se admite el método fetch keepalive, no lo use para enviar eventos durante la descarga, es posible que se revierta a fetch() sin keepalive.
boolean falso

Seguimiento distribuido y correlación

Campos que controlan el modo de seguimiento distribuido y la inserción de encabezados de correlación entre los límites del servidor y CORS.

Nombre Tipo Valor predeterminado
ID de la aplicación

AppId se utiliza para la correlación entre las dependencias AJAX que se producen en el lado cliente con las solicitudes del lado servidor. Cuando la API de Beacon está habilitada, no se puede usar automáticamente, pero se puede establecer manualmente en la configuración. El valor predeterminado es null.
cuerda / cadena nulo
correlationHeaderDomains

Habilite encabezados de correlación para dominios específicos.
string[] no definido
correlationHeaderExcludedDomains

Deshabilite encabezados de correlación para dominios específicos.
string[] no definido
correlationHeaderExcludePatterns

Deshabilitar encabezados de correlación mediante expresiones regulares
regex[] no definido
disableCorrelationHeaders

Si es false, el SDK agrega dos encabezados ("Request-Id" y "Request-Context") a todas las solicitudes de dependencia para correlacionarlas con las solicitudes correspondientes en el lado servidor. El valor predeterminado es False.
boolean falso
modo de trazabilidad distribuida

Establece el modo de seguimiento distribuido. Si se establece el modo AI_AND_W3C o el modo W3C, se generan los encabezados de contexto de seguimiento W3C (traceparent/tracestate) y se incluyen en todas las solicitudes salientes. AI_AND_W3C se proporciona para garantizar la retrocompatibilidad con cualquier servicio heredado instrumentado por Application Insights.
numérico o DistributedTracingModes DistributedTracing Modes.AI_AND_W3C
enableCorsCorrelation

Si es true, el SDK agrega dos encabezados ("Request-Id" y "Request-Context") a todas las solicitudes CORS para correlacionar dependencias AJAX salientes con las solicitudes correspondientes en el lado servidor. El valor predeterminado es false
boolean falso

Vistas de página y seguimiento de rutas

Campos que controlan el seguimiento de la visualización de página y los cambios de ruta de la aplicación de una sola página.

Nombre Tipo Valor predeterminado
autoTrackPageVisitTime

Si es verdadero, en una visualización de página, se realiza el seguimiento del tiempo de visualización de la página instrumentada anterior, que se envía como telemetría, y se inicia un nuevo temporizador para la visualización de página actual. Se envía como una métrica personalizada llamada PageVisitTime en milliseconds y se calcula por medio de la función de fecha now() (si está disponible) y se revierte a (new Date()).getTime() si now() no está disponible (IE8 o una versión inferior). El valor predeterminado es False.
boolean falso
habilitarSeguimientoAutomáticoDeRutas

Realice un seguimiento automático de los cambios de ruta en aplicaciones de página única (SPA). Si es true, cada cambio de ruta envía una nueva vista de página a Application Insights. Los cambios de ruta hash (example.com/foo#bar) también se registran como nuevas vistas de página.
Nota: Si habilita este campo, no habilite el objeto history para la configuración del enrutador de React porque se producirán varios eventos de visualización de página.
boolean falso
isBrowserLinkTrackingEnabled

El valor predeterminado es False. Si es verdadero, el SDK realiza un seguimiento de todas las solicitudes de Browser Link.
boolean falso
overridePageViewDuration

Si es true, el comportamiento predeterminado de trackPageView se cambia para registrar el final del intervalo de duración de la vista de página cuando se llama a trackPageView. Si es falso y no se proporciona ninguna duración personalizada a trackPageView, el rendimiento de la vista de página se calcula mediante la API de control de tiempos de navegación. El valor predeterminado es False.
boolean falso

Seguimiento de excepciones

Campos que controlan la recopilación automática de excepciones y la notificación de rechazos de promesas no gestionadas.

Nombre Tipo Valor predeterminado
disableExceptionTracking

Si es true, el SDK no recopila automáticamente excepciones. El valor predeterminado es False.
boolean falso
enableUnhandledPromiseRejectionTracking

Si es verdadero, el SDK recopila automáticamente los rechazos de promesas no controlados como errores de JavaScript. Cuando disableExceptionTracking es verdadero (no se realiza el seguimiento de las excepciones), el valor de configuración se ignora y los rechazos de promesas no gestionados no se notifican.
boolean falso

Muestreo, procesamiento por lotes y almacenamiento

Campos que controlan la velocidad de muestreo, el comportamiento del procesamiento por lotes, el reintento y cómo se almacena en búfer la telemetría sin enviar.

Nombre Tipo Valor predeterminado
disableFlushOnBeforeUnload

El valor predeterminado es false. Si es verdadero, no se llama al método de vaciado cuando se activa el evento onBeforeUnload.
boolean falso
disableTelemetry

Si es true, el SDK no recopila ni envía telemetría. El valor predeterminado es False.
boolean falso
HabilitarBufferDeAlmacenamientoDeSesión

El valor predeterminado es true. Si es verdadero, el búfer con toda la telemetría no enviada se guarda en el almacenamiento de sesión. El búfer se restaura al cargar la página.
boolean cierto
eventsLimitInMem

Número de eventos que se pueden mantener en la memoria antes de que el SDK empiece a anular eventos cuando no se use el almacenamiento de sesión (valor predeterminado).
number 10.000
isRetryDisabled

El valor predeterminado es false. Si es false, vuelva a intentarlo en 206 (correcto parcial), 408 (tiempo de espera), 429 (demasiadas solicitudes), 500 (error interno del servidor), 503 (servicio no disponible) y 0 (sin conexión, solo si se detecta).
boolean falso
¿Está desactivado el uso del almacenamiento?

Si es true, el SDK no almacena ni lee datos del almacenamiento local o de la sesión. El valor predeterminado es False.
boolean falso
maxBatchInterval

Cuánto tiempo se tarda en procesar por lotes la telemetría antes de enviar (milisegundos).
numérico 15000
maxBatchSizeInBytes

Tamaño máximo del lote de telemetría. Si un lote supera este límite, se envía inmediatamente y se inicia un nuevo lote.
numérico 10.000
porcentaje de muestreo

Porcentaje de eventos enviados. El valor predeterminado es 100, lo que significa que se envían todos los eventos. Establézcalo si desea conservar el límite de datos para aplicaciones a gran escala.
numérico 100

Registro y depuración

Campos que controlan el registro interno del SDK, las excepciones de depuración y el sondeo de diagnóstico.

Nombre Tipo Valor predeterminado
diagnosticLogInterval

(interno) Intervalo de sondeo (en milisegundos) para la cola de registro interno
numérico 10.000
desactivarAnálisisDePérdidaDeDatos

Si es false, se comprueban los búferes del emisor de telemetría interna al inicio para detectar si hay elementos que todavía no se hayan enviado.
boolean cierto
disableIkeyDeprecationMessage

Deshabilite el mensaje de error de desuso de la clave de instrumentación. Si es true, NO se envían mensajes de error.
boolean cierto
enableDebug

Si es true, los datos de depuración internos se devuelven como una excepción en lugar de registrarse, independientemente de la configuración de registro del SDK. El valor predeterminado es False.
Nota: Si se habilita este valor de configuración, se descarta la telemetría siempre que se produzca un error interno. Puede ser útil para identificar rápidamente problemas con la configuración o el uso del SDK. Si no desea perder datos de telemetría durante la depuración, considere la posibilidad de usar loggingLevelConsole o loggingLevelTelemetry en lugar de enableDebug.
boolean falso
loggingLevelConsole

Registra errores internos de Application Insights en la consola.
0: desactivado
1: solo errores críticos
2: Todo (errores y advertencias)
numérico 0
loggingLevelTelemetry

Envía errores internos de Application Insights como telemetría.
0: desactivado
1: solo errores críticos
2: Todo (errores y advertencias)
numérico 1

Administrador de rendimiento

Campos que controlan la colección de eventos de rendimiento internos (perfEvents) dentro del SDK.

Nombre Tipo Valor predeterminado
createPerfMgr

Función de devolución de llamada a la que se llama para crear una instancia de IPerfManager cuando sea necesario y enablePerfMgr está habilitada, le permite invalidar la creación predeterminada de un PerfManager() sin necesidad de setPerfMgr() después de la inicialización.
(core: IAppInsightsCore, notificationManager: INotificationManager) => IPerfManager no definido
enablePerfMgr

Si esta configuración está habilitada (true), se crean perfEvents locales para el código que ha sido instrumentado para emitir perfEvents (a través de la herramienta doPerf()). Se puede usar para identificar problemas de rendimiento en el SDK en función de su uso o de manera opcional dentro de su propio código instrumentado.
boolean falso
perfEvtsSendAll

Cuando enablePerfMgr está habilitado y IPerfManager activa INotificationManager.perfEvent(), esta marca determina si se desencadena un evento (y si se envía a todos los agentes de escucha) para todos los eventos (true) o solo para los eventos "parent" (<el valor predeterminado es false>).
Un elemento IPerfEvent principal es un evento en el que no se está ejecutando ningún otro elemento IPerfEvent en el momento de creación del evento, y su propiedad parent no es NULL o no está definida. Desde v2.5.7
boolean falso

Identificadores y duración de la sesión

Campos que controlan los identificadores de sesión, los identificadores de usuario y el tiempo de expiración de la sesión.

Nombre Tipo Valor predeterminado
ID de cuenta

Un identificador de cuenta opcional, si su aplicación agrupa a los usuarios en cuentas. Sin espacios, comas, puntos y comas, signos igual o barras verticales
cuerda / cadena nulo
idLength

Identifica la longitud predeterminada que se usa para generar nuevos identificadores aleatorios de sesión y de usuario. El valor predeterminado es 22, el valor predeterminado anterior era 5 (v2.5.8 o menos), si necesita mantener la longitud máxima anterior establecida en 5.
numérico 22
sessionExpirationMs

Se registra una sesión si continúa durante este período de tiempo en milisegundos. El valor predeterminado es 24 horas.
numérico 86400000
sessionRenewalMs

Se registra una sesión si el usuario está inactivo durante este período de tiempo en milisegundos. El valor predeterminado es 30 minutos.
numérico 1800000

Otras opciones de configuración

Activación opcional de funciones, limitación de velocidad, validación de la clave de instrumentación, conversión de telemetría y metadatos de extensión del SDK.

Nombre Tipo Valor predeterminado
convertUndefined

Proporcionar al usuario una opción para convertir un campo sin definir en un valor definido por el usuario.
any no definido
disableInstrumentationKeyValidation

Si es verdadero, se omite la verificación de la clave de instrumentación. El valor predeterminado es False.
boolean falso
featureOptIn

Establece los detalles de participación en características.

Este campo de configuración solo está disponible en la versión 3.0.3 y versiones posteriores.
IFeatureOptIn no definido
sdkExtension

Establece el nombre de la extensión del SDK. Solo puede contener caracteres alfabéticos. El nombre de la extensión se agrega como prefijo a la etiqueta "ai.internal.sdkVersion" (por ejemplo, "ext_javascript:2.0.0"). El valor predeterminado es null.
cuerda / cadena nulo
throttleMgrCfg

Establece la configuración de mgr de limitación por clave.

Este campo de configuración solo está disponible en la versión 3.0.3 y versiones posteriores.
{[key: number]: IThrottleMgrConfig} no definido

Seguimiento distribuido

Las arquitecturas modernas de nube y microservicios han habilitado servicios sencillos e independientes que reducen los costos al tiempo que aumentan la disponibilidad y el rendimiento. Sin embargo, ha hecho que los sistemas generales sean más difíciles de razonar sobre y depurar. El seguimiento distribuido resuelve este problema proporcionando una herramienta de perfilado de rendimiento que funciona como stack de llamadas para arquitecturas de nube y microservicios.

Azure Monitor proporciona dos experiencias para consumir datos de seguimiento distribuidos: la vista de diagnóstico de transacciones para una sola transacción o solicitud y la vista de mapa de la aplicación para mostrar cómo interactúan los sistemas.

Application Insights puede supervisar cada componente por separado y detectar qué componente es responsable de errores o degradación del rendimiento mediante la correlación de telemetría distribuida. En este artículo se explica el modelo de datos, las técnicas de propagación de contexto, los protocolos y la implementación de tácticas de correlación en diferentes lenguajes y plataformas que usa Application Insights.

Habilitación del seguimiento distribuido a través de Application Insights mediante la implementación automática o los SDK

Se admite la instrumentación de OpenTelemetry en Azure Monitor y el SDK de JavaScript, que emiten datos de seguimiento distribuidos para entornos de desarrollo y bibliotecas habituales.

Con la instrumentación admitida configurada, la información de seguimiento se recopila automáticamente para marcos, bibliotecas y tecnologías comunes.

Se puede realizar un seguimiento manual de cualquier tecnología mediante la creación de intervalos personalizados.

Modelo de datos para la correlación de telemetría

Application Insights define un modelo de datos para la correlación de telemetría distribuida. Para asociar la telemetría a una operación lógica, cada elemento de telemetría tiene un campo de contexto denominado operation_Id. Cada elemento de telemetría del seguimiento distribuido comparte este identificador. Por lo tanto, incluso si pierde la telemetría de una sola capa, todavía puede asociar la telemetría notificada por otros componentes.

Una operación lógica distribuida normalmente consta de un conjunto de operaciones más pequeñas que son solicitudes procesadas por uno de los componentes. La telemetría de solicitud define estas operaciones. Cada elemento de telemetría de solicitud tiene su propio id que lo identifica de forma única y global. Y todos los elementos de telemetría (como seguimientos y excepciones) asociados a la solicitud deben establecer en operation_parentId el valor de la solicitud id.

La telemetría de dependencias representa todas las operaciones salientes, como una llamada HTTP a otro componente. También define su propia id que es única globalmente. La telemetría de solicitudes, que se inicia mediante esta llamada de dependencia, utiliza este id como su operation_parentId.

Puede crear una vista de la operación lógica distribuida mediante operation_Id, operation_parentIdy request.id con dependency.id. Estos campos también definen el orden de causalidad de las llamadas de telemetría.

En un entorno de microservicios, los seguimientos de los componentes pueden ir a diferentes elementos de almacenamiento. Cada componente puede tener su propia cadena de conexión en Application Insights. Para obtener telemetría para la operación lógica, Application Insights consulta los datos de cada elemento de almacenamiento.

Cuando el número de elementos de almacenamiento es grande, necesita una sugerencia sobre dónde buscar a continuación. El modelo de datos de Application Insights define dos campos para resolver este problema: request.source y dependency.target. El primer campo identifica el componente que inició la solicitud de dependencia. El segundo campo identifica qué componente devolvió la respuesta de la llamada de dependencia.

Para obtener información sobre la consulta desde varias instancias dispares, consulte Consulta de datos en áreas de trabajo, aplicaciones y recursos de Log Analytics en Azure Monitor.

Example

Veamos un ejemplo. Una aplicación denominada Precios de acciones muestra el precio actual del mercado de una acción mediante una API externa denominada Stock. La aplicación Precios de acciones tiene una página denominada Página stock que el explorador web cliente abre mediante GET /Home/Stock. La aplicación consulta la API stock mediante la llamada GET /api/stock/valueHTTP.

Puede analizar la telemetría resultante mediante la ejecución de una consulta:

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

En los resultados, todos los elementos de telemetría comparten la raíz operation_Id. Cuando se realiza una llamada Ajax desde la página, se asigna un nuevo identificador único (qJSXU) a la telemetría de dependencia y el identificador de pageView se usa como operation_ParentId. A continuación, la solicitud de servidor usa el identificador de Ajax como operation_ParentId.

tipo de artículo nombre identificación operation_ParentId operation_Id
pageView Página de stock STYz STYz
dependencia GET /Home/Inventario qJSXU STYz STYz
request GET Inicio/Inventario KqKwlrSt9PA= qJSXU STYz
dependencia GET /api/stock/value bBrf2L7mm2g= KqKwlrSt9PA= STYz

Cuando se realiza la llamada GET /api/stock/value a un servicio externo, debe conocer la identidad de ese servidor para que pueda establecer el dependency.target campo de forma adecuada. Cuando el servicio externo no admite la supervisión, target se establece en el nombre de host del servicio. Un ejemplo es stock-prices-api.com. Pero si el servicio se identifica a sí mismo devolviendo un encabezado HTTP predefinido, target contiene la identidad de servicio que permite a Application Insights crear un seguimiento distribuido consultando telemetría desde ese servicio.

Encabezados de correlación mediante TraceContext de W3C

Application Insights realiza la transición al contexto de seguimiento de W3C, que define:

  • traceparent: Contiene el identificador de operación único a nivel global y el identificador único de la llamada.
  • tracestate: incluye el contexto de trazabilidad específico del sistema.

La instrumentación admitida usa el protocolo de Contexto de Trazabilidad de W3C para el rastreo distribuido.

El protocolo HTTP de correlación, también denominado Request-Id, está en desuso. Este protocolo define dos encabezados:

  • Request-Id: lleva el identificador único global de la llamada.
  • Correlation-Context: lleva la colección de pares nombre-valor de las propiedades del seguimiento distribuido.

Application Insights también usa el contexto de correlación para rellenar campos como dependency.target y request.source cuándo está disponible ese contexto.

Los modelos de datos de W3C Trace-Context y de Application Insights se asignan de la siguiente manera:

Application Insights W3C TraceContext
Id de Request y Dependency parent-id
Operation_Id trace-id
Operation_ParentId parent-id del intervalo primario de este intervalo. Este campo debe estar vacío si es un intervalo raíz.

Para más información, consulte Modelo de datos de telemetría de Application Insights.

Habilitar el soporte para el seguimiento distribuido de W3C

Esta característica está habilitada de forma predeterminada para JavaScript y los encabezados se incluyen automáticamente cuando el dominio de la página de hospedaje es el mismo que el dominio al que se envían las solicitudes (por ejemplo, la página de hospedaje es example.com y las solicitudes de Ajax se envían a example.com). Para cambiar el modo de seguimiento distribuido, use el distributedTracingMode campo de configuración. El valor predeterminado, AI_AND_W3C, ofrece compatibilidad con versiones anteriores para cualquier servicio heredado instrumentado por Application Insights.

Si las solicitudes XMLHttpRequest o Fetch Ajax van a otro host de dominio, incluidos los subdominios, los encabezados de correlación no se incluyen de forma predeterminada. Para habilitar esta característica, establezca el campo de configuración enableCorsCorrelationtrue. Si establece enableCorsCorrelation a true, todas las solicitudes XMLHttpRequest y Fetch Ajax incluyen los encabezados de correlación. Como resultado, si la aplicación del servidor al que llama la solicitud no admite el traceparent encabezado, es posible que se produzca un error en la solicitud. Este error depende de si el explorador y la versión pueden validar la solicitud en función de los encabezados que acepta el servidor. Puede usar el correlationHeaderExcludedDomains campo de configuración para excluir el dominio del servidor de la inserción de encabezados de correlación entre componentes. Por ejemplo, puede usar correlationHeaderExcludedDomains: ['*.auth0.com'] para excluir los encabezados de correlación de las solicitudes enviadas al proveedor de identidades de Auth0.

Importante

Para ver todas las configuraciones necesarias para habilitar la correlación, consulte la documentación de correlación de JavaScript.

Filtrado y preprocesamiento de telemetría

En el caso de las aplicaciones web de JavaScript, use inicializadores de telemetría para filtrar, modificar o enriquecer la telemetría antes de enviarla.

  • Devuelva false desde un inicializador para descartar un elemento de telemetría antes de enviarlo.
  • Agregue o modifique campos en el elemento de telemetría para enriquecer la telemetría con valores útiles para filtrar y analizar.
  • Use la configuración de muestreo del SDK para reducir el volumen de telemetría cuando necesite muestreo estadístico en lugar de filtrado explícito.

Advertencia

El filtrado de telemetría puede sesgar las estadísticas del portal y hacer que sea más difícil seguir los elementos relacionados. Prefiere el muestreo cuando necesite reducir el volumen sin excluir explícitamente datos de telemetría específicos.

Aplicaciones web de JavaScript

Para filtrar la telemetría desde aplicaciones web de JavaScript, use ITelemetryInitializer.

  1. Cree una función de devolución de llamada para el inicializador de telemetría. La función de devolución de llamada toma ITelemetryItem como parámetro, que es el evento que se está procesando. Si la función de devolución de llamada devuelve false, se filtra el elemento de telemetría.

    var filteringFunction = (envelope) => {
      if (envelope.data.someField === 'tobefilteredout') {
        return false;
      }
      return true;
    };
    
  2. Agregue la devolución de llamada del inicializador de telemetría:

    appInsights.addTelemetryInitializer(filteringFunction);
    

Inicializadores de telemetría de JavaScript

Los inicializadores de telemetría se ejecutan antes de enviar un elemento de telemetría de JavaScript. Úselos para agregar, modificar o quitar la telemetría del explorador. Al volver false desde un inicializador se quita el elemento.

Use inicializadores de telemetría para el enriquecimiento o filtrado dirigido. Use el muestreo cuando necesite reducir el volumen sin excluir explícitamente datos de telemetría específicos.

Inicializadores de telemetría de JavaScript

Inserte un inicializador de telemetría de JavaScript, si es necesario. Para más información sobre los inicializadores de telemetría para el SDK de JavaScript de Application Insights, consulte Inicializadores de telemetría.

Inserte un inicializador de telemetría agregando la función de devolución de llamada onInit en la configuración del script de carga del SDK de 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 obtener un resumen de las propiedades no personalizadas disponibles en el elemento de telemetría, consulte Modelo de exportación de datos de Application Insights.

Puede agregar tantos inicializadores como desee. Se invocan en el orden en que se agregan.

Adición de un nombre de rol en la nube y una instancia de rol en la nube

Use un inicializador de telemetría para establecer las etiquetas ai.cloud.role y ai.cloud.roleInstance. Estas etiquetas definen cómo aparece el componente en el mapa de aplicaciones en 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 de la versión 2.6.0, el SDK de JavaScript de Aplicación de Azure Insights proporciona administración de cookies basada en instancias que puede deshabilitar y volver a habilitar después de la inicialización.

Si deshabilita las cookies durante la inicialización mediante las disableCookiesUsage configuraciones o cookieCfg.enabled , puede volver a habilitarlas mediante la setEnabled función del objeto ICookieMgr.

La administración de cookies basada en instancias reemplaza las funciones globales CoreUtils anteriores de disableCookies(), setCookie()getCookie() y deleteCookie().

Para aprovechar las mejoras de vibración de árbol introducidas en la versión 2.6.0, deje de usar las funciones globales.

ICookieMgrConfig es una configuración de cookies para la administración de cookies basada en instancias agregada en la versión 2.6.0. Las opciones que proporciona le permiten habilitar o deshabilitar el uso de cookies por parte del SDK. También puede establecer rutas de acceso y dominios de cookies personalizados y personalizar las funciones para capturar, establecer y eliminar cookies.

En la tabla siguiente se definen las ICookieMgrConfig opciones.

Nombre Tipo Valor predeterminado Descripción
enabled boolean cierto La instancia actual del SDK usa este valor booleano para indicar si el uso de cookies está habilitado. Si es false, la instancia del SDK que inicializa esta configuración no almacena ni lee datos de las cookies.
dominio cuerda / cadena nulo Dominio de cookies personalizado. Resulta útil si desea compartir cookies de Application Insights entre subdominios. Si no se proporciona, se usa el valor del valor raíz cookieDomain.
camino cuerda / cadena / Especifica la ruta de acceso que se va a usar para la cookie. Si no se proporciona, usa cualquier valor del valor raíz cookiePath .
ignorar cookies string[] no definido Especifique los nombres de cookies que se omitirán. Hace que cualquier nombre de cookie coincidente nunca se lea o escriba. Todavía se pueden purgar o eliminar explícitamente. No es necesario repetir el nombre en la configuración blockedCookies. (Desde v2.8.8)
blockedCookies string[] no definido Especifique los nombres de las cookies que no se deben escribir nunca. Impide crear o actualizar cualquier nombre de cookie, pero todavía se pueden leer a menos que también se incluyan en .ignoreCookies Todavía se pueden purgar o eliminar explícitamente. Si no se especifica, se usa de forma predeterminada la misma lista que en ignoreCookies. (Desde v2.8.8)
getCookie (name: string) => string nulo Función para obtener el valor de la cookie especificada. Si no se proporciona, el SDK usa el análisis y el almacenamiento en caché de cookies internos.
setCookie (name: string, value: string) => void nulo Función para establecer la cookie indicada por su nombre con el valor especificado. Solo se llama al agregar o actualizar una cookie.
delCookie (name: string, value: string) => void nulo Función para eliminar la cookie especificada por nombre con el valor indicado. Esta función está separada de setCookie para evitar la necesidad de analizar el valor para determinar si se añade o se elimina la cookie. Si no se proporciona, el SDK usa el análisis y el almacenamiento en caché de cookies internos.

Mapa de origen

El soporte para mapas de origen le ayuda a depurar código JavaScript minificado al desminificar la pila de llamadas minificada de su telemetría de excepciones.

  • Compatible con todas las integraciones actuales en el panel Detalles de la excepción.
  • Admite todos los SDK de JavaScript actuales y futuros, incluidos Node.js, sin necesidad de una actualización del SDK.

Application Insights permite cargar mapas de origen en el contenedor de blobs de su cuenta de Azure Storage. Utilice mapas de origen para desofuscar las trazas de llamadas que se encuentran en la página Detalles de la transacción de extremo a extremo. También se pueden usar mapas de origen para desminificar cualquier excepción enviada por el SDK de JavaScript o el SDK de Node.js.

Captura de pantalla que muestra la selección de la opción de desminificar una pila de llamadas mediante la vinculación con una cuenta de almacenamiento.

Creación de una cuenta de almacenamiento y un contenedor de blobs

Si ya tiene una cuenta de almacenamiento o un contenedor de blobs, puede omitir este paso.

  1. Creación de una nueva cuenta de almacenamiento.

  2. Cree un contenedor de blobs en la cuenta de almacenamiento. Establezca Nivel de acceso público en Privado para asegurarse de que los mapas de origen no sean accesibles públicamente.

    Captura de pantalla que muestra cómo establecer el nivel de acceso del contenedor en Privado.

Inserción de mapas de origen en el contenedor de blobs

Integre la canalización de implementación continua con la cuenta de almacenamiento configurándola para cargar automáticamente los mapas de origen en el contenedor de blobs configurado.

Se pueden cargar mapas de origen en el contenedor de Azure Blob Storage con la misma estructura de carpetas con la que se compilaron e implementaron. Un caso de uso común es prefijar una carpeta de implementación con su versión. Por ejemplo: 1.2.3/static/js/main.js. Al desminificar mediante un contenedor de blobs de Azure denominado sourcemaps, la canalización intenta capturar un mapa de origen ubicado en sourcemaps/1.2.3/static/js/main.js.map.

Si usa Azure Pipelines para compilar e implementar de forma continua la aplicación, agregue una tarea Copia de archivos de Azure a la canalización para cargar automáticamente los mapas de origen.

Captura de pantalla que muestra la incorporación de una tarea de copia de archivos de Azure a la canalización para cargar los mapas de origen en Azure Blob Storage.

Configura tu recurso de Application Insights con una cuenta de almacenamiento de mapas de origen

Tiene dos opciones para configurar el recurso de Application Insights con una cuenta de almacenamiento del mapa de origen.

Hoja de detalles Transacción completa

En la pestaña Detalles de transacciones de un extremo a otro, seleccione Desminificar. Configura tu recurso si no está configurado.

  1. En Azure Portal, consulte los detalles de una excepción que está minificada.
  2. Seleccione Desminificar.
  3. Si el recurso no estuviera configurado, configúrelo.
Pestaña Propiedades

Para configurar o cambiar la cuenta de almacenamiento o el contenedor de blobs vinculados al recurso de Application Insights:

  1. Vaya a la pestaña Propiedades del recurso de Application Insights.

  2. Seleccione Cambiar el contenedor de blobs del mapa de origen.

  3. Seleccione un contenedor de blobs diferente como contenedor de mapas de origen.

  4. Seleccione Aplicar.

    Captura de pantalla que muestra la reconfiguración del contenedor de blobs de Azure seleccionado en el panel Propiedades.

Ver la pila de llamadas sin minimizar

Para ver la pila de llamadas no minimizada, seleccione un elemento de telemetría de excepciones en el portal de Azure, busque los mapas de origen que coincidan con la pila de llamadas y arrastre y suelte los mapas de origen sobre la pila de llamadas en el portal de Azure. El mapa de origen debe tener el mismo nombre que el archivo de origen de un marco de pila, pero con una extensión map.

Si experimenta problemas relacionados con la compatibilidad con mapas de código fuente para aplicaciones JavaScript, consulte Solución de problemas de compatibilidad con mapas de código fuente para aplicaciones JavaScript.

Animación en la que se muestra la característica de desminificación.

Agitación de árboles

El tree shaking elimina el código no utilizado del bundle final de JavaScript.

Para utilizar la agitación de árboles, importe solo los componentes necesarios del SDK en el código. Al hacerlo, se excluye el código sin usar de la agrupación final, lo que reduce su tamaño y mejora el rendimiento.

Mejoras y recomendaciones de la agitación de árboles

En la versión 2.6.0, el SDK marcó como obsoleto y eliminó el uso interno de estas clases auxiliares estáticas para mejorar la compatibilidad con los algoritmos de tree-shaking. Este cambio permite que los paquetes de npm quiten código sin usar de forma segura.

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

Las funciones ahora se exportan como raíces de nivel superior desde los módulos, lo que facilita la refactorización del código para mejorar la agitación de árboles.

Las clases estáticas ahora son objetos const que hacen referencia a las nuevas funciones exportadas.

Funciones y reemplazos en desuso de la agitación de árboles

Esta sección solo se aplica si usa las funciones en desuso y desea optimizar el tamaño del paquete. Para reducir el tamaño y admitir todas las versiones de Internet Explorer, use las funciones de reemplazo.

Existing Reemplazo
CoreUtils @microsoft/applicationinsights-core-js
CoreUtils._canUseCookies Ninguno. No use esta función, ya que hace que todas las referencias de CoreUtils se incluyan en el código final.
Refactorice el control de cookies a fin de usar appInsights.getCookieMgr().setEnabled(true/false) para establecer el valor y appInsights.getCookieMgr().isEnabled() para comprobar el valor.
CoreUtils.isTypeof isTypeof
CoreUtils.isUndefined estáIndefinido
CoreUtils.isNullOrUndefined isNullOrUndefined
CoreUtils.hasOwnProperty hasOwnProperty
CoreUtils.isFunction isFunction
CoreUtils.isObject esObjeto
CoreUtils.isDate isDate
CoreUtils.isArray isArray
CoreUtils.isError isError
CoreUtils.isString isString
CoreUtils.isNumber isNumber
CoreUtils.isBoolean isBoolean
CoreUtils.toISOString toISOString o getISOString
CoreUtils.arrForEach arrForEach
CoreUtils.arrIndexOf arrIndexOf
CoreUtils.arrMap arrMap
CoreUtils.arrReduce arrReduce
CoreUtils.strTrim strTrim
CoreUtils.objCreate objCreateFn
CoreUtils.objKeys objKeys
CoreUtils.objDefineAccessors objDefineAccessors
CoreUtils.addEventHandler añadirManejadorDeEventos
CoreUtils.dateNow dateNow
CoreUtils.isIE isIE
CoreUtils.disableCookies disableCookies
Hacer referencia a cualquiera de las funciones hace que se haga referencia a CoreUtils por motivos de compatibilidad con versiones anteriores.
Refactorice el control de cookies para usar appInsights.getCookieMgr().setEnabled(false).
CoreUtils.newGuid newGuid
CoreUtils.perfNow perfNow
CoreUtils.newId newId
CoreUtils.randomValue valor aleatorio
CoreUtils.random32 random32
CoreUtils.mwcRandomSeed mwcRandomSeed
CoreUtils.mwcRandom32 mwcRandom32
CoreUtils.generateW3CId generateW3CId
EventHelper @microsoft/applicationinsights-core-js
EventHelper.Attach adjuntarEvento
EventHelper.AttachEvent adjuntarEvento
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
Referenciar cualquiera de ellos provoca que CoreUtils se referencie por motivos de compatibilidad con versiones anteriores.
Refactorice el control de cookies para usar appInsights.getCookieMgr().setEnabled(false).
Util.canUseCookies canUseCookies
Referenciar cualquiera de ellos provoca que CoreUtils se referencie por motivos de compatibilidad con versiones anteriores.
Refactorice el control de cookies para usar appInsights.getCookieMgr().isEnabled().
Util.disallowsSameSiteNone uaDisallowsSameSiteNone
Util.setCookie coreSetCookie
La referencia hace que se haga referencia a CoreUtils por motivos de compatibilidad con versiones anteriores.
Refactorice el control de cookies para usar appInsights.getCookieMgr().set(name: string, value: string).
Util.stringToBoolOrDefault stringToBoolOrDefault
Util.getCookie coreGetCookie
La referencia hace que se haga referencia a CoreUtils por motivos de compatibilidad con versiones anteriores.
Refactorice el control de cookies para usar appInsights.getCookieMgr().get(name: string).
Util.deleteCookie coreEliminarCookie
La referencia hace que se haga referencia a CoreUtils por motivos de compatibilidad con versiones anteriores.
Refactorice el control de cookies para usar appInsights.getCookieMgr().del(name: string, path?: string).
Util.trim strTrim
Util.newId newId
Util.random32 ---
Sin reemplazo, refactorice el código para usar core 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 obtenerNombreDeExcepción
Util.addEventHandler adjuntarEvento
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 (función para analizar el host) urlParseHost
UrlHelper.parseFullHost urlParseFullHost
DateTimeUtils @microsoft/applicationinsights-common-js
DateTimeUtils.Now dateTimeUtilsNow
DateTimeUtils.GetDuration dateTimeUtilsDuration
ConnectionStringParser @microsoft/applicationinsights-common-js
ConnectionStringParser.parse parseConnectionString

Notificaciones de servicio

El SDK incluye notificaciones de servicio que proporcionan recomendaciones accionables para ayudar a garantizar que la telemetría fluye sin interrupciones a Application Insights. Verá las notificaciones como un mensaje de excepción en Application Insights. El SDK se asegura de que las notificaciones sean relevantes para ti en función de la configuración del SDK y ajusta el nivel de detalle según la urgencia de la recomendación. Mantén activadas las notificaciones de servicio, pero puedes desactivarlas a través de la configuración featureOptIn.

Actualmente, no se están enviando notificaciones activas.

El SDK de JavaScript administra las notificaciones del servicio y sondea periódicamente un archivo JSON público para controlar y actualizar estas notificaciones. Para deshabilitar el sondeo realizado por el SDK de JavaScript, deshabilite el modo featureOptIn.

Solución de problemas

Consulte el artículo de solución de problemas dedicado.

Pasos siguientes