一、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
2. 部署war包:当运行完打包命令,会在每个子模块中,生成打包后的文件
- * cat-home.war : 服务端组件,负责收集监控信息,分析处理生成报告、作出警告(<span style="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 : 监控服务代理组件
接着,客户端接入
1.待监控项目pom文件加入依赖
- <dependency>
- <groupId>com.dianping.cat</groupId>
- <artifactId>cat-core</artifactId>
- <version>1.3.6</version>
- </dependency>
- <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>
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监控系统首页【文档】选项