故障排除编辑

某些功能无法按预期工作?如果您无法找出问题所在,请不要担心;我们来帮助您!第一步,请确保您的应用程序与代理的 支持的技术 兼容。

如果您是拥有支持合同的现有 Elastic 客户,请在 Elastic 支持门户 中创建工单。其他用户可以在 APM 讨论论坛 中发帖。

请将完整的调试日志 上传到类似 GitHub Gist 的服务,以便我们分析问题。日志应包含从应用程序启动到第一个请求执行的所有内容。有关更多信息,请参阅 调试模式

更新到最新代理版本编辑

Elastic Node.js APM 代理会定期更新,并且版本发布与 Elastic Stack 中的其他组件没有紧密联系。因此,更新到最新发布的代理版本通常是推荐的第一步故障排除步骤。

有关更多详细信息,请参阅 升级文档

调试模式编辑

要捕获足够的故障排除信息,请执行以下步骤

  1. 使用“trace”级日志记录启动您的应用程序。这可以通过设置环境变量 ELASTIC_APM_LOG_LEVEL=trace 或在 apm.start(options) 调用中添加 logLevel: 'trace' 来完成(有关详细信息,请参阅 logLevel)。
  2. 禁用可能的自定义 logger 配置,因为自定义日志记录器会导致结构化日志数据丢失。这可以通过设置环境变量 ELASTIC_APM_LOGGER=false 来完成。
  3. 向应用程序的某些端点发送一些 HTTP 请求,或重现您遇到的问题。
  4. 等待至少 10 秒,以允许代理尝试连接到 APM 服务器(由 apiRequestTime 控制)。

例如

ELASTIC_APM_LOG_LEVEL=trace ELASTIC_APM_LOGGER=false node app.js | tee -a apm-debug.log

如果您正在捕获用于 Elastic 支持、Elastic 论坛帮助或 GitHub 问题的调试输出,请将完整的调试输出 上传到类似 GitHub Gist 的服务,以便我们分析问题。

常见问题编辑

没有数据发送到 APM 服务器编辑

如果 Kibana APM 应用程序中没有您的服务数据,请检查日志输出中是否有以下类似消息。

最常见的问题来源是代理与 APM 服务器之间的连接问题。查找形式为 APM Server transport error ... 的日志消息。例如

APM Server transport error (ECONNREFUSED): connect ECONNREFUSED 127.0.0.1:8200

这些可能表明代理配置存在问题(请参阅 serverUrlsecretTokenapiKey)、代理与服务器之间的网络问题,或者 APM 服务器已关闭或配置错误(请参阅 APM 服务器故障排除文档)。

还要查找以 Elastic APM ... 开头的错误消息。一些示例

Elastic APM agent disabled (`active` is false)

这表明您可能已将 active 选项或 ELASTIC_APM_ACTIVE 环境变量设置为 false。请参阅 active 配置变量文档

Elastic APM is incorrectly configured: serverUrl "..." contains an invalid port! (allowed: 1-65535)

没有指标或跟踪数据发送到 APM 服务器编辑

错误跟踪正常,但您没有看到任何性能指标或跟踪数据。

确保代理 既是必需的,又是在主应用程序文件的最顶部启动的(通常是 index.jsserver.jsapp.js 文件)。代理在任何其他模块被 `require` 之前启动非常重要。如果没有,代理将无法挂钩到任何模块,也无法衡量应用程序的性能。有关使用某些编译器或捆绑器时正确启动 APM 代理的一些可能意外情况,请参阅 启动注意事项

禁用代理编辑

如果代理意外地对生产应用程序造成了干扰,您可以在进行故障排除时禁用代理。

要禁用代理,请将 active 设置为 false。您需要重新启动应用程序才能使更改生效。