JAMon

本文主要介绍利用JAMon监控java程序,本文中所用的应用服务器为jboss,对于其他服务器,配置类似。
从Sourceforge上下载JAMon,解压之后是一个jar包和一个war包。将jar包拷贝到lib目录下,war包布署到deploy目录下。
 一、页面监控
    对于页面监控主要修改你所监控的war包中的web.xml文件,增加一个filter即可,代码如下:

    < filter >
    
< filter-name > JAMonFilter </ filter-name >
    
< filter-class > com.jamonapi.JAMonFilter </ filter-class >
   
</ filter >
   
< filter-mapping >
    
< filter-name > JAMonFilter </ filter-name >
    
< url-pattern > /* </ url-pattern >
   
</ filter-mapping >


    对于JAMon提供的这个filter不一定满足需求,我们可以自己写一个filter。
二、java方法的监控
    JAMon是通过在要监控的代码前后加上start()和stop方法来实现的,如下:

   import  com.jamonapi. * ;
    ...
   Monitor monitor
= MonitorFactory.start( " myMonitor " );
    ...Your Code...
   monitor.stop();


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

public  aspect ApiAspect  {
    
// com.mycompany.*.*包下的所有类的所有public方法
    public pointcut apiExecution():
        execution(
public * com.mycompany.*.*.*(..)) ;

    before():apiExecution()
{
        
// start()方法
        MonitorManageFactory.getMonitor(thisJoinPoint.toString().substring(
                thisJoinPoint.toString().indexOf(
" "+ 1));
    }


    after() returning():apiExecution()
{
        
// stop()方法
        MonitorManageFactory.getMonitor(
                thisJoinPoint.toString().substring(
                        thisJoinPoint.toString().indexOf(
" "+ 1)).stop();
    }

}

MonitorManageFactory.java

import  java.util.ArrayList;
import  java.util.List;

import  com.jamonapi.Monitor;
import  com.jamonapi.MonitorFactory;

public   class  MonitorManageFactory  {
    
private static List<Monitor> monitorPoll = new ArrayList<Monitor>();

    
public static Monitor getMonitor(String label) {
        
for (Monitor monitor : monitorPoll) {
            
if (label.equals(monitor.getLabel())) {
                
return monitor;
            }

        }

        Monitor monitor 
= MonitorFactory.start(label);
        monitorPoll.add(monitor);
        
return monitor;
    }

}

aop.xml

<? xml version='1.0' encoding='utf-8' ?>
< aspectj >
    
< aspects >
        
< aspect  name ="ApiAspect" />           
    
</ aspects >
</ aspectj >

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就可以看到监控的信息了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值