故障排除编辑

应用程序中的一些错误似乎源于代理的 JavaScript 文件编辑

在某些情况下,当你查看错误的堆栈跟踪时,它似乎源于代理的 JavaScript 文件。但是,由于我们需要修补一些浏览器 API 以提供代理的一些核心功能,因此我们的 JavaScript 文件出现在错误堆栈跟踪中。通常,错误是由应用程序的另一个部分生成的,你可以进一步跟踪堆栈跟踪以识别有问题的代码。

当然,也可能存在由代理本身引起的错误,如果您能将这些错误反馈给我们,我们将不胜感激。

应用程序中的一些错误只显示 script error编辑

在某些情况下,当你查看错误的详细信息时,你只能看到 Script error 消息。当错误源于与页面来源不同的来源提供的 JavaScript 文件时,就会发生这种情况。

为了获得错误详细信息的可视性,你必须执行以下两项操作。

  1. 将属性 crossorigin 添加到 <script> 元素

    <script src="https://example.com/example.js" crossorigin>
  2. 确保服务器响应在提供 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 代理不支持跨度的堆栈跟踪。

调试编辑

为了调试代理,请考虑执行以下步骤

  1. logLevel: 'debug' 添加到代理配置
  2. 重新加载应用程序
  3. 页面加载后等待至少 5 秒
  4. 监控浏览器开发者工具中的控制台和网络面板

禁用事件有效负载压缩编辑

在 Chrome 等浏览器中,RUM 代理事件有效负载使用 gzip 压缩。由于这种压缩,当你使用浏览器开发者工具的网络面板检查事件时,你将看不到可读的内容。

在某些情况下,这可能是一个问题。例如,HAR 文件将不会显示可读的信息。因此,无法检查事件以进行调试目的。

有两种方法可以禁用有效负载压缩

  1. 使用 sessionStorage 浏览器 API 创建一个名为 _elastic_inspect_beacon_ 的项目。
  2. 使用 URL 中的查询参数 _elastic_inspect_beacon_ 加载网页。例如,https://elastic.ac.cn?_elastic_inspect_beacon_=true

这种效果将持续到选项卡或浏览器关闭为止。

禁用代理编辑

在代理导致生产应用程序出现故障的极少数情况下,你可以在进行故障排除时禁用代理。

要禁用代理,请将 active 设置为 false

联系我们编辑

如果您有任何问题,请在 Elastic APM 讨论论坛 中创建一个新主题。

对于错误报告和功能请求,请在我们的 github 仓库创建一个问题,并尽可能多地提供信息。请参阅 调试,了解如何收集调试信息。