node.JS 应用elastic apm全链路追踪故障排查及解决方案:kibana缺失sql和http耗时信息
本文分析如何在Node.js应用中利用Elastic APM实现全链路追踪,并解决一个常见问题:按照官方示例配置后,Kibana界面仅显示接口总耗时,而缺少SQL查询和HTTP调用的详细耗时数据。
问题背景:开发者使用Node.js (v10)、elastic-apm-node (v3.x) 和Elastic APM (v7.14.0)进行全链路追踪尝试,Kibana只展示接口总耗时,缺少关键的SQL和HTTP调用Span信息。而类似的go语言接口却能正常显示这些细节,说明问题可能出在Node.js应用的配置或代码上。
根本原因及解决方案:问题在于elastic-apm-node的初始化代码位置。 正确的初始化代码应位于所有其他代码之前:
const agent = require('elastic-apm-node').start({ serviceName: 'apm-service-test', // 覆盖package.json中的服务名 serverUrl: 'http://localhost:8200' // 自定义APM Server URL });
此前,初始化代码未放置在文件开头,导致agent未能正确捕获所有Span信息。将此代码移至文件顶部后,Kibana成功显示了SQL查询和HTTP调用的详细耗时信息,问题得到解决。 这强调了在使用elastic-apm-node时,确保agent初始化代码位于所有其他代码之前的必要性。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END