故障排除
编辑故障排除
编辑是否有任何东西没有按预期工作? 如果您无法找出问题所在,请不要担心; 我们随时为您提供帮助! 第一步,请确保您的应用程序与代理的支持的技术兼容。
如果您是拥有支持合同的现有 Elastic 客户,请在Elastic 支持门户中创建工单。 其他用户可以在APM 讨论论坛中发帖。
请将您的完整调试日志上传到 GitHub Gist 等服务,以便我们可以分析问题。 日志应包含从应用程序启动到执行第一个请求的所有内容。 有关详细信息,请参阅调试模式。
更新到最新的代理版本
编辑Elastic Node.js APM Agent 会频繁更新,并且其发布版本与其他 Elastic Stack 组件没有强关联。因此,通常建议先更新到最新发布的代理版本,作为第一个故障排除步骤。
有关更多详细信息,请参阅升级文档。
调试模式
编辑要捕获足够的故障排除信息,请执行以下步骤
- 以“trace”级别的日志记录启动您的应用程序。可以通过设置环境变量
ELASTIC_APM_LOG_LEVEL=trace
或将logLevel: 'trace'
添加到apm.start(options)
调用中来完成(有关详细信息,请参阅logLevel
)。 - 禁用可能的自定义
logger
配置,因为自定义记录器可能会导致结构化日志数据丢失。可以通过设置环境变量ELASTIC_APM_LOGGER=false
来完成。 - 向一些应用程序端点发送几个 HTTP 请求,和/或重现您看到的问题。
- 至少等待 10 秒,以允许代理尝试连接到 APM Server(由
apiRequestTime
控制)。
例如
ELASTIC_APM_LOG_LEVEL=trace ELASTIC_APM_LOGGER=false node app.js | tee -a apm-debug.log
如果您正在捕获用于 Elastic 支持、Elastic 论坛帮助或 GitHub 问题的调试输出,请将完整的调试输出上传到 GitHub Gist 等服务,以便我们可以分析问题。
常见问题
编辑未向 APM Server 发送数据
编辑如果 Kibana APM 应用程序中没有您的服务数据,请检查日志输出中是否存在如下消息。
最常见的问题来源是代理和 APM Server 之间的连接问题。查找格式为 APM Server transport error ...
的日志消息。例如
APM Server transport error (ECONNREFUSED): connect ECONNREFUSED 127.0.0.1:8200
这些可能表明代理配置存在问题(请参阅serverUrl
、secretToken
或 apiKey
)、代理和服务器之间的网络问题,或者 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 Server 发送指标或跟踪数据
编辑错误会得到很好的跟踪,但您看不到任何性能指标或跟踪数据。
请确保代理 在您的主应用程序文件(通常是 index.js
、server.js
或 app.js
文件)的最顶部被要求并启动。重要的是在 require
所有其他模块之前启动代理。否则,代理将无法挂钩到任何模块,并且将无法衡量应用程序的性能。当与某些编译器或捆绑器一起使用时,有关正确启动 APM 代理中可能存在的意外情况,请参阅启动注意事项。
禁用代理
编辑如果代理极不可能导致生产应用程序中断,您可以在进行故障排除时禁用该代理。
要禁用代理,请将 active
设置为 false
。您需要重新启动应用程序以使更改生效。