项目地址:https://github.com/dianping/cat
编译步骤:
这个项目比较另类,把编译需要的jar包,单独放在git分支mvn-repo里了,而且官方文档里给了一个错误的命令提示:
当你直接把这条命令贴到terminal里执行时,会提示命令无效,正确的姿势如下:
1、先安装jdk 1.7或Jdk1.8【现在已经支持jdk1.8了】
这点很重要,cat项目的开发时间比较早,当时估计jdk8还没有,在1.8下编译虽然能成功,但是最后运行时会报错。
注:对于已经安装了jdk1.8的mac,可以参考Mac下同时安装多个版本的JDK ,如果弄多版本jdk切换,不要在PATH变量里加$JAVA_HOME/bin,否则alias切换只切换了JAVA_HOME,但是PATH里的值不会变。
2、将分支mvn-repo下的jar包复制到本机maven仓库
温馨提示:3.0 移除了cat的maven插件需要先切换到2.0 分支, 执行mvn cat:install 后再切回来,即可完成依赖包install然后再编译就可以了,再次提醒:如果安装了多个版本的jdk,编译前先将jdk版本切换到jdk 1.7(包括编译成功后,运行时也要jdk 1.7环境)
部署步骤:
安装过程中,会提示输入mysql的连接地址,输入格式严格按 jdbc:mysql://127.0.0.1:3306 这种格式来,后面不要加一些额外参数,然后输入用户名、密码(该用户要有创建database的权限),之后会自动在mysql中创建cat数据库,然后创建一堆表。
如果启动过程无错,
成功后,在浏览器打开:2281/cat 就可以看到cat监控界面了
或者在cat目录下输入 mvn eclipse:clean eclipse:eclipse 然后将项目导入到eclipse中,运行cat-home项目里得‘com.dianping.cat.TestServer’来启动CAT。
实时--》全部--》主机--》具体的Transactionwindows下的注意事项:
Windows 则是对系统运行盘下的/data/appdatas/cat和/data/applogs/cat有读写权限 //这个地方要特别说明一下,如有cat的源文件在E盘,则相关配置文件就应该放在e:/data/appdatas/cat/下面
1、Web.xml中新增filter
注:如果项目是对外不提供URL访问,比如GroupService,仅仅提供Pigeon服务,则不需要。
Filter放在url-rewrite-filter 之后的第一个,如果不是会导致URL的个数无限多,比如search/1/2,search/2/3等等,无法监控,后端存储压力也变大。
xml:
2.Pom.xml中更新jar包(点评内部公共组件,外部公司可以忽略)
cat-client的最新版本:
3、配置domain (cat-core 1.1.3之后版本,优先读取A配置)
A) 在资源文件中新建app.properties文件
在resources资源文件META-INF下,注意是src/main/resources/META-INF/文件夹, 而不是webapps下的那个META-INF,添加app.properties,加上domain配置,如:app.name=tuangou-web
B) 在资源文件中新建client.xml文件
在resources资源文件META-INF下,新建cat文件夹,注意是src/main/resources/META-INF/cat/client.xml文件, 而不是webapps下的那个META-INF,domain id表示项目名称此处为CMDB申请的名字,比如
4./data/appdatas/cat/目录下,新建一个client.xml文件(线上环境是OP配置)
如果系统是windows环境,则在eclipse运行的盘,比如D盘,新建/data/appdatas/cat/目录,新建client.xml文件
项目文件中srouce中的client.xml,此文件代表了这个项目我是谁,比如项目的名字Cat。
/data/appdatas/cat/client.xml,此文件有OP控制,这里的Domain名字用来做开关,如果一台机器上部署了多个应用,可以指定把一个应用的监控关闭。
alpha、beta这个配置需要自己在此目录添加
预发以及生产环境这个配置需要通知到对应OP团队,让他们统一添加,自己上线时候做下检查即可
a、192.168.213.115:2280端口是指向测试环境的cat地址
b、配置可以加入CAT的开关,用于关闭CAT消息发送,将enabled改为false,如下表示将mobile-api这个项目关闭
5.CAT的Log4j集成 【建议所有Log都打到CAT,这样才能更快发现问题】
业务程序的所有异常都通过记录到CAT中,方便看到业务程序的问题,建议在Root节点中添加次appendar
a)在Log4j的xml中,加入Cat的Appender>
b)在Root的节点中加入catAppender
c)注意有一些Log的是不继承root的,需要如下配置
https://github.com/dianping/cat/tree/master/框架埋点方案集成
java config:
linux 安装maven:
cat监控平台Problem报表可以查找一些异常操作,配置Transcation报表使用。如果发现Transaction报表中有些URL max时间太长,可以在Problem中查找到,然后进行分析
FAQ:Error when try connecting to /10.10.10.2:2280原因是没有配置客户端路由导致
这时点击左上角的红色配置按钮,如出现登录窗口输入默认账号密码,catadmin/catadmin进入配置界面后选择 全局告警配置-客户端路由Backup-server为当前服务器地址,端口固定2280
Default-server定义可跳转的路由地址,这里设置的是本机地址,enable设置true表示启用。设置完成后点击提交保存。
https://github.com/dianping/cat/blob/master/框架埋点方案集成/Cat技术入门总结-0.1.0.doc
异常解决:
要按readme的要求,使用jdk1.8以下进行编译生成war。否则,就有下面的错:
[ERROR] [ServletHolder] Servlet initializing failed. org.unidal.lookup.LookupException: Component(org.unidal.web.lifecycle.RequestLifecycle) lookup failure. details: Unable to lookup component 'org.unidal.web.lifecycle.RequestLifecycle', it could not be started.
role: org.unidal.web.lifecycle.RequestLifecycleroleHint: mvc
maven用的jdk环境和我编译的环境不一样,maven要依赖javahome
_2152237
更改tomcat JDK:
经测试,更改catalina.bat设置也可以