CAT是基于Java开发的实时分布式应用监控平台,主要体现在监控报表Transaction、event、problem、heartbeat等,cat系统定制的监控模型以及定制的实时分析报表也是cat系统核心优势。这里强调了CAT相比于其他系统的二开优势。
logview是cat原始的log采集方式,cat的logview使用的技术是threadlocal,将一个thread里面的打点聚合上报,有一点弱化版本的链路功能,但是cat并不是一个标准的全链路系统,全链路系统参考dapper的论文,业内比较知名的鹰眼,zipkin等,其实经常拿cat和这类系统进行比较其实是不合适的。cat的logview在异步线程等等一些场景下,其实不合适,cat本身模型并不适合这个。在美团点评内部,有mtrace专门做全链路分析。
下面是本人的安装环境,仅供参考:
操作系统:centos7.9
jdk:1.8
tomcat:9.0.50
mariadb:10.4.11
cat:3.0.0
需要提前安装好jdk1.8的环境,tomcat环境,已经mysql环境,在此不进行多讲,有问题的伙伴可以百度自行解决。
需要准备cat的包文件,有以下两种方式获得:
该方式比较复杂,需要git下载cat的源码,然后进行maven构建成包文件,然后进行部署,有开发需求的人可以进行此操作。
需要先按照git环境和maven环境。(点击以下链接进行查看)
安装git和maven环境链接
git下载cat的最新源码
git clone https://github.com/dianping/cat.git
进入到cat文件中进行构建
mvn install -Dmaven.test.skip
本人在构建过程中遇到了插件的问题,摸索半天也没有成功解决,所以就使用了官网的war包进行直接部署。
可以选择适合自己的包文件进行下载。
http://unidal.org/nexus/service/local/repositories/releases/content/com/dianping/cat/cat-home/3.0.0/
由于cat环境的默认地址在/data下,所以需要先创建目录。
mkdir /data/appdatas/cat/ -P #创建数据目录
mkdir /data/applogs/ -P #创建日志目录
chmod 777 /data/* #赋予权限
在/data/appdatas/cat/目录下创建配置文件,client.xml,datasources.xml,server.xml这三个
vim /data/appdatas/cat/client.xml
#ip为客户端实体ip,prot端口是cat传输数据的默认端口,http-port端口是Java服务部署的端口
vim /data/appdatas/cat/datasources.xml
3
1s
10m
1000
com.mysql.jdbc.Driver
root
root
vim /data/appdatas/cat/server.xml
127.0.0.1:8080
cat的数据库结构在git中有涉及,可以根据提供的sql文件,创建表结构
git地址:https://github.com/dianping/cat
mysql -uroot -p #进入数据库中
create database cat; #创建cat库
use cat; #进入到cat库中
source /opt/CatApplication.sql #导入表文件
将之前下载的cat-home-3.0.0.war重命名为cat.war,并移动到tomcat的webapps下。
启动tomcat服务,cat服务就已经成功部署。
浏览器访问服务,发现已经可以正常访问cat的页面。
cat的默认账号密码是admin/admin
初次部署后,需要对cat进行相对应的配置,否则打开报表页面,全是500的报错提示,需要配置后才能正常显示。
然后就发现报表可以正常访问了,小伙伴们可以看下cat强大的报表功能。
CAT 支持的监控消息类型包括:
Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。
Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小。
Heartbeat 表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。
Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟。
Trace 用于记录基本的trace信息,类似于log4j的info信息,这些信息仅用于查看一些相关信息
以上为本人实际搭建过程中的经验总结,如果有什么问题,可以在评论区留言,大家一起探讨进步!