CAT(Central Application Tracking)是基于Java开发的实时应用监控平台,包括实时应用监控,业务监控。关于CAT的具体介绍可移步到CAT官网进行查阅。
1. 环境清单
CentOS 7
Java 8
Maven 3.5
MySQL 5.7
CAT 2.0.0
Tomcat 7.0
2. 安装 CAT
下载CAT
安装包:
1 | # wget -O cat-home-2.0.0.war http://unidal.org/nexus/service/local/repositories/releases/content/com/dianping/cat/cat-home/2.0.0/cat-home-2.0.0.war |
将 cat-home-2.0.0.war
部署到 Tomcat
并重命名为 cat.war
:
1 | $ mv cat -home-2.0.0.war tomcat-7.0.90 /webapps/cat .war |
2.1 配置 CAT
在Linux系统安装时,CAT
应用要求对/data/appdatas/cat
和/data/applogs/cat
路径有读写权限。
1 | # mkdir -p /data/appdatas/cat && mkdir -p /data/applogs/cat |
CAT
服务端应用会对这两个目录进行读写操作,因此需要首先创建这两个目录。并且应确保启动CAT
应用的用户对这两个目录有读写权限。
下载CAT
的源码包:
1 | $ wget -O cat -2.0.0. tar .gz https: //codeload .github.com /dianping/cat/tar .gz /v2 .0.0 |
解压缩:
1 | # tar zxvf cat-2.0.0.tar.gz |
解压缩完成后得到cat-2.0.0
目录。其中cat-2.0.0/script
目录中存放的是CAT
客户端和服务端安装所需的一些配置文件:
![](http://incdn1.b0.upaiyun.com/2018/10/e0dda9f7019d410367b72a46fbd2d965.png)
将 cat-2.0.0/script
目录中的 client.xml
、datasources.xml
、server.xml
配置文件复制到目录 /data/appdatas/cat
中:
1 | $ cp client.xml server.xml datasources.xml /data/appdatas/cat/ |
客户端 client.xml
的配置内容如下:
1 2 3 4 5 6 7 8 9 10 | <? xml version = "1.0" encoding = "utf-8" ?> < config mode = "client" xmlns:xsi = "http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation = "config.xsd" > < servers > <!-- ip:部署CAT应用的服务器IP port:CAT服务端接收客户端数据的端口(不允许更改) http-port:CAT应用部署到的容器的端口(tomcat的端口) --> < server ip = "10.10.10.121" port = "2280" http-port = "8080" /> </ servers > </ config > |
服务端 server.xml
的配置内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <? xml version = "1.0" encoding = "utf-8" ?> <!-- local-mode:是否为本地开发模式。建议在开发环境以及生产环境都设置为false hdfs-machine:是否启用HDFS存储 job-machine:是否为报告工作机(开启生成汇总报告和统计报告,只需要一台服务机开启此功能) alert-machine:是否为报警机(开启各类报警监听, 只需要一台服务机开启此功能) --> < config local-mode = "false" hdfs-machine = "false" job-machine = "true" alert-machine = "false" > <!-- local-base-dir:本地数据存储目录, 建议不要修改 local-report-storage-time:本地报告文件存放时长, 单位为(天) local-logivew-storage-time:本地日志文件存放时长, 单位为(天) --> < storage local-base-dir = "/data/appdatas/cat/bucket/" local-report-storage-time = "7" local-logivew-storage-time = "7" /> < console default-domain = "Cat" show-cat-domain = "true" > <!-- 远程服务端HTTP服务列表, 用于同步更新 --> < remote-servers >10.10.10.121:8080</ remote-servers > </ console > </ config > |
数据源 datasources.xml
的配置内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <? xml version = "1.0" encoding = "utf-8" ?> < data-sources > < data-source id = "cat" > < maximum-pool-size >8</ maximum-pool-size > < connection-timeout >3s</ connection-timeout > < idle-timeout >10m</ idle-timeout > < statement-cache-size >1000</ statement-cache-size > < properties > < driver >com.mysql.jdbc.Driver</ driver > <!-- 数据库 --> < url > <![CDATA[jdbc:mysql://10.10.10.121:3306/cat_schema]]> </ url > <!-- 用户名 --> < user >root</ user > <!-- 密码 --> < password >123654</ password > < connectionProperties > <![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]> </ connectionProperties > </ properties > </ data-source > < data-source id = "app" > < maximum-pool-size >8</ maximum-pool-size > < connection-timeout >3s</ connection-timeout > < idle-timeout >10m</ idle-timeout > < statement-cache-size >1000</ statement-cache-size > < properties > < driver >com.mysql.jdbc.Driver</ driver > <!-- 数据库 --> < url > <![CDATA[jdbc:mysql://10.10.10.121:3306/cat_schema]]> </ url > <!-- 用户名 --> < user >root</ user > <!-- 密码 --> < password >123654</ password > < connectionProperties > <![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]> </ connectionProperties > </ properties > </ data-source > </ data-sources > |
创建 cat_schema
数据库:
1 | CREATE DATABASE IF NOT EXISTS cat_schema DEFAULT CHARSET utf8 COLLATE utf8_general_ci |
选择数据库 cat_schema
:
导入 Cat.sql
到 cat_schema
数据库:
1 | SOURCE /home/fanlychie/cat-2.0.0/script/Cat.sql |
编辑 Tomcat
配置文件:
1 | $ vim tomcat-7.0.90 /conf/server .xml |
找到 Connector
的配置行,添加 URIEncoding="utf-8"
。如下:
1 2 3 4 | < Connector port = "8080" protocol = "HTTP/1.1" connectionTimeout = "20000" redirectPort = "8443" URIEncoding = "utf-8" /> |
2.2 启动 CAT
启动 Tomcat
:
1 | $ . /tomcat-7 .0.90 /bin/startup .sh |
访问:http://10.10.10.121:8080/cat
![](http://incdn1.b0.upaiyun.com/2018/10/e0a70e585f657b7997d77deabc7e3567-1024x396.png)
配置操作需要用户登入系统,每次的登录账户名和密码保持一致即可。如 catadmin/catadmin
。
2.3 客户端路由设置
依次打开配置 --> 全局告警配置 --> 客户端路由
修改id
为CAT
部署的服务器 IP:
![](http://incdn1.b0.upaiyun.com/2018/10/12e1a9262c266d5fa133d45eda2726e5.png)
3. 集群搭建
上面介绍的是 CAT
应用的单点模式部署。接下来介绍 CAT
的集群模式搭建方式。
3.1 部署概览
![](http://incdn1.b0.upaiyun.com/2018/10/4433a82444c26d9d08e38057db944e97.png)
10.10.10.121
作为前端控制台,如果使用了域名,只需将域名解析到此IP
地址。
按以上搭建单点模式的方式,分别在 10.10.10.121
、10.10.10.122
、10.10.10.123
部署 CAT
。部署完成后,先不要启动 Tomcat
。接下来做集群配置。
3.2 客户端client.xml配置
10.10.10.121
、10.10.10.122
、10.10.10.123
的 client.xml
配置一样,具体如下:
1 2 3 4 5 6 7 8 9 10 11 12 | <? xml version = "1.0" encoding = "utf-8" ?> < config mode = "client" xmlns:xsi = "http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation = "config.xsd" > < servers > <!-- ip:部署CAT应用的服务器IP port:CAT服务端接收客户端数据的端口(不允许更改) http-port:CAT应用部署到的容器的端口(tomcat的端口) --> < server ip = "10.10.10.121" port = "2280" http-port = "8080" /> < server ip = "10.10.10.122" port = "2280" http-port = "8080" /> < server ip = "10.10.10.123" port = "2280" http-port = "8080" /> </ servers > </ config > |
3.3 服务端server.xml配置
10.10.10.121
的 server.xml
配置,具体如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <? xml version = "1.0" encoding = "utf-8" ?> <!-- local-mode:是否为本地开发模式。建议在开发环境以及生产环境都设置为false hdfs-machine:是否启用HDFS存储 job-machine:是否为报告工作机(开启生成汇总报告和统计报告,只需要一台服务机开启此功能) alert-machine:是否为报警机(开启各类报警监听, 只需要一台服务机开启此功能) --> < config local-mode = "false" hdfs-machine = "false" job-machine = "true" alert-machine = "true" > <!-- local-base-dir:本地数据存储目录, 建议不要修改 local-report-storage-time:本地报告文件存放时长, 单位为(天) local-logivew-storage-time:本地日志文件存放时长, 单位为(天) --> < storage local-base-dir = "/data/appdatas/cat/bucket/" local-report-storage-time = "7" local-logivew-storage-time = "7" /> < console default-domain = "Cat" show-cat-domain = "true" > <!-- 远程服务端HTTP服务列表, 用于同步更新 --> < remote-servers >10.10.10.121:8080,10.10.10.122:8080,10.10.10.123:8080</ remote-servers > </ console > </ config > |
10.10.10.122
、10.10.10.123
的 server.xml
配置一样,具体如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <? xml version = "1.0" encoding = "utf-8" ?> <!-- local-mode:是否为本地开发模式。建议在开发环境以及生产环境都设置为false hdfs-machine:是否启用HDFS存储 job-machine:是否为报告工作机(开启生成汇总报告和统计报告,只需要一台服务机开启此功能) alert-machine:是否为报警机(开启各类报警监听, 只需要一台服务机开启此功能) --> < config local-mode = "false" hdfs-machine = "false" job-machine = "false" alert-machine = "false" > <!-- local-base-dir:本地数据存储目录, 建议不要修改 local-report-storage-time:本地报告文件存放时长, 单位为(天) local-logivew-storage-time:本地日志文件存放时长, 单位为(天) --> < storage local-base-dir = "/data/appdatas/cat/bucket/" local-report-storage-time = "7" local-logivew-storage-time = "7" /> < console default-domain = "Cat" show-cat-domain = "true" > <!-- 远程服务端HTTP服务列表, 用于同步更新 --> < remote-servers >10.10.10.121:8080,10.10.10.122:8080,10.10.10.123:8080</ remote-servers > </ console > </ config > |
服务端 server.xml
的配置主要是 job-machine
和 alert-machine
属性值配置的不同。
3.4 启动 CAT
分别启动 10.10.10.121
、10.10.10.122
、10.10.10.123
的 Tomcat
1 | $ . /tomcat-7 .0.90 /bin/startup .sh |
10.10.10.121
作为控制台服务,只需访问:http://10.10.10.121:8080/cat
![](http://incdn1.b0.upaiyun.com/2018/10/0908e662eaf7be1e74503da9d8bae7f8-1024x575.png)
3.5 客户端路由设置
10.10.10.121
作为控制台服务,只需配置这台即可。
依次打开配置 --> 全局告警配置 --> 客户端路由
修改 id
为 CAT
部署的服务器 IP:
![](http://incdn1.b0.upaiyun.com/2018/10/e2b8754c7ee07231f9fb94300cb2da2d.png)
其中10.10.10.121
作为备份,正常情况下不作为消费机(即不起消费数据的作用),仅当 CAT
集群中的其它节点(如这里的10.10.10.122
、10.10.10.123
节点)都挂掉之后才会对数据进行消费。
该配置会自动同步到CAT
集群中的其它节点(如这里的10.10.10.122
、10.10.10.123
节点)。
配置完成后,重启 10.10.10.121
服务器的 CAT
应用容器(即重启 Tomcat
)。