故障排除
编辑故障排除编辑
应用程序中的一些错误似乎源于代理的 JavaScript 文件编辑
在某些情况下,当你查看错误的堆栈跟踪时,它似乎源于代理的 JavaScript 文件。但是,由于我们需要修补一些浏览器 API 以提供代理的一些核心功能,因此我们的 JavaScript 文件出现在错误堆栈跟踪中。通常,错误是由应用程序的另一个部分生成的,你可以进一步跟踪堆栈跟踪以识别有问题的代码。
当然,也可能存在由代理本身引起的错误,如果您能将这些错误反馈给我们,我们将不胜感激。
应用程序中的一些错误只显示 script error
编辑
在某些情况下,当你查看错误的详细信息时,你只能看到 Script error
消息。当错误源于与页面来源不同的来源提供的 JavaScript 文件时,就会发生这种情况。
为了获得错误详细信息的可视性,你必须执行以下两项操作。
-
将属性
crossorigin
添加到<script>
元素<script src="https://example.com/example.js" crossorigin>
-
确保服务器响应在提供 JavaScript 文件时包含
Access-Control-Allow-Origin
标头。// Either of the two values is valid: Access-Control-Allow-Origin: * Access-Control-Allow-Origin: your page's origin
Access-Control-Allow-Origin: *
在某些浏览器(例如 Chrome)中不会匹配 localhost
,导致在本地开发环境中配置正确时出现 Script error
消息。
要详细了解浏览器如何处理脚本错误,请参阅 MDN 页面上的 onerror 事件。
在跨度详细信息视图中没有堆栈跟踪可用编辑
由于与收集堆栈信息相关的性能问题,RUM JS 代理不支持跨度的堆栈跟踪。
调试编辑
为了调试代理,请考虑执行以下步骤
- 将
logLevel: 'debug'
添加到代理配置 - 重新加载应用程序
- 页面加载后等待至少 5 秒
- 监控浏览器开发者工具中的控制台和网络面板
禁用事件有效负载压缩编辑
在 Chrome 等浏览器中,RUM 代理事件有效负载使用 gzip 压缩。由于这种压缩,当你使用浏览器开发者工具的网络面板检查事件时,你将看不到可读的内容。
在某些情况下,这可能是一个问题。例如,HAR 文件将不会显示可读的信息。因此,无法检查事件以进行调试目的。
有两种方法可以禁用有效负载压缩
- 使用 sessionStorage 浏览器 API 创建一个名为
_elastic_inspect_beacon_
的项目。 - 使用 URL 中的查询参数
_elastic_inspect_beacon_
加载网页。例如,https://elastic.ac.cn?_elastic_inspect_beacon_=true
这种效果将持续到选项卡或浏览器关闭为止。
禁用代理编辑
在代理导致生产应用程序出现故障的极少数情况下,你可以在进行故障排除时禁用代理。
要禁用代理,请将 active
设置为 false
。
联系我们编辑
如果您有任何问题,请在 Elastic APM 讨论论坛 中创建一个新主题。
对于错误报告和功能请求,请在我们的 github 仓库 上创建一个问题,并尽可能多地提供信息。请参阅 调试,了解如何收集调试信息。