你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
Azure Application Insights JavaScript SDK 提供用于跟踪、监视和调试 Web 应用程序的配置。
SDK 配置
这些配置字段是可选的,除非另有说明,否则默认为 false。
有关如何添加 SDK 配置的说明,请参阅添加 SDK 配置。
| 名称 | 类型 | 默认 |
|---|---|---|
| 帐户ID 可选的帐户 ID(如果应用将用户分组到帐户中)。 不允许使用空格、逗号、分号、等于或竖线 |
字符串 | null |
| addRequestContext 提供一种在开始 API 调用时使用上下文扩充依赖项日志的方法。 默认值为未定义。 如果配置与 xhr 相关的上下文,则需要检查 xhr 是否存在。 如果配置与 fetch request 相关的上下文,则需要检查 fetch response 和 fetch 是否存在。 否则,可能无法获取所需的数据。 |
(requestContext: IRequestionContext) => {[key: string]: any} | 未定义 |
| ajaxPerfLookupDelay 默认值为 25 毫秒。 在重新尝试为 Ajax 请求查找 windows.performance 计时之前要等待的时间,时间以毫秒计并直接传递给 setTimeout()。 |
数字 | 二十五 |
| 应用程序ID appId 用于在客户端上发生的 AJAX 依赖项与服务器端请求之间进行关联。 启用信标 API 后,无法自动使用它,但可以在配置中手动设置。 默认值为 null |
字符串 | null |
| autoTrackPageVisitTime 如果为 true,则对于页面视图,将跟踪上一个检测的页面的查看时间并将其作为遥测数据发送,同时,为当前的页面视图启动新的计时器。 它作为 PageVisitTime 中名为 milliseconds 的自定义指标发送,通过 Date now() 函数(如果可用)进行计算,并在 now() 不可用的情况下(IE8 或更低版本)回退到 (new Date()).getTime()。 默认值为 false。 |
布尔 | 假 |
| convertUndefined 为用户提供一个选项,将未定义的字段转换为用户定义的值。 |
any |
未定义 |
| cookieCfg 启用 Cookie 使用的默认设置,请参阅 ICookieCfgConfig 设置,了解完整的默认值。 |
ICookieCfgConfig [可选] (自 2.6.0 起) |
未定义 |
| cookieDomain 自定义 Cookie 域。 如果要跨子域共享 Application Insights Cookie,这会非常有用。 (自 v2.6.0 起)如果定义了 cookieCfg.domain,则其优先级高于此值。 |
cookieCfg.domain 的别名[可选] |
null |
| cookiePath 自定义 cookie 路径。 如果要在应用程序网关后共享 Application Insights cookie,这会非常有用。 如果已定义 cookieCfg.path,则优先采用。 |
cookieCfg.path 的别名[可选] (自 2.6.0 起) |
null |
| correlationHeaderDomains 启用特定域的关联标头 |
字符串[] | 未定义 |
| correlationHeaderExcludedDomains 禁用特定域的关联标头 |
字符串[] | 未定义 |
| correlationHeaderExcludePatterns 使用正则表达式禁用关联标头 |
regex[] | 未定义 |
| 创建性能管理器 在需要且已启用 enablePerfMgr 的情况下,将被调用以创建 IPerfManager 实例的回调函数。它支持你替换 PerfManager() 的默认创建,而无需在初始化之后进行 setPerfMgr()。 |
(核心: IAppInsightsCore, notificationManager: INotificationManager) => IPerfManager | 未定义 |
| customHeaders 用户在使用自定义终结点时提供额外标头的功能。 使用信标发送方时,将不会再浏览器关闭时添加 customHeaders。 IE9 或更早版本不支持添加自定义标头。 |
[{header: string, value: string}] |
未定义 |
| diagnosticLogInterval 内部日志记录队列的(内部)轮询间隔(以毫秒为单位) |
数字 | 1万 |
| disableAjaxTracking 如果为 true,则不自动收集 Ajax 调用。 默认值为 false。 |
布尔 | 假 |
| disableCookiesUsage 默认值为 false。 一个布尔值,指示 SDK 是否禁用 Cookie 的使用。 如果为 true,则 SDK 不会存储或读取 Cookie 中的任何数据。 (自 v2.6.0 起)如果已定义 cookieCfg.enabled,则优先采用。 通过 core.getCookieMgr().setEnabled(true) 进行初始化后,可以重新启用 Cookie 的使用。 |
cookieCfg.enabled 的别名[可选] |
假 |
| disableCorrelationHeaders 如果为 false,则 SDK 会将两个标头(“Request-Id”和“Request-Context”)添加到所有依赖项请求,以将其关联到服务器端上的对应请求。 默认值为 false。 |
布尔 | 假 |
| 禁用数据丢失分析 (disableDataLossAnalysis) 如果为 false,则对于尚未发送的项,将在启动时检查内部遥测发送方缓冲区。 |
布尔 | 是 |
| disableExceptionTracking 如果为 true,则不自动收集异常。 默认值为 false。 |
布尔 | 假 |
disableFetchTrackingdisableFetchTracking 的默认设置为 false,这意味着它已处于启用状态。 但在 2.8.10 之前的版本中,它默认处于禁用状态。 在设置为 true 时,不会自动收集提取请求。 在版本 2.8.0 中,默认设置已从 true 更改为 false。 |
布尔 | 假 |
| disableFlushOnBeforeUnload 默认值为 false。 如果为 true,则在触发 onBeforeUnload 事件时不会调用刷新方法 |
布尔 | 假 |
| disableIkeyDeprecationMessage 禁用检测密钥弃用错误消息。 如果为 true,则不会发送错误消息。 |
布尔 | 是 |
| disableInstrumentationKeyValidation 如果为 true,则跳过检测密钥验证检查。 默认值为 false。 |
布尔 | 假 |
| 禁用遥测 如果为 true,则不收集或发送遥测数据。 默认值为 false。 |
布尔 | 假 |
| 禁用XHR 默认情况下,不要使用 XMLHttpRequest 或 XDomainRequest(对于 Internet Explorer < 版本 9),而应改为尝试使用fetch() 或 sendBeacon。 如果其他传输不可用,它将使用 XMLHttpRequest |
布尔 | 假 |
| 分布式追踪模式 设置分布式跟踪模式。 如果设置了 AI_AND_W3C 模式或 W3C 模式,则将生成 W3C 跟踪上下文标头 (traceparent/tracestate),并将其包含在所有传出请求中。 提供 AI_AND_W3C 是为了与任何旧版 Application Insights 检测服务向后兼容。 |
数值或 DistributedTracingModes |
DistributedTracing Modes.AI_AND_W3C |
| enableAjaxErrorStatusText 默认值为 false。 如果为 true,则在 AJAX 请求失败时将响应错误数据文本布尔值包含在依赖项事件中。 |
布尔 | 假 |
| enableAjaxPerfTracking 默认值为 false。 一个标记,用于在报告的 Ajax(XHR 和 fetch)报告指标中启用查找和包含额外浏览器 window.performance 计时。 |
布尔 | 假 |
| 启用自动路线跟踪 自动跟踪单页应用程序 (SPA) 中的路由更改。 如果为 true,则每次更改路由都会将新的页面视图发送到 Application Insights。 哈希路由更改 ( example.com/foo#bar) 也会记录为新的页面视图。注意:如果启用了此字段,则请勿为 history启用 对象,因为那样会收到多个页面视图事件。 |
布尔 | 假 |
| enableCorsCorrelation 如果为 true,则 SDK 会将两个标头(“Request-Id”和“Request-Context”)添加到所有 CORS 请求,以将传出的 AJAX 依赖项与服务器端上的对应请求相关联。 默认值为 false |
布尔 | 假 |
| enableDebug 如果为 true,则不管 SDK 日志记录设置如何,内部调试数据都将引发为异常,而不是记录这些数据。 默认值为 false。 注意:如果启用此设置,每当发生内部错误时,会导致遥测数据丢失。 这可能有利于快速识别 SDK 的配置或用法问题。 如果你不希望在调试时丢失遥测数据,请考虑使用 loggingLevelConsole 或 loggingLevelTelemetry,而不是 enableDebug。 |
布尔 | 假 |
| enablePerfMgr 启用后(为 true 时),将为已检测的代码创建本地 perfEvents,以(通过 doPerf() 帮助程序)发出 perfEvents。 它可以用于根据使用情况识别 SDK 中的性能问题,或者选择性地在自己的已检测代码中识别性能问题。 |
布尔 | 假 |
| enableRequestHeaderTracking 如果为 true,则跟踪 AJAX 和 Fetch 请求标头,默认值为 false。 如果未配置 ignoreHeaders,则不会记录 Authorization 和 X-API-Key 标头。 |
布尔 | 假 |
| enableResponseHeaderTracking 如果为 true,则跟踪 AJAX 和 Fetch 请求的响应标头,默认值为 false。 如果未配置 ignoreHeaders,则不会记录 WWW-Authenticate 标头。 |
布尔 | 假 |
| 启用会话存储缓冲 默认值为 true。 如果为 true,则会将包含所有未发送的遥测数据的缓冲区存储在会话存储中。 加载页面时会还原该缓冲区 |
布尔 | 是 |
| enableUnhandledPromiseRejectionTracking 如果为 true,则将自动收集未处理的承诺拒绝作为 JavaScript 错误。 如果 disableExceptionTracking 为 true(不跟踪异常),则会忽略配置值,并且不会报告未处理的承诺拒绝。 |
布尔 | 假 |
| eventsLimitInMem 不使用会话存储时,在 SDK 开始删除事件之前内存中可以保留的事件数(默认值)。 |
数字 | 1万 |
| excludeRequestFromAutoTrackingPatterns 提供一种从 XMLHttpRequest 或提取请求的自动跟踪中排除特定路由的方法。 如果已定义,则对于请求 URL 与正则表达式模式匹配的 Ajax / fetch 请求,自动跟踪处于关闭状态。 默认值为未定义。 |
string[] |RegExp[] | 未定义 |
| featureOptIn 设置功能选择加入详细信息。 此配置字段仅在 3.0.3 及更高版本中可用。 |
IFeatureOptIn | 未定义 |
| idLength 标识用于生成新的随机会话和用户 ID 的默认长度。 默认值为 22,以前的默认值为 5(v 2.5.8 或更低版本),如果需要保留以前的最大长度,则应将此值设置为 5。 |
数字 | 22 |
| ignoreHeaders 要在日志数据中忽略的 AJAX 和 Fetch 请求和响应头。 要替代或放弃默认值,请将包含要排除的所有标头的数组或空数组添加到配置。 |
字符串[] | [“Authorization”、“X-API-Key”、“WWW-Authenticate”] |
| isBeaconApiDisabled 如果为 false,则 SDK 将使用信标 API 发送所有遥测数据 |
布尔 | 是 |
| isBrowserLinkTrackingEnabled 默认值为 false。 如果为 true,则 SDK 将跟踪所有浏览器链接请求。 |
布尔 | 假 |
| isRetryDisabled 默认值为 false。 如果为 false,则出现代码 206(部分成功)、408(超时)、429(请求过多)、500(内部服务器错误)、503(服务不可用)和 0(脱机,仅当已检测到此状态时)时会重试 |
布尔 | 假 |
| isStorageUseDisabled 如果为 true,则 SDK 不会存储或读取本地和会话存储中的任何数据。 默认值为 false。 |
布尔 | 假 |
| loggingLevelConsole 将内部 Application Insights 错误记录到控制台。 0:关闭, 1:仅限严重错误, 2:所有内容(错误和警告) |
数字 | 0 |
| loggingLevelTelemetry 将内部 Application Insights 错误作为遥测数据发送。 0:关闭, 1:仅限严重错误, 2:所有内容(错误和警告) |
数字 | 1 |
| maxAjaxCallsPerView 默认值为 500 - 控制每页面视图监视的 Ajax 调用数量。 设置为 -1 可监视页面上的所有(无限制)Ajax 调用。 |
数字 | 500 |
| maxAjaxPerfLookupAttempts 默认值为 3。 需要用于查找 window.performance 计时的次数上限(如果适用)。 有的浏览器不会在报告 XHR 请求结束之前填充 window.performance。 对于提取请求,它是在完成后添加的。 |
数字 | 3 |
| maxBatchInterval 发送前要批处理遥测数据的时间长短(毫秒) |
数字 | 15000 |
| maxBatchSizeInBytes 遥测批的最大大小。 如果某个批超过此限制,则立即发送此批,并启动新批 |
数字 | 1万 |
| 名字前缀 一个可选值,用作 localStorage 和会话 Cookie 名称的名称后缀。 |
字符串 | 未定义 |
| onunloadDisableBeacon 默认值为 false。 关闭选项卡后,SDK 将使用信标 API 发送所有剩余的遥测 |
布尔 | 假 |
| onunloadDisableFetch 如果支持 fetch keepalive,请不要在卸载期间使用它发送事件,它在不使用 keepalive 的情况下仍可能回退到 fetch() |
布尔 | 假 |
| overridePageViewDuration 如果为 true,则在调用 trackPageView 时,trackPageView 的默认行为将更改为记录页面视图持续时间间隔的结束时间。 如果为 false 且未为 trackPageView 提供自定义持续时间,则会使用导航计时 API 计算页面视图性能。 默认值为 false。 |
布尔 | 假 |
| perfEvtsSendAll 如果已启用 enablePerfMgr 且 IPerfManager 触发了 INotificationManager.perfEvent(),此标志会确定是为所有事件触发事件并发送到所有侦听器(为 true 时),还是仅针对父级事件触发事件(为 false 时,默认值<)。 父级 IPerfEvent 事件在创建时没有其他 IPerfEvent 仍在运行,且其父级属性不为 null 或未定义状态。 自 v2.5.7 起 |
布尔 | 假 |
| 采样百分比 已发送事件的百分比。 默认值为 100,表示发送所有事件。 如果希望保留适用于大型应用程序的数据上限,请设置此项。 |
数字 | 100 |
| sdkExtension 设置 SDK 扩展名。 仅允许使用字母字符。 扩展名将添加为“ai.internal.sdkVersion”标记的前缀(例如“ext_javascript:2.0.0”)。 默认值为 null。 |
字符串 | null |
| sessionCookiePostfix 一个可选值,用作会话 Cookie 名称的名称后缀。 如果未定义,则 namePrefix 将用作会话 Cookie 名称的名称后缀。 |
字符串 | 未定义 |
| sessionExpirationMs 如果会话持续了这么长的时间(以毫秒为单位),则会记录会话。 默认值为 24 小时 |
数字 | 86400000 |
| sessionRenewalMs 如果用户处于非活动状态有这么长的时间(以毫秒为单位),则会记录会话。 默认值为 30 分钟 |
数字 | 1800000 |
| throttleMgrCfg 按密钥设置限制 mgr 配置。 此配置字段仅在 3.0.3 及更高版本中可用。 |
{[key: number]: IThrottleMgrConfig} |
未定义 |
| userCookiePostfix 一个可选值,用作用户 Cookie 名称的名称后缀。 如果未定义,则不会在用户 Cookie 名称上添加任何后缀。 |
字符串 | 未定义 |
分布式跟踪
新式云和 微服务 体系结构实现了简单的独立可部署服务,可降低成本,同时提高可用性和吞吐量。 但是,它使整个系统更难以推理和调试。 分布式跟踪通过提供类似于云和微服务体系结构的调用堆栈的性能探查器来解决此问题。
Azure Monitor 提供了两种使用分布式跟踪数据的体验:单个事务/请求的 事务诊断 视图和 应用程序映射 视图,用于显示系统交互方式。
Application Insights 可以单独监视每个组件,并使用分布式遥测关联来检测哪个组件负责故障或性能下降。 本文介绍 Application Insights 使用的不同语言和平台上的数据模型、上下文传播技术、协议和关联策略的实现。
通过 Autoinstrumentation 或 SDK 通过 Application Insights 启用分布式跟踪
适用于 .NET、.NET Core、Java、Node.js和 JavaScript 的 Application Insights 代理和 SDK 都支持本机分布式跟踪。
安装并配置正确的 Application Insights SDK 后,SDK 依赖项自动校对常用框架、库和技术收集跟踪信息。 依赖项自动收集文档中提供了受支持的技术的完整列表。
还可以使用对 TelemetryClient 上的 TrackDependency 调用手动跟踪任何技术。
用于遥测关联的数据模型
Application Insights 为分布式遥测关联定义 数据模型 。 若要将遥测与逻辑作相关联,每个遥测项都有一个名为上下文字段 operation_Id。 分布式跟踪中的每个遥测项都共享此标识符。 因此,即使从单个层丢失遥测数据,仍可以关联其他组件报告的遥测数据。
分布式逻辑作通常由一组较小的作组成,这些作由其中一个组件处理的请求。
请求遥测 定义这些作。 每个请求遥测项都有自己的 id 标识它的唯一全局。 与请求关联的所有遥测项(如跟踪和异常)都应将请求id的值设置为operation_parentId该值。
依赖项遥测 表示每个传出作,例如对另一个组件的 HTTP 调用。 它还定义了其自己的 id 全局唯一性。 请求遥测,由此依赖项调用启动,使用此 id 遥测作为它 operation_parentId。
可以使用 <
在微服务环境中,来自组件的跟踪可以转到不同的存储项。 每个组件都可以在 Application Insights 中有自己的连接字符串。 若要获取逻辑作的遥测数据,Application Insights 会查询每个存储项中的数据。
当存储项数较大时,需要一个提示,说明下一步要查找的位置。 Application Insights 数据模型定义了两个用于解决此问题的字段: request.source 以及 dependency.target。 第一个字段标识启动依赖项请求的组件。 第二个字段标识哪个组件返回了依赖项调用的响应。
有关从多个不同实例进行查询的信息,请参阅 Azure Monitor 中 Log Analytics 工作区、应用程序和资源的查询数据。
Example
我们来看一个示例。 名为“股票价格”的应用程序使用名为 Stock 的外部 API 显示股票的当前市场价格。 股票价格应用程序有一个名为“股票”页面的页面,客户端 Web 浏览器使用该 GET /Home/Stock页面打开。 应用程序使用 HTTP 调用 GET /api/stock/value查询 Stock API。
可以通过运行查询来分析生成的遥测数据:
(requests | union dependencies | union pageViews)
| where operation_Id == "STYz"
| project timestamp, itemType, name, id, operation_ParentId, operation_Id
在结果中,所有遥测项共享根 operation_Id目录。 从页面发出 Ajax 调用时,会将新的唯一 ID (qJSXU) 分配给依赖项遥测,并将 pageView 的 ID 用作 operation_ParentId。 然后,服务器请求使用 Ajax ID 作为 operation_ParentId。
| itemType | 姓名 | ID | operation_ParentId | operation_Id |
|---|---|---|---|---|
| pageView | “库存”页 | STYz |
STYz |
|
| 依赖,依赖性 or 依赖关系 | GET /Home/Stock | qJSXU |
STYz |
STYz |
| 申请 | GET Home/Stock | KqKwlrSt9PA= |
qJSXU |
STYz |
| 依赖,依赖性 or 依赖关系 | GET /api/stock/value | bBrf2L7mm2g= |
KqKwlrSt9PA= |
STYz |
对外部服务进行调用 GET /api/stock/value 时,需要知道该服务器的标识,以便可以相应地设置 dependency.target 字段。 当外部服务不支持监视时, target 将设置为服务的主机名。 示例为 stock-prices-api.com。 但是,如果服务通过返回预定义的 HTTP 标头来标识自身, target 则包含允许 Application Insights 通过查询该服务的遥测数据来生成分布式跟踪的服务标识。
使用 W3C TraceContext 的关联标头
Application Insights 正在转换为 W3C 跟踪上下文,后者定义:
-
traceparent:承载调用的全局唯一作 ID 和唯一标识符。 -
tracestate:承载特定于系统的跟踪上下文。
Application Insights SDK 的最新版本支持 Trace-Context 协议,但可能需要选择加入该协议。 (保留与 Application Insights SDK 支持的先前相关协议的向后兼容性。
相关 HTTP 协议(也称为 Request-Id)即将弃用。 此协议定义两个标头:
-
Request-Id:承载调用的全局唯一 ID。 -
Correlation-Context:承载分布式跟踪属性的名称/值对集合。
Application Insights 还定义了相关 HTTP 协议的 扩展 。 它使用 Request-Context 名称/值对来传播直接调用方或被调用方使用的属性集合。 Application Insights SDK 使用此标头来设置 dependency.target 和 request.source 字段。
W3C 跟踪上下文和 Application Insights 数据模型按以下方式映射:
| Application Insights | W3C TraceContext |
|---|---|
Id和RequestDependency |
parent-id |
Operation_Id |
trace-id |
Operation_ParentId |
此范围父范围的父级 ID。 如果此字段是根范围,则此字段必须为空。 |
有关详细信息,请参阅 Application Insights 遥测数据模型。
启用 W3C 分布式跟踪支持
默认情况下,为 JavaScript 启用此功能,并且当托管页域与请求发送到的域相同时,会自动包含标头(例如,宿主页是 example.com Ajax 请求发送到 example.com的域)。 若要更改分布式跟踪模式,请使用 distributedTracingMode 配置字段。 默认情况下,AI_AND_W3C是为了向后兼容 Application Insights 检测的任何旧服务。
-
添加以下配置:
distributedTracingMode: DistributedTracingModes.W3C 基于 JavaScript (Web) SDK 加载程序脚本的设置
添加以下配置:
distributedTracingMode: 2 // DistributedTracingModes.W3C
如果 XMLHttpRequest 或 Fetch Ajax 请求发送到其他域主机(包括子域),则默认情况下不包括相关标头。 若要启用此功能,请将 enableCorsCorrelation 配置字段 设置为 true。 如果设置为 traceparent 标头,则请求可能会失败,具体取决于浏览器/版本是否可以根据服务器接受的标头来验证请求。 可以使用 correlationHeaderExcludedDomains 配置字段 从跨组件相关标头注入中排除服务器的域。 例如,可用于 correlationHeaderExcludedDomains: ['*.auth0.com'] 从发送到 Auth0 标识提供者的请求中排除相关标头。
重要
若要查看启用关联所需的所有配置,请参阅 JavaScript 相关文档。
Cookie 管理
从版本 2.6.0 开始,Azure Application Insights JavaScript SDK 提供基于实例的 Cookie 管理,可在初始化后禁用或重新启用。
如果在初始化期间使用 disableCookiesUsage 或 cookieCfg.enabled 配置禁用了 Cookie,则可以使用 setEnabled的 函数重新启用它们。
基于实例的 Cookie 管理替代了之前的 disableCookies()、setCookie()、getCookie() 和 deleteCookie() 的 CoreUtils 全局函数。
要利用版本 2.6.0 中引入的树摇增强功能,建议不再使用全局函数。
Cookie 配置
ICookieMgrConfig 是在 2.6.0 中添加的 Cookie 配置,适用于基于实例的 Cookie 管理。 使用所提供的选项,可以启用或禁用 SDK 使用 Cookie。 还可以设置自定义 Cookie 域和路径,并自定义用于提取、设置和删除 Cookie 的函数。
下表中定义了 ICookieMgrConfig 选项。
| 名称 | 类型 | 默认 | 说明 |
|---|---|---|---|
| 启用 | 布尔 | 是 | SDK 的当前实例使用此布尔值来指示是否启用了 Cookie 的使用。 如果为 false,则由此配置初始化的 SDK 实例将不会存储或读取 Cookie 中的任何数据。 |
| 域 | 字符串 | null | 自定义 Cookie 域。 如果要跨子域共享 Application Insights Cookie,这会非常有用。 如果未提供,则使用根 cookieDomain 值中的值。 |
| 路径 | 字符串 | / | 指定用于 Cookie 的路径,如果未提供,将使用根 cookiePath 值中的任意值。 |
| 忽略Cookie | 字符串[] | 未定义 | 指定要忽略的 Cookie 名称,这会导致永远无法读取或写入任何匹配的 Cookie 名称。 它们仍可能被显式清除或删除。 无需在 blockedCookies 配置中重复该名称。 (自 v2.8.8 起) |
| blockedCookies | 字符串[] | 未定义 | 指定永不写入的 Cookie 名称。 它会阻止创建或更新任何 Cookie 名称,但仍可读取它们,除非也将其包含在 ignoreCookies 中。 它们仍可能被显式清除或删除。 如果未提供,则默认为 ignoreCookies 中的同一列表。 (自 v2.8.8 起) |
| getCookie | (name: string) => string |
null | 用于提取命名 Cookie 值的函数,如果未提供,将使用内部 Cookie 分析/缓存。 |
| setCookie | (name: string, value: string) => void |
null | 用于设置具有指定值的命名 Cookie 的函数,仅在添加或更新 Cookie 时调用。 |
| delCookie | (name: string, value: string) => void |
null | 用于删除具有指定值的命名 Cookie 的函数,与 setCookie 分离,从而无需分析值以确定是否添加或删除 Cookie。 如果未提供,则使用内部 Cookie 分析/缓存。 |
源映射
通过取消缩小异常遥测调用堆栈,源映射支持可帮助你调试缩小的 JavaScript 代码。
- 与“异常详细信息”面板上的所有当前集成兼容
- 支持所有当前和将来的 JavaScript SDK,包括Node.JS,无需进行 SDK 升级
链接到 Blob 存储帐户
Application Insights 支持将源映射上传到你的 Azure 存储帐户 Blob 容器。 你可以使用源映射取消缩小在端到端事务详细信息页上的调用堆栈。 还可以使用源映射来取消减少 JavaScript SDK 或 Node.js SDK 发送的任何异常。
新建存储帐户和 Blob 容器
如果已有存储帐户或 blob 容器,则可以跳过此步骤。
在存储帐户中创建 Blob 容器。 将“公共访问级别”设为“专用”,以确保源映射不可公开访问。
将源映射推送到 Blob 容器
将持续部署管道配置为自动将源映射上传到已配置的 Blob 容器,从而将持续部署管道集成到你的存储帐户。
可以将源映射上传到 Azure Blob 存储容器,使用与它们在编译和部署时相同的文件夹结构。 一个常见的用例是用其版本作为部署文件夹的前缀,例如 1.2.3/static/js/main.js。 通过名为 sourcemaps 的 Azure Blob 容器取消缩小时,管道会尝试提取位于 sourcemaps/1.2.3/static/js/main.js.map 的源映射。
推荐通过 Azure Pipelines 上传源映射
如果使用 Azure Pipelines 持续生成和部署应用程序,请将 Azure 文件复制任务添加到管道,以自动上传源映射。
使用源映射存储帐户配置 Application Insights 资源
有两个方式可以通过源映射存储帐户配置 Application Insights 资源。
“端到端事务详细信息”选项卡
在“端到端事务详细信息”选项卡中,选择“取消缩小”。 如果资源未配置,请配置它。
- 在 Azure 门户中,查看已缩小的异常的详细信息。
- 选择“取消缩小”。
- 如果未配置资源,请配置它。
“属性”选项卡
若要配置或更改链接到 Application Insights 资源的存储帐户或 Blob 容器:
查看已取消缩小的调用堆栈
要查看已取消缩小的调用堆栈,请在 Azure 门户中选择异常遥测项,查找与调用堆栈匹配的源映射,然后将源映射拖放到 Azure 门户中的调用堆栈上。 源映射必须与堆栈帧的源文件同名,但扩展名为 map。
如果遇到涉及 JavaScript 应用程序的源映射支持的问题,请参阅排查 JavaScript 应用程序的源映射支持问题。
摇树
摇树可消除最终 JavaScript 捆绑包中未使用的代码。
要利用摇树,请仅将 SDK 的必需组件导入代码。 通过这样做,未使用的代码不会包含在最终捆绑包中,从而减少其大小并提高性能。
摇树增强功能和建议
在版本 2.6.0 中,我们弃用并移除了这些静态帮助程序类的内部用法,以改进对树摇算法的支持。 它允许 npm 包安全地删除未使用的代码。
CoreUtilsEventHelperUtilUrlHelperDateTimeUtilsConnectionStringParser
现在,函数可作为顶级根从模块导出,因此可以更轻松地重构代码,以更好地进行树摇。
静态类已更改为引用新导出函数的 const 对象,并计划将来进行更改以进一步重构引用。
摇树已弃用的函数和替换项
本部分仅适用于使用已弃用的函数,并且需要优化包大小的情况。 建议使用替换函数来减小大小并支持所有版本的 Internet Explorer。
| 现存 | 替代功能 |
|---|---|
| CoreUtils | @microsoft/applicationinsights-core-js |
| CoreUtils._canUseCookies | 无。 请勿使用,因为它会导致最终代码中包含所有 CoreUtils 引用。 重构 Cookie 处理,以使用 appInsights.getCookieMgr().setEnabled(true/false) 设置值,使用 appInsights.getCookieMgr().isEnabled() 检查 值。 |
| CoreUtils.isTypeof | isTypeof |
| CoreUtils.isUndefined | 未定义状态 (isUndefined) |
| CoreUtils.isNullOrUndefined | isNullOrUndefined |
| CoreUtils.hasOwnProperty | hasOwnProperty |
| CoreUtils.isFunction | isFunction |
| CoreUtils.isObject | isObject |
| CoreUtils.isDate | isDate |
| CoreUtils.isArray | isArray |
| CoreUtils.isError | isError |
| CoreUtils.isString | isString |
| CoreUtils.isNumber | isNumber |
| CoreUtils.isBoolean | isBoolean |
| CoreUtils.toISOString | toISOString 或 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 | addEventHandler |
| CoreUtils.dateNow | dateNow |
| CoreUtils.isIE | isIE |
| CoreUtils.disableCookies | disableCookies 引用任意一项都会导致引用 CoreUtils 以实现向后兼容性。 重构 Cookie 处理以使用 appInsights.getCookieMgr().setEnabled(false) |
| CoreUtils.newGuid | newGuid |
| CoreUtils.perfNow | perfNow |
| CoreUtils.newId | newId |
| CoreUtils.randomValue | 随机值 |
| CoreUtils.random32 | random32 |
| CoreUtils.mwcRandomSeed | mwcRandomSeed |
| CoreUtils.mwcRandom32 | mwcRandom32 |
| CoreUtils.generateW3CId | generateW3CId |
| EventHelper | @microsoft/applicationinsights-core-js |
| EventHelper.Attach | attachEvent |
| EventHelper.AttachEvent | attachEvent |
| EventHelper.Detach | detachEvent |
| EventHelper.DetachEvent | detachEvent |
| Util | @microsoft/applicationinsights-common-js |
| Util.NotSpecified | strNotSpecified |
| Util.createDomEvent | createDomEvent |
| Util.disableStorage | utlDisableStorage |
| Util.isInternalApplicationInsightsEndpoint | isInternalApplicationInsightsEndpoint |
| Util.canUseLocalStorage | utlCanUseLocalStorage |
| Util.getStorage | utlGetLocalStorage |
| Util.setStorage | utlSetLocalStorage |
| Util.removeStorage | utlRemoveStorage |
| Util.canUseSessionStorage | utlCanUseSessionStorage |
| Util.getSessionStorageKeys | utlGetSessionStorageKeys |
| Util.getSessionStorage | utlGetSessionStorage |
| Util.setSessionStorage | utlSetSessionStorage |
| Util.removeSessionStorage(移除会话存储) | utlRemoveSessionStorage |
| Util.disableCookies | disableCookies 引用任意一项都会导致引用 CoreUtils 以实现向后兼容性。 重构 Cookie 处理以使用 appInsights.getCookieMgr().setEnabled(false) |
| Util.canUseCookies | canUseCookies 引用任意一项都会导致引用 CoreUtils 以实现向后兼容性。 重构 Cookie 处理以使用 appInsights.getCookieMgr().isEnabled() |
| Util.disallowsSameSiteNone | uaDisallowsSameSiteNone |
| Util.setCookie | coreSetCookie 引用会导致引用 CoreUtils 以实现向后兼容性。 重构 Cookie 处理以使用 appInsights.getCookieMgr().set(name: string, value: string) |
| Util.stringToBoolOrDefault | stringToBoolOrDefault |
| Util.getCookie | coreGetCookie 引用会导致引用 CoreUtils 以实现向后兼容性。 重构 Cookie 处理以使用 appInsights.getCookieMgr().get(name: string) |
| Util.deleteCookie(删除Cookie) | coreDeleteCookie 引用会导致引用 CoreUtils 以实现向后兼容性。 重构 Cookie 处理以使用 appInsights.getCookieMgr().del(name: string, path?: string) |
| Util.trim | strTrim |
| Util.newId | newId |
| Util.random32 | --- 无替换,重构代码以使用核心 random32(true) |
| Util.generateW3CId | generateW3CId |
| Util.isArray | isArray |
| Util.isError | isError |
| Util.isDate | isDate |
| Util.toISOStringForIE8 | toISOString |
| Util.getIEVersion | getIEVersion(获取IE版本) |
| Util.msToTimeSpan | msToTimeSpan |
| Util.isCrossOriginError | isCrossOriginError |
| Util.dump | dumpObj |
| Util.getExceptionName | 获取异常名称 (getExceptionName) |
| Util.addEventHandler | attachEvent |
| Util.IsBeaconApiSupported | isBeaconApiSupported |
| Util.getExtension | getExtensionByName |
| UrlHelper | @microsoft/applicationinsights-common-js |
| UrlHelper.parseUrl | urlParseUrl |
| UrlHelper.getAbsoluteUrl | urlGetAbsoluteUrl |
| UrlHelper.getPathName | urlGetPathName |
| UrlHelper.getCompeteUrl | urlGetCompleteUrl |
| UrlHelper.parseHost | urlParseHost |
| UrlHelper.parseFullHost | urlParseFullHost |
| DateTimeUtils | @microsoft/applicationinsights-common-js |
| DateTimeUtils.Now | dateTimeUtilsNow |
| DateTimeUtils.GetDuration | dateTimeUtilsDuration |
| ConnectionStringParser | @microsoft/applicationinsights-common-js |
| ConnectionStringParser.parse | parseConnectionString |
服务通知
服务通知是 SDK 中内置的一项功能,它可提供可行的建议来帮助确保遥测流不间断地流向 Application Insights。 在 Application Insights 中,你将看到异常消息通知。 我们根据 SDK 设置确保通知与你相关,并根据建议的紧急程度来调整详细程度。 建议让服务通知保持启用状态,但你可以通过 featureOptIn 配置选择关闭。 有关活动通知的列表,请参阅下文。
目前,不会发送任何活动通知。
服务通知由 JavaScript SDK 管理,该 SDK 会定期轮询公共 JSON 文件来控制和更新这些通知。 要禁用 JavaScript SDK 进行的轮询,请禁用 featureOptIn 模式。
故障排除
请参阅专用疑难解答文章。
后续步骤
- 若要查看常见问题解答(常见问题解答),请参阅 JavaScript SDK 配置常见问题解答
- 跟踪使用情况
- 自定义事件和指标
- Azure 文件复制任务