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