点评cat监控(入门)

 

    一、CAT (Central Application Tracking) 简介

   

   CAT 是大众点评开源的一套基于Java的实时应用监控平台,主要应用于服务中间件框架(MVC 框架、RPC 框架、持久层框架、分布式缓存框架)的监控,为开发和运维提供各项性能指标、健康检查、自动报警等可视化服务

  

 
 

      二、CAT 安装部署:

      

      下文将一步步介绍如何安装服务端、如何接入客户端、如何查看一些监控指标

     

      首先,准备安装环境

       

       1.确保待安装环境已经安装了jdk(1.6以上版本)、Git、maven(maven 版本需要在 3.2.3以上)MySQL、web容器 tomcat,这里不再赘述

       2.下载cat源码:https://github.com/dianping/cat.git,并导入到eclipse(导入过程中可能会遇到一些问题,可以不必在此纠结,继续下一步

       3.下载master打包后的包,https://github.com/dianping/cat/archive/master.zip,并解压到本地

       

       其次,安装服务端

       

        1.打war包:进入到解压后的 源码文件夹,运行maven打包命令: 

Java代码  收藏代码
  1. mvn clean install -DskipTests  
           PS:打包过程中会在源码所在盘符创建 data/appdatas/cat目录,所以确保当前用户拥有读写权限

 

       2. 部署war包:当运行完打包命令,会在每个子模块中,生成打包后的文件

       

Java代码  收藏代码
  1. * cat-home.war : 服务端组件,负责收集监控信息,分析处理生成报告、作出警告(<span style="font-size: 18px; line-height: 27px;">需要的服务端war包</span>)  
  2. * cat-agent.war : 监控端组件,负责收集被监控端信息,并上传监控信息到服务端  
  3. * cat-client.jar : 客户端组件,负责与服务端进行连接通信,  
  4. * cat-core.jar : 核心处理组件,负责具体的与客户端通信服务,解析数据、输出报告  
  5. * cat-consumer.jar : 消费处理组件,负责实际的监控数据分析,处理工作  
  6. * cat-hadoop.jar : HDFS存储组件  
  7. * broker-service.war : 监控服务代理组件  
        将cat-home.war重命名为cat.war后复制到tomcat 容器webapps目录下,然后启动容器,至此服务端已安装完毕,在浏览器中输入 http://127.0.0.1:8341/cat/r/ 看到下图,表示安装成功

 



 

         

       接着,客户端接入

     

       1.待监控项目pom文件加入依赖

        

Xml代码  收藏代码
  1.  <dependency>  
  2.      <groupId>com.dianping.cat</groupId>  
  3.      <artifactId>cat-core</artifactId>     
  4.      <version>1.3.6</version>  
  5. </dependency>  
       2.待监控项目web.xml 中引入cat 过滤器

 

    

Xml代码  收藏代码
  1. <filter>  
  2.       <filter-name>cat-filter</filter-name>  
  3.       <filter-class>com.dianping.cat.servlet.CatFilter</filter-class>  
  4.   </filter>  
  5.   <filter-mapping>  
  6.       <filter-name>cat-filter</filter-name>  
  7.       <url-pattern>/*</url-pattern>  
  8.       <dispatcher>REQUEST</dispatcher>  
  9.       <dispatcher>FORWARD</dispatcher>  
  10.   </filter-mapping>  
     3.引入配置文件:在src/main/resources/META-INF下创建app.properties或cat/client.xml

 

  

  

       app.properties 加入一行app.name=项目名(即domain)

 

     3.加入监控逻辑

 

Java代码  收藏代码
  1.  @RequestMapping("index")  
  2.  public ModelAndView index(HttpServletRequest request, HttpServletResponse response){  
  3. Transaction t = Cat.getProducer().newTransaction("your transaction type""your transaction name");  
  4.     try {  
  5.                     System.out.println("debug...");  
  6.                     Cat.getProducer().logEvent("your event type""your event name", Event.SUCCESS, "keyValuePairs");  
  7.                     t.setStatus(Transaction.SUCCESS);  
  8.          } catch (Exception e) {  
  9.                 Cat.getProducer().logError(e);//用log4j记录系统异常,以便在Logview中看到此信息  
  10.                 t.setStatus(e);  
  11.                // throw e;   
  12.                     /*  (CAT所有的API都可以单独使用,也可以组合使用,比如Transaction中嵌套Event或者Metric。) 
  13.                       (注意如果这里希望异常继续向上抛,需要继续向上抛出,往往需要抛出异常,让上层应用知道。) 
  14.                       (如果认为这个异常在这边可以被吃掉,则不需要在抛出异常。)*/  
  15.          } finally {  
  16.                t.complete();  
  17.          }  
  18.       
  19.      return new ModelAndView("main");  
  20.  }  
 

 

     4.重启待监控项目,并访问一个项目的页面,同时进入监控平台(默认用户catadmin/catadmin)http://127.0.0.1:8341/cat/r/这时我们会发现,下图中有了数据(profit为项目名)



 
 

       5.监控埋点

      

        Transaction用来记录一段程序响应时间

        Event用来记录一行code的执行次数

        Metric用来记录一个业务指标

        这些指标都是独立的,可以单独使用,主要看业务场景。

     

      最后,安装总结

     

       本文提到的CAT安装是简化版,没有用到ldap验证,没有用到Hadoop,比较基础。其他详细的安装细节请参考源码和CAT监控系统首页【文档】选项