1. 构建CAT war包
在CAT目录下,用maven构建项目
mvn clean install –DskipTests
2. 创建CAT库表
新建cat数据库并执行源码/source/cat/script/Cat.sql脚本完成表结构的创建。
3. 配置文件:
拷贝client.xml、server.xml、datasources.xml文件到/data/appdatas/cat/目录中
Cat服务端配置
A、 客户端配置
打开/data/appdatas/cat/client.xml客户端配置文件
配置说明:
* mode : 定义配置模式,固定值为client;--暂未使用
* servers : 定义多个服务端信息;
* server : 定义某个服务端信息;
* ip : 配置服务端(cat-home)对外IP地址
* port : 配置服务端(cat-home)对外TCP协议开启端口,固定值为2280;
* http-port : 配置服务端(cat-home)对外HTTP协议开启端口, 如:tomcat默认是8080端口,若未指定,默认为8080端口;
B、 数据库配置
打开/data/appdatas/cat/datasources.xml数据库配置文件
3
1s
10m
1000
com.mysql.jdbc.Driver
rw
111
3
1s
10m
1000
com.mysql.jdbc.Driver
rw
222
配置说明:
* 生成配置文件时,输入的数据库连接信息已写入此文件,如不换数据库,不用做任何修改
* 主要修改:url(数据库连接地址)、user(数据库用户名)、password(数据用户登录密码)
C、 服务端服务配置
打开/data/appdatas/cat/server.xml服务端服务配置文件
172.16.29.225:8999, 172.16.136.143:8999, 172.16.114.114:8999
配置说明:
* local-mode : 定义服务是否为本地模式(开发模式),在生成环境时,设置为false,启动远程监听模式。默认为 false;(示例为报警报告机配置)
* hdfs-machine : 定义是否启用HDFS存储方式,默认为 false;
* job-machine : 定义当前服务是否为报告工作机(开启生成汇总报告和统计报告的任务,只需要一台服务机开启此功能),默认为 false;
* alert-machine : 定义当前服务是否为报警机(开启各类报警监听,只需要一台服务机开启此功能),默认为 false;
* storage : 定义数据存储配置信息
* local-report-storage-time : 定义本地报告存放时长,单位为(天)
* local-logivew-storage-time : 定义本地日志存放时长,单位为(天)
* local-base-dir : 定义本地数据存储目录
* hdfs : 定义HDFS配置信息,便于直接登录系统
* server-uri : 定义HDFS服务地址
* console : 定义服务控制台信息
* remote-servers : 定义HTTP服务列表,(远程监听端同步更新服务端信息即取此值)
* ldap : 定义LDAP配置信息
* ldapUrl : 定义LDAP服务地址
4. 拷贝监控系统源码/source/cat/cat-home/target/目录下的cat-alpha-1.3.3.war到web应用服务器的发布目录
(如:$TOMCAT_HOME$/webapps/),并修改war包名称为cat.war
5. 启动应用服务器,如tomcat
6. 登录CAT HOME系统,修改配置
A、修改路由配置
选择‘配置-->全局警告配置–>客户端路由’,
或者在浏览器地址栏中直接输入http:/172.16.29.225:8999/cat/s/config?op=routerConfigUpdate,打开客户端路由配置界面
配置说明:
* 把backup-server设置为当前服务器对外IP地址,端口固定为2280;
* default-server定义可跳转的路由地址,可以设置多个。default-server的id属性配置可路由的cat-home服务IP地址,端口固定为2280;若需要禁用路由地址,可把enable设置为false。
* 点击“提交”按钮,保存修改的路由配置
B、修改告警服务端配置
选择‘配置-->全局警告配置–>告警服务端’,
或者在浏览器地址栏中直接输入http:/172.16.29.225:8999/cat/s/config?op=alertSenderConfigUpdate,打开客户端路由配置界面
删除默认sender-config配置,点击“提交”按钮,保存修改
C、修改Ping告警配置
选择‘配置-->应用监控配置–>ping告警配置’,
或者在浏览器地址栏中直接输入http:/172.16.29.225:8999/cat/s/config?op=thirdPartyRuleConfigs,打开客户端路由配置界面
删除默认url (http监控)配置
7.部署其他监控集群
A. 拷贝运行正常的CAT机器/data/appdatas/cat/目录中client.xml、server.xml、datasources.xml三个配置文件到监控机相同目录中
B. 修改server.xml配置中的 job-machine 和 alert-machine属性,都设置为false,禁用生成报告和报警功能,只开启监听功能
C. 拷贝cat.war到其他监控集群
D. 启动应用服务器,开启cat服务,完成服务端的配置及启动
Cat客户端配置
1. 配置app.properties文件
在resources资源文件META-INF下新建app.properties,注意是src/main/resources/META-INF/文件夹。
内容如:app.name=${appName};appName表示项目名
2. 配置客户端文件,拷贝client.xml文件
A、Linux\Mac 到/data/appdatas/cat下
B、Windows 到系统运行盘的根目录/data/appdatas/cat下
打开/data/appdatas/cat/client.xml客户端配置文件
配置说明:
* servers : 定义多个服务端信息;
* server : 定义某个服务端信息;
* ip : 配置服务端(cat-home)对外IP地址
* port : 配置服务端(cat-home)对外TCP协议开启端口,固定值为2280;
* http-port : 配置服务端(cat-home)对外HTTP协议开启端口, 如:tomcat默认是8080端口,若未指定,默认为8080端口;
Cat监控机配置
在/data/appdatas/cat下,配置client.xml
系统集成CAT及埋点实现
1、如果是web项目,可添加filter到web.xml,该filter已经对URL请求做了大部分的埋点工作。
cat-filter
com.dianping.cat.servlet.CatFilter
cat-filter
/*
REQUEST
FORWARD
2、配置pom.xml导入jar包
com.dianping.cat
cat-client
2.0.0
目前针对业务已经实现的CAT埋点监控包括以下三种形式:
1、SQL埋点
A、配置mybatis-config文件,插入Mybatis Plugin
B、实现CatMybatisInterceptor类,详见com.test.center.util.aspect.CatMybatisInterceptor
2、Cache埋点
实现CatAspect类,详见com.test.center.util.aspect.CatAspect
3、 Dubbo集成
配置pom.xml导入Dubbo jar包
com.alibaba
dubbo
2.5.4_cat-SNAPSHOT
4、 API Sample,详见com.dianping.cat.Cat
5、 基于注解CAT URL聚合
以切面方式进行动态URL聚合,降低CAT服务压力,具体如下:
A、CatAspect类中添加切面方法
@After("@annotation(catHttpRequestTransaction)")
public void catHttpRequestProcess(CatHttpRequestTransaction catHttpRequestTransaction) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
if(StringUtils.hasText(catHttpRequestTransaction.name())){
String transName = catHttpRequestTransaction.name();
request.setAttribute("cat-page-uri", transName);
}
}
B、新建注解类CatHttpRequestTransaction
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface CatHttpRequestTransaction {
String name() default "";
String type() default "URL";
}
C、在聚合的controller请求上添加注解,如下所示