故障排除

编辑

应用程序中的一些错误似乎源于代理的 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事件的页面。

Span 详情视图中没有堆栈跟踪

编辑

由于与收集堆栈信息相关的性能问题,RUM JS 代理不支持 Span 的堆栈跟踪。

调试

编辑

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

  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 代码库并包含尽可能多的信息。请参阅调试,了解如何收集调试信息。