Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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.
-
Agregue la siguiente configuración:
distributedTracingMode: DistributedTracingModes.W3C Configuración basada en el script del cargador del SDK de JavaScript (Web)
Agregue la siguiente configuración:
distributedTracingMode: 2 // DistributedTracingModes.W3C
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
falsedesde 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.
Cree una función de devolución de llamada para el inicializador de telemetría. La función de devolución de llamada toma
ITelemetryItemcomo parámetro, que es el evento que se está procesando. Si la función de devolución de llamada devuelvefalse, se filtra el elemento de telemetría.var filteringFunction = (envelope) => { if (envelope.data.someField === 'tobefilteredout') { return false; } return true; };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";
});
});
Administración de cookies
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.
Configuración de cookies
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.
Vínculo a la cuenta de Blob Storage
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.
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.
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.
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.
Carga de mapas de origen mediante Azure Pipelines (recomendado)
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.
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.
- En Azure Portal, consulte los detalles de una excepción que está minificada.
- Seleccione Desminificar.
- 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:
Vaya a la pestaña Propiedades del recurso de Application Insights.
Seleccione Cambiar el contenedor de blobs del mapa de origen.
Seleccione un contenedor de blobs diferente como contenedor de mapas de origen.
Seleccione Aplicar.
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.
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.
CoreUtilsEventHelperUtilUrlHelperDateTimeUtilsConnectionStringParser
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
- Para revisar las preguntas más frecuentes (P+F), consulte Preguntas más frecuentes sobre la configuración del SDK de JavaScript.
- Realizar un seguimiento del uso.
- Tarea de copia de archivos de Azure.
- Referencia de tipos de datos de Azure Monitor y código del SDK para el SDK de JavaScript.