一、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打包命令:
mvn clean install -DskipTests
PS:打包过程中会在源码所在盘符创建 data/appdatas/cat
目录,所以确保当前用户拥有读写权限
2. 部署war包:当运行完打包命令,会在每个子模块中,生成打包后的文件
* cat-home.war : 服务端组件,负责收集监控信息,分析处理生成报告、作出警告(<span style="margin: 0px; padding: 0px; list-style: none outside none; word-break: normal; word-wrap: break-word; font-size: 18px; line-height: 27px;">需要的服务端war包</span>)
* cat-agent.war : 监控端组件,负责收集被监控端信息,并上传监控信息到服务端
* cat-client.jar : 客户端组件,负责与服务端进行连接通信,
* cat-core.jar : 核心处理组件,负责具体的与客户端通信服务,解析数据、输出报告
* cat-consumer.jar : 消费处理组件,负责实际的监控数据分析,处理工作
* cat-hadoop.jar : HDFS存储组件
* broker-service.war : 监控服务代理组件
将cat-home.war重命名为cat.war后复制到tomcat 容器webapps目录下,然后启动容器,至此服务端已安装完毕,在浏览器中输入 http://127.0.0.1:8341/cat/r/ 看到下图,表示安装成功
接着,客户端接入
1.待监控项目pom文件加入依赖
<dependency> <groupId>com.dianping.cat</groupId> <artifactId>cat-core</artifactId> <version>1.3.6</version> </dependency>2. 待监控项目 web.xml 中引入cat 过滤器
<filter> <filter-name>cat-filter</filter-name> <filter-class>com.dianping.cat.servlet.CatFilter</filter-class> </filter> <filter-mapping> <filter-name>cat-filter</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping>3.引入配置文件:在src/main/resources/META-INF下创建app.properties或cat/client.xml
app.properties 加入一行app.name=项目名(即domain)
3.加入监控逻辑
@RequestMapping("index")
public ModelAndView index(HttpServletRequest request, HttpServletResponse response){
Transaction t = Cat.getProducer().newTransaction("your transaction type", "your transaction name");
try {
System.out.println("debug...");
Cat.getProducer().logEvent("your event type", "your event name", Event.SUCCESS, "keyValuePairs");
t.setStatus(Transaction.SUCCESS);
} catch (Exception e) {
Cat.getProducer().logError(e);//用log4j记录系统异常,以便在Logview中看到此信息
t.setStatus(e);
// throw e;
/* (CAT所有的API都可以单独使用,也可以组合使用,比如Transaction中嵌套Event或者Metric。)
(注意如果这里希望异常继续向上抛,需要继续向上抛出,往往需要抛出异常,让上层应用知道。)
(如果认为这个异常在这边可以被吃掉,则不需要在抛出异常。)*/
} finally {
t.complete();
}
return new ModelAndView("main");
}
4.重启待监控项目,并访问一个项目的页面,同时进入监控平台(默认用户catadmin/catadmin)http://127.0.0.1:8341/cat/r/,这时我们会发现,下图中有了数据(profit为项目名)
5.监控埋点
Transaction用来记录一段程序响应时间
Event用来记录一行code的执行次数
Metric用来记录一个业务指标
这些指标都是独立的,可以单独使用,主要看业务场景。
最后,安装总结
本文提到的CAT安装是简化版,没有用到ldap验证,没有用到hadoop,比较基础。其他详细的安装细节请参考源码和CAT监控系统首页【文档】选项。