jamon java_JAMon | 学步园

本文主要介绍利用JAMon监控java程序,本文中所用的应用服务器为jboss,对于其他服务器,配置类似。

从Sourceforge上下载JAMon,解压之后是一个jar包和一个war包。将jar包拷贝到lib目录下,war包布署到deploy目录下。

一、页面监控

对于页面监控主要修改你所监控的war包中的web.xml文件,增加一个filter即可,代码如下:

None.gifNone.gifJAMonFilterNone.gifcom.jamonapi.JAMonFilterNone.gifNone.gifNone.gifJAMonFilterNone.gif/*None.gif

对于JAMon提供的这个filter不一定满足需求,我们可以自己写一个filter。

二、java方法的监控

JAMon是通过在要监控的代码前后加上start()和stop方法来实现的,如下:

None.gifimportcom.jamonapi.*;

None.gif    ...

None.gif   Monitor monitor=MonitorFactory.start("myMonitor");

None.gif    ...Your Code...

None.gif   monitor.stop();

因此我们可以借助aspectj来实现对java方法的监控,代码如下:

ApiAspect.aj

ExpandedBlockStart.gif

ContractedBlock.gifpublicaspect ApiAspect...{

6a9c071a08f1dae2d3e1c512000eef41.png//com.mycompany.*.*包下的所有类的所有public方法6a9c071a08f1dae2d3e1c512000eef41.pngpublicpointcut apiExecution():

6a9c071a08f1dae2d3e1c512000eef41.png        execution(public*com.mycompany.*.*.*(..)) ;

6a9c071a08f1dae2d3e1c512000eef41.png

ExpandedSubBlockStart.gif

ContractedSubBlock.gif    before():apiExecution()...{

6a9c071a08f1dae2d3e1c512000eef41.png//start()方法6a9c071a08f1dae2d3e1c512000eef41.pngMonitorManageFactory.getMonitor(thisJoinPoint.toString().substring(

6a9c071a08f1dae2d3e1c512000eef41.png                thisJoinPoint.toString().indexOf("")+1));

ExpandedSubBlockEnd.gif    }6a9c071a08f1dae2d3e1c512000eef41.png

ExpandedSubBlockStart.gif

ContractedSubBlock.gif    after() returning():apiExecution()...{

6a9c071a08f1dae2d3e1c512000eef41.png//stop()方法6a9c071a08f1dae2d3e1c512000eef41.pngMonitorManageFactory.getMonitor(

6a9c071a08f1dae2d3e1c512000eef41.png                thisJoinPoint.toString().substring(

6a9c071a08f1dae2d3e1c512000eef41.png                        thisJoinPoint.toString().indexOf("")+1)).stop();

ExpandedSubBlockEnd.gif    }ExpandedBlockEnd.gif}None.gif

MonitorManageFactory.java

None.gifimportjava.util.ArrayList;

None.gifimportjava.util.List;

None.gif

None.gifimportcom.jamonapi.Monitor;

None.gifimportcom.jamonapi.MonitorFactory;

None.gif

ExpandedBlockStart.gif

ContractedBlock.gifpublicclassMonitorManageFactory...{

6a9c071a08f1dae2d3e1c512000eef41.pngprivatestaticListmonitorPoll=newArrayList();

6a9c071a08f1dae2d3e1c512000eef41.png

ExpandedSubBlockStart.gif

ContractedSubBlock.gifpublicstaticMonitor getMonitor(String label)...{

ExpandedSubBlockStart.gif

ContractedSubBlock.giffor(Monitor monitor : monitorPoll)...{

ExpandedSubBlockStart.gif

ContractedSubBlock.gifif(label.equals(monitor.getLabel()))...{

6a9c071a08f1dae2d3e1c512000eef41.pngreturnmonitor;

ExpandedSubBlockEnd.gif            }ExpandedSubBlockEnd.gif        }6a9c071a08f1dae2d3e1c512000eef41.png        Monitor monitor=MonitorFactory.start(label);

6a9c071a08f1dae2d3e1c512000eef41.png        monitorPoll.add(monitor);

6a9c071a08f1dae2d3e1c512000eef41.pngreturnmonitor;

ExpandedSubBlockEnd.gif    }ExpandedBlockEnd.gif}

aop.xml

None.gif<?xml  version='1.0' encoding='utf-8'?>None.gifNone.gifNone.gifNone.gifNone.gif

aop.xml要放在META-INF文件夹下,将编译之后的文件和META-INF文件夹拷贝到被监控的war包或jar包中。war中的目录为WEB-INF/classes,jar包为根目录。

最后就是修改应用服务器的启动,在run.bat中加入set     JAVA_OPTS=-javaagent:%ASPECTJ_HOME%/aspectjweaver.jar %JAVA_OPTS%

其中ASPECTJ_HOME为aspectjweaver.jar所在的目录的环境变量。

启动jboss,通过访问/jamon就可以看到监控的信息了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值