bearcat-jstrace 讓監測線上方法調用性能成為可能

jopen 10年前發布 | 10K 次閱讀 程序調試 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!