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 Azure Application 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.
Para obtener instrucciones sobre cómo agregar la configuración del SDK, consulte Agregar configuración del SDK.
| 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 |
| 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. |
(requestContext: IRequestionContext) => {[key: string]: any} | 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 |
| 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 |
| 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 |
| convertUndefined Proporcionar al usuario una opción para convertir un campo sin definir en un valor definido por el usuario. |
any |
no definido |
| 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 |
| 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 |
| 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 |
| 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 |
| diagnosticLogInterval (interno) Intervalo de sondeo (en milisegundos) para la cola de registro interno |
numérico | 10.000 |
| desactivarAjaxTracking Si es verdadero, las llamadas Ajax no se recopilan automáticamente. El valor predeterminado es False. |
boolean | falso |
| 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 |
| 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 |
| 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 |
| disableExceptionTracking Si es verdadero, las excepciones 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 |
| disableFlushOnBeforeUnload El valor predeterminado es false. Si es true, no se llama al método flush cuando se desencadene un evento onBeforeUnload |
boolean | falso |
| 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 |
| disableInstrumentationKeyValidation Si es verdadero, se omite la verificación de la clave de instrumentación. El valor predeterminado es False. |
boolean | falso |
| disableTelemetry Si es verdadero, los datos de telemetría no se recopilan ni se envían. El valor predeterminado es False. |
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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| enableUnhandledPromiseRejectionTracking Si es verdadero, los rechazos de promesas no gestionados se recopilan automáticamente como un error 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 |
| 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 |
| 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 |
| 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 |
| 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 anteriores), así que si necesita mantener la longitud máxima anterior, debe establecer el valor en 5. |
numérico | 22 |
| 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 |
| isBrowserLinkTrackingEnabled El valor predeterminado es False. Si es verdadero, el SDK realiza un seguimiento de todas las solicitudes de Browser Link. |
boolean | falso |
| isRetryDisabled El valor predeterminado es false. Si es falso, volverá a intentarse con los errores 206 (éxito 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 |
| 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 |
| 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 |
| maxBatchInterval Cuánto tiempo deben recopilar datos de telemetría en lote antes de enviarlos (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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| sessionExpirationMs Se registra una sesión si ha continuado 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 |
| 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 |
| 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 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
Los agentes y SDK de Application Insights para .NET, .NET Core, Java, Node.jsy JavaScript admiten el seguimiento distribuido de forma nativa.
Con el SDK de Application Insights adecuado instalado y configurado, la información de seguimiento se recopila automáticamente para marcos, bibliotecas y tecnologías populares por los autocoleccionadores de dependencias del SDK. La lista completa de tecnologías compatibles está disponible en la Documentación de la recolección automática de dependencias.
Cualquier tecnología también puede ser rastreada manualmente con una llamada a TrackDependency en el TelemetryClient.
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/Stock | 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 versión más reciente del SDK de Application Insights admite el protocolo Trace-Context, pero es posible que tenga que participar en él. (Se mantiene la compatibilidad con versiones anteriores con el protocolo de correlación anterior compatible con el SDK de Application Insights).
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 define la extensión para el protocolo HTTP de correlación. Usa pares nombre-valor Request-Context para propagar la colección de propiedades utilizadas por el autor o el destinatario de la llamada. El SDK de Application Insights usa este encabezado para establecer los campos dependency.target y request.source.
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. AI_AND_W3C se proporciona de forma predeterminada para la compatibilidad con versiones anteriores con 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 se envían a un host de dominio diferente, 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 se llama no admite el traceparent encabezado, es posible que se produzca un error en la solicitud, en función de si el explorador o 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
Puede escribir código para filtrar, modificar o enriquecer la telemetría antes de enviarla desde el SDK. El procesamiento incluye datos enviados desde los módulos de telemetría estándar, como la recopilación de solicitudes HTTP y la recopilación de dependencias.
El filtrado puede modificar o descartar la telemetría antes de enviarla desde el SDK mediante la implementación de
ITelemetryProcessor. Por ejemplo, podría reducir el volumen de telemetría excluyendo las solicitudes de robots. A diferencia del muestreo, tiene control total sobre lo que se envía o descarta, pero afecta a las métricas basadas en registros agregados. Dependiendo de cómo descarte elementos, también podría perder la capacidad de navegar entre elementos relacionados.Agregue o modifique propiedades a cualquier telemetría enviada desde su aplicación mediante la implementación de un
ITelemetryInitializer. Por ejemplo, podría agregar valores calculados o números de versión por los que filtrar los datos en el portal.El muestreo reduce el volumen de telemetría sin afectar a las estadísticas. Mantiene juntos los puntos de datos relacionados para que pueda navegar entre ellos al diagnosticar un problema. En el portal, los recuentos totales se multiplican para compensar el muestreo.
Nota:
La API del SDK se usa para enviar métricas y eventos personalizados.
Filtros
Esta técnica proporciona control directo sobre lo que se incluye o se excluye del flujo de telemetría. El filtrado se puede usar para quitar elementos de telemetría que se envíen a Application Insights. Puede usar el filtrado con muestreo o por separado.
Para filtrar la telemetría, escriba un procesador de telemetría y regístrelo con TelemetryConfiguration. Toda la telemetría pasa por el procesador. Puede elegir quitarlo de la secuencia o asignarlo al siguiente procesador de la cadena. La telemetría de los módulos estándar, como el recopilador de solicitudes HTTP y el recopilador de dependencias, se incluye junto con la telemetría que usted mismo ha rastreado. Por ejemplo, puede filtrar para dejar fuera la telemetría acerca de las solicitudes de robots o las llamadas de dependencia correctas.
Advertencia
El filtrado de la telemetría enviada desde el SDK mediante procesadores puede sesgar las estadísticas que ve en el portal y dificultar el seguimiento de los elementos relacionados.
En su lugar, considere la posibilidad de usar el muestreo.
Aplicaciones web de JavaScript
Puede filtrar la telemetría desde aplicaciones web de JavaScript mediante 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. La devolución defalsedesde esta devolución de llamada da lugar a que se filtre 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);
ITelemetryProcessor e ITelemetryInitializer
¿Cuál es la diferencia entre los procesadores de telemetría y los inicializadores de telemetría?
- Hay algunas superposiciones en lo que puede hacer con ellos. Ambos se pueden usar para agregar o modificar propiedades de telemetría, aunque se recomienda usar inicializadores para ese propósito.
- Los inicializadores de telemetría siempre se ejecutan antes de los procesadores de telemetría.
- Se puede llamar a inicializadores de telemetría más de una vez. Por convención, no establecen ninguna propiedad que ya esté configurada.
- Los procesadores de telemetría permiten reemplazar o descartar completamente un elemento de telemetría.
- Se llama a todos los inicializadores de telemetría registrados para cada elemento de telemetría. Para los procesadores de telemetría, el SDK garantiza llamar al primer procesador de telemetría. Si se llama o no al resto de los procesadores se decide mediante los procesadores de telemetría anteriores.
- Use inicializadores de telemetría para enriquecer la telemetría con más propiedades o invalidar una existente. Use un procesador de telemetría para filtrar la telemetría.
Agregar o modificar propiedades
Use inicializadores de telemetría para enriquecer la telemetría con información adicional o para invalidar las propiedades de telemetría establecidas por los módulos de telemetría estándar.
Por ejemplo, Application Insights para un paquete web recopila telemetría sobre solicitudes HTTP. De forma predeterminada, marca cualquier solicitud con un código >de respuesta =400 como error. Si en su lugar quiere tratar 400 como correcto, puede proporcionar un inicializador de telemetría que establezca la propiedad de éxito.
Si proporciona un inicializador de telemetría, este se invoca cada vez que se llama a alguno de los métodos Track*(). Este inicializador incluye los Track() métodos llamados por los módulos de telemetría estándar. Por convención, estos módulos no establecen ninguna propiedad ya establecida por un inicializador. Se llama a los inicializadores de telemetría antes de llamar a los procesadores de telemetría, por lo que los enriquecimientos realizados por inicializadores son visibles para los procesadores.
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 del cargador 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 para Azure Application Insights proporciona administración de cookies basada en instancias que se puede deshabilitar y volver a habilitar después de la inicialización.
Si deshabilitó las cookies durante la inicialización mediante las configuraciones disableCookiesUsage o cookieCfg.enabled, puede volver a habilitarlas mediante la función setEnabled 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 la agitación de árboles introducidas en la versión 2.6.0, se recomienda dejar 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 proporcionadas 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.
Las opciones de ICookieMgrConfig se definen en la tabla siguiente.
| 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, usa el valor de la raíz cookieDomain. |
| camino | cuerda / cadena | / | Especifica la ruta de acceso que se utilizará para la cookie; si no se proporciona, usa cualquier valor de la raíz cookiePath. |
| ignorar cookies | string[] | no definido | Especifique los nombres de las cookies que se omitirán, lo que hace que los nombres de cookies coincidentes nunca se lean o escriban. Es posible que se sigan purgando o eliminando 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 nunca deben escribirse. Evita la creación o actualización de nombres de cookies, pero se pueden seguir leyendo a menos que también se incluya en ignoreCookies. Es posible que se sigan purgando o eliminando explícitamente. Si no se proporciona, el valor predeterminado es la misma lista de ignoreCookies. (Desde v2.8.8) |
| getCookie | (name: string) => string |
nulo | Función para obtener el valor de la cookie especificada; si no se proporciona, utiliza el análisis o almacenamiento en caché de cookies interno. |
| setCookie | (name: string, value: string) => void |
nulo | Función para establecer la cookie con 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 con nombre con el valor especificado; se separa de setCookie para evitar la necesidad de analizar el valor para determinar si la cookie se agrega o se quita. Si no se proporciona, usa el análisis o el almacenamiento en caché de cookies interno. |
Mapa de origen
La compatibilidad con mapas de origen ayuda a depurar código JavaScript minificado con la capacidad de desminificar la pila de llamadas minificada de la 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, incluido Node.JS, sin necesidad de una actualización del SDK.
Vínculo a la cuenta de Blob Storage
Application Insights admite la carga de mapas de origen en su propio contenedor de blobs de Azure Storage. Es posible usar mapas de origen para desminificar las pilas de llamadas que se encuentren en la página Detalles de transacciones de un extremo a otro. 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 de la pila de llamadas sin minificar
Para ver la pila de llamadas desminificada, seleccione un elemento de telemetría de excepciones en Azure Portal, busque los mapas de origen que coincidan con la pila de llamadas y arrastre y coloque los mapas de origen en la pila de llamadas de Azure Portal. 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
La agitación de árboles elimina el código sin usar del conjunto final de JavaScript.
Para utilizar la agitación de árboles, importe solo los componentes necesarios del SDK en el código. Al hacerlo, el código sin usar no se incluye en el conjunto 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 uso interno de estas clases auxiliares estáticas ha quedado en desuso y se ha quitado para mejorar la compatibilidad con los algoritmos de agitación de árboles. Permite que los paquetes de npm anulen el 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 se cambiaron a objetos const que hacen referencia a las nuevas funciones exportadas. Están previstos cambios futuros para refactorizar aún más las referencias.
Funciones y reemplazos en desuso de la agitación de árboles
Esta sección solo se le aplica si usa las funciones en desuso y desea optimizar el tamaño del paquete. Se recomienda usar las funciones de reemplazo para reducir el tamaño y admitir todas las versiones de Internet Explorer.
| Existing | Reemplazo |
|---|---|
| CoreUtils | @microsoft/applicationinsights-core-js |
| CoreUtils._canUseCookies | Ninguno. No se debe usar, 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 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). |
| 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
Las notificaciones de servicio son una característica integrada en el SDK para proporcionar recomendaciones accionables para ayudar a garantizar que la telemetría fluye sin interrupciones a Application Insights. Puede ver las notificaciones como un mensaje de excepción en Application Insights. Garantizamos que las notificaciones son pertinentes según la configuración del SDK y ajustamos el nivel de detalle en función de la urgencia de la recomendación. Se recomienda dejar las notificaciones del servicio activadas, pero puede optar por no participar a través de la configuración de featureOptIn.
Actualmente, no se están enviando notificaciones activas.
El SDK de JavaScript administra las notificaciones de servicio, que 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.
- Seguir el 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.