bearcat-jstrace 讓監測線上方法調用性能成為可能
概述
tj 實現了一個 jstrace,可以用于動態的對node進行類似于dtrace,ktap的trace分析,可以動態檢測線上api接口的訪問性能,用于express中tj也實現了一個中間件express-jstrace,但是express-jstrace更像一個filter,只能檢測req res的性能,通過bearcat提供的強大的AOP支持, 讓監控線上方法調用性能成為可能
實現
bearcat-jstrace 即是基于jstrace和bearcat aop的實現, 使用起來也是相當的簡單,你只需要覆蓋定義下 bearcat-jstrace 內部實現的 jstraceAspect 的AOP pointcut 定義即可實現定制化,比如你想監控所有的Dao方法調用(這里有一個歸約就是所有的Dao方法命名以Dao結尾), 那么你需要在 bearcat 的 context.json 里面這樣配置即可:
"beans": [{ "id": "jstraceAspect", "func": "node_modules.bearcat-jstrace.lib.aspect.jstraceAspect", "aop": [{ "pointcut": "around:\\w+Dao.*?", "advice": "doJstrace", "runtime": true }] }]
默認情況下會對所有的Service方法進行監控
Probes
默認的jstrace探測點命名為:
* bearcat:method:start
* bearcat:method:end
監測使用
編寫trace.js
var m = {}; exports.local = function(traces) { traces.on('bearcat:method:start', function(trace) { console.log(JSON.stringify(trace)); }); traces.on('bearcat:method:end', function(trace) { console.log(JSON.stringify(trace)); }); }; npm install -g jstrace jstrace trace.js
即可進行監控
Note: 默認情況下監控的是方法, trace 里有method代表監控的方法, 監控的對象默認是無的,如果你想有監控的對象,那么需要在被監控的目標對象中,定義traceName, 比如
HelloService.prototype.traceName = "HelloService";
TODO
* 可視化與數據分析統計
來自:http://nodejs.netease.com/topic/53809f16ccd0c8ef280d1590
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!