Node.js 應用中Elastic APM全鏈路追蹤失敗,如何解決Kibana缺失SQL及HTTP耗時細節問題?

node.JS 應用elastic apm全鏈路追蹤故障排查及解決方案:kibana缺失sqlhttp耗時信息

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
喜歡就支持一下吧
點贊13 分享