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
**

  • 可视化与数据分析统计
时间: 2024-12-27 20:36:19

bearcat-jstrace 让检测线上方法调用性能成为可能的相关文章

一个方法调用性能问题

问题描述 public class Test {private static List<String> list ;static{list = new ArrayList<String>();list.add("0");list.add("1");list.add("2");list.add("3");}public String get(int subscript){return list.get(s

排查Java线上服务故障的方法和实例分析

前言 作为在线系统负责人或者是一个技术专家,你可能刚刚接手一个项目就需要处理紧急故障,或者被要求帮忙处理一些紧急的故障,这个时候的情景是: (1)你可能对这个业务仅仅是听说过,而不怎么真正了解: (2)你可能没有这个故障的详细信息,比如可能仅仅是有使用方反馈服务中断了10分钟: (3)你对代码细节还没有仔细研究过. 这个时候该怎么解决问题呢?根据以前的经验,工程师们常常倾向于直接登上服务器检查代码,试图立刻修改问题.或者是把某些可能是问题的配置做修改,但并不是100%确认这就是问题的根本原因.但

php文件调用一个类或方法,生成一个log文件,log文件上输出调用的时间和内容,该怎么写

问题描述 php文件调用一个类或方法,生成一个log文件,log文件上输出调用的时间和内容,该怎么写 php文件调用一个类或方法,生成一个log文件,log文件上输出调用的时间和内容,该怎么写 解决方案 /** 自定义日志 @param string $type @param string $content @return bool */ function mylog($type="",$content=""){ if(!$content || !$type){ r

thinkPHP线上自动加载异常与修复方法实例分析_php实例

本文实例讲述了thinkPHP线上自动加载异常与修复方法.分享给大家供大家参考,具体如下: 项目遇到一个奇怪的问题,本地代码正常,服务器上却不正常. 经过测试,应该是自动加载出了问题,尝试了各种方法, 1.手动加载,发现好麻烦,没完没了. 2.自己写自动加载,写不出来,尴尬. 3.修改配置,使其支持自动加载,发现还是不行. 后来进行调试, 发现本地支持 import('@.ORG.OSS\OssClient'); import('@.ORG.OSS\Core\OssUtil'); 而服务器上,不

浅谈地方论坛线上推广与线下推广方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 推广论坛比推广个人网站还要累,因为论坛注重的是人气,没有人气,什么都是空想杂谈.即使是口上说得未来多么多么牛都没用.因为根本没人知道这个论坛的存在,更别说是谈盈利了.所以论坛推广一定要注重两方面,只有这两方面结合起来,才能更有效更快速的把论坛推向大众,使大众知道有这以一个论坛存在,而且在论坛方面也要做好相应的措施,如内容,版块设置等一些细节,

牟长青:对各种线上推广方法的成本、流量、效果预估

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 前两天我在新浪微博和腾讯微博上分享了一张"网站推广方法成本预估"的图片,受到了很多微博好友的欢迎,在腾讯微博更是被转播了60多次.后来自己再看这张推广方法成本预估的图片总结,发现里面的内容还有很多不足的地方.比如有一些推广方法没提到,更重要的是,没有对各个推广方法的效果预估,也就是用户转换率的高低. 今天我特此进行修改总结

新手们需要知道的医疗行业线上营销方法

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 SEO也属于网络营销,做网络营销的目的也就那么几个,要么是为了获取流量,要么就是为了提高品牌曝光率,最终的目的都是为目标网站引导流量促成产品的推广.适合做SEO,SEM的行业太多了,在这个互联网高速发达的时代几乎每一个行业都需要做网络营销.今天Karen就为大家分享一下医疗行业的线上营销方法,学会了能够适用于很多行业哦. 1.竞价排名 做网络

线上性能问题初步排查方法

本文首发于并发网,作者:方腾飞 引言 有时候有很多问题只有在线上或者预发环境才能发现,而线上又不能Debug,所以线上问题定位就只能看日志,系统状态和Dump线程,本文只是简单的介绍一些常用的工具,帮助定位线上问题. 问题定位 1: 首先使用TOP命令查看每个进程的情况,显示如下: top - 22:27:25 up 463 days, 12:46, 1 user, load average: 11.80, 12.19, 11.79 Tasks: 113 total, 5 running, 10

Java服务化系统线上应急和技术攻关,你必须掌握的Linux命令

上一篇文章<Java服务化系统线上应急和技术攻关,你必须拥有的那些应用层脚本和Java虚拟机命令>介绍了笔者在互联网公司里线上应急和技术攻关过程中积累的应用层脚本和Java虚拟机命令,这些脚本和命令在发现问题和定位问题的过程中起到关键作用,然而,经常会遇到一些深层次的问题,仅仅通过应用层和JVM虚拟机层的信息无法定位问题和解决问题,这时需要深入研究系统级的各种参数和信息,才能确定问题的根源原因,例如:网络超时.机器负载过高.JVM OOM.JVM和内核Bug等,这篇文章介绍那些重要的Linux