Cat入门
Dianping CAT 安装说明文档
CAT基于Java开发的实时应用监控平台,包括实时应用监控,业务监控。
CAT支持的监控消息类型包括:
- Transaction 适合记录跨越系统边界的程序访问行为,比如远程调用,数据库调用,也适合执行时间较长的业务逻辑监控,Transaction用来记录一段代码的执行时间和次数。
- Event 用来记录一件事发生的次数,比如记录系统异常,它和transaction相比缺少了时间的统计,开销比transaction要小。
- Heartbeat 表示程序内定期产生的统计信息, 如CPU%, MEM%, 连接池状态, 系统负载等。
- Metric 用于记录业务指标、指标可能包含对一个指标记录次数、记录平均值、记录总和,业务指标最低统计粒度为1分钟。
- Trace 用于记录基本的trace信息,类似于log4j的info信息,这些信息仅用于查看一些相关信息
消息树
CAT监控系统将每次URL、Service的请求内部执行情况都封装为一个完整的消息树、消息树可能包括Transaction、Event、Heartbeat、Metric和Trace信息。
完整的消息树
Alt text可视化消息树
Alt text
分布式消息树【一台机器调用另外一台机器】
Alt textRequirements
- Linux 2.6以及之上(2.6内核才可以支持epoll),Mac以及Windows环境可以作为开发环境
- Java 6,7,8
- Maven 3.2.3+
- MySQL 5.6
我司的环境配置如下
Distributor ID: CentOS
Description: CentOS release 6.5 (Final)
Release: 6.5
Codename: Final
Server version: Apache Tomcat/8.0.30
Server built: Dec 1 2015 22:30:46 UTC
Server number: 8.0.30.0
OS Name: Linux
OS Version: 2.6.32-431.el6.x86_64
Architecture: amd64
JVM Version: 1.8.0_111-b14
JVM Vendor: Oracle Corporation
Maven 3.3.3
Mysql 5.6
Quick Started
1、在CAT目录下,用maven构建项目
mvn clean install -DskipTests
如果下载有问题,可以尝试翻墙后下载,可以 git clone git@github.com:dianping/cat.git mvn-repo 下载到本地,这个分支是cat编译需要的依赖的一些jar ,将这些jar放入本地的maven仓库文件夹中。
2、配置CAT的环境
mvn cat:install
Note:
- Linux\Mac 需要对/data/appdatas/cat和/data/applogs/cat有读写权限
- Windows 则是对系统运行盘下的/data/appdatas/cat和/data/applogs/cat有读写权限,如果cat服务运行在e盘的tomcat中,则需要对e:/data/appdatas/cat和e:/data/applogs/cat有读写权限
此步骤是配置一些cat启动需要的基本数据库配置
3、(Optional)如果安装了hadoop集群,需到/data/appdatas/cat/server.xml中配置对应hadoop信息。将localmode设置为false,默认情况下,CAT在开发模式(localmode=true)下工作。
4、启动的cat单机版本基本步骤
- 检查下/data/appdatas/cat/ 下面需要的几个配置文件,配置文件在源码script 。
- 在cat目录下执行 mvn install -DskipTests 。
- cat-home打包出来的war包,重新命名为cat.war, 并放入tomcat的webapps 。
- 启动tomcat
- 访问 http://localhost:8080/cat/r
- 具体详细的还可以参考 http://unidal.org/cat/r/home?op=view&docName=deploy
5、遇到jar不能下载的情况
- cat jar在cat的mvn-repo分支下,可以download到本地,在copy至本地的仓库目录
- git clone https://github.com/dianping/cat.git
- cd cat
- git checkout mvn-repo
- cp -R * ~/.m2/repository
6、导入eclipse发现找不到类
- 请先执行mvn eclipse:eclipse 会自动生成相关的类文件
- 作为普通项目导入eclipse,不要用作为maven项目导入eclipse
附录:
系统要求
1. 操作系统及硬件环境
监听端:
- 根据业务系统需求确定
服务端:
- 内存 4G 以上
- 硬盘 100G 以上
- 操作系统 Windows或Linux操作系统(建议选用Linux操作系统)
2. 运行环境
- Java 7 以上
- Web 应用服务器,如:Apache Tomcat、JBoss Application Server、WebSphere Application Server、WebLogic Application Server(可选项,内置Netty应用服务器)
- MySQL 数据库
- Maven 3 以上(只编译和安装时需要)
注意:安装时需要拥有计算机管理员权限。
3. 网络环境
要求连接到互联网或通过代理上网。
安装包文件清单
-
[Java JDK]
-
[Apache Tomcat]
-
[MySQL]
-
[Maven]
-
[dianping CAT]
安装操作
1、 编译源码,构建war包
- 前提条件
- 已安装、配置JDK;
- 已安装、配置MAVEN;
- 已下载CAT源码;
- 操作步骤
-
进入监控系统源码的cat目录
cd /source/cat
-
显示确认目录结构
dir
-
运行 MAVEN 打包安装命令
mvn clean install -DskipTests
-
执行完成后,
- 编译构造好的 war 安装到 Maven 仓库中。
2、自动创建库表、配置文件
- 前提条件
- CAT 安装包已构建
- /data/appdatas/cat/ 目录有读写权限
- 操作步骤
-
运行 CAT 安装插件命令
maven cat:install
-
按提示输入数据库配置参数
数据库配置 -
执行完成后,
-
数据库中创建cat表空间,并创建所有表结构;
-
在/data/appdatas/cat/目录中,生成三个配置文件:client.xml、server.xml、datasources.xml(windows系统中,/data目录与源码目录在一个系统盘)
-
补充说明
此部分操作,可手工完成,安装MySQL好数据库后,
-
登录MySQL,创建cat表空间
create database cat
-
执行监控系统源码/source/cat/script/Cat.sql脚本完成表结构的创建
source /source/cat/script/Cat.sql
- 拷贝监控系统源码/source/cat/script/目录下的client.xml、server.xml、datasources.xml到/data/appdatas/cat/目录中
cp /source/cat/script/*.xml /data/appdatas/cat/
-
3、修改监控系统CAT服务配置
安装创建的配置信息都是默认值,需要按实际情况修改,整个系统才可正常运行。
几项假设
-
cat.war 包部署在10.8.40.26、10.8.40.27、10.8.40.28三台机器上,10.8.40.26为三台机器中的主服务器,TCP端口只能局域网内访问;
-
web应用服务器采用 Tomcat 8;
-
数据库采用 MySQL 5.6 ,安装在10.8.40.147上;
-
暂不启用HDFS存储服务;
-
暂不启用LDAP服务;
-
前提条件
- CAT 安装包已构建
- 数据库和表结构已创建
- /data/appdatas/cat/ 目录下的配置文件已生成
- 操作步骤
- 修改客户端配置文件
打开/data/appdatas/cat/client.xml客户端配置文件,
<config mode="client"
xmlns:xsi="http://www.w3.org/2001/XMLSchema"
xsi:noNamespaceSchemaLocation="config.xsd">
<servers>
<server ip="10.8.40.26" port="2280" http-port="8080" />
<server ip="10.8.40.27" port="2280" http-port="8080" />
<server ip="10.8.40.28" port="2280" http-port="8080" />
</servers>
</config>
配置说明:
- mode : 定义配置模式,固定值为client;--暂未使用
- servers : 定义多个服务端信息;
- server : 定义某个服务端信息;
- ip : 配置服务端(cat-home)对外IP地址
- port : 配置服务端(cat-home)对外TCP协议开启端口,固定值为2280;
- http-port : 配置服务端(cat-home)对外HTTP协议开启端口, 如:tomcat默认是8080端口,若未指定,默认为8080端口;
- 修改数据库配置
打开/data/appdatas/cat/datasources.xml数据库配置文件,
<data-sources>
<data-source id="cat">
<maximum-pool-size>3</maximum-pool-size>
<connection-timeout>1s</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.8.40.147:3306/cat]]></url>
<user>root</user>
<password>mysql</password>
<connectionProperties>
<![CDATA[useUnicode=true&autoReconnect=true]]>
</connectionProperties>
</properties>
</data-source>
<data-source id="app">
<maximum-pool-size>3</maximum-pool-size>
<connection-timeout>1s</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.8.40.147:3306/cat]]></url>
<user>root</user>
<password>mysql</password>
<connectionProperties>
<![CDATA[useUnicode=true&autoReconnect=true]]>
</connectionProperties>
</properties>
</data-source>
</data-sources>
配置说明:
- 生成配置文件时,输入的数据库连接信息已写入此文件,如不换数据库,不用做任何修改
- 主要修改项为:url(数据库连接地址)、user(数据库用户名)、password(数据用户登录密码)
- 修改服务端服务配置
打开/data/appdatas/cat/server.xml服务端服务配置文件,
<config local-mode="false" hdfs-machine="false" job-machine="true" alert-machine="true">
<storage local-base-dir="/data/appdatas/cat/bucket/" max-hdfs-storage-time="15" local-report-storage-time="7" local-logivew-storage-time="7">
<hdfs id="logview" max-size="128M" server-uri="hdfs://10.8.40.31/user/cat" base-dir="logview"/>
<hdfs id="dump" max-size="128M" server-uri="hdfs://10.8.40.32/user/cat" base-dir="dump"/>
<hdfs id="remote" max-size="128M" server-uri="hdfs://10.8.40.33/user/cat" base-dir="remote"/>
</storage>
<console default-domain="Cat" show-cat-domain="true">
<remote-servers>10.8.40.26:8080,10.8.40.27:8080,10.8.40.28:8080</remote-servers>
</console>
<ldap ldapUrl="ldap://10.8.40.21:389/DC=dianpingoa,DC=com"/>
</config>
配置说明:
- 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服务地址(这个可以忽略)
-
发布启动 cat-home 服务
-
拷贝监控系统源码/source/cat/cat-home/target/目录下的cat-alpha-1.3.3.war到web应用服务器的发布目录(如:/webapps/),并修改war包名称为cat.war
`cp /source/cat/cat-home/cat-alpha-1.4.0.war /usr/local/tomcat7/webapps/cat.war`
- 启动应用服务器
cd /usr/local/tomcat8/bin/
./startup.sh
-
登入 cat-home 系统,修改路由配置
打开浏览器,输入http://10.8.40.26:8080/cat/
cat-route.jpg选择 配置-->全局警告配置-->客户端路由,或者在浏览器地址栏中直接输入http:/10.8.40.26:8080/cat/s/config?op=routerConfigUpdate,打开客户端路由配置界面。
- 把backup-server设置为当前服务器对外IP地址,端口固定为2280;
- default-server定义可跳转的路由地址,可以设置多个。default-server的id属性配置可路由的cat-home服务IP地址,端口固定为2280;若需要禁用路由地址,可把enable设置为false。
- 点击“提交”按钮,保存修改的路由配置
-
复制配置到27、28两机器
* 拷贝 10.8.40.26机器/data/appdatas/cat/目录中client.xml、server.xml、datasources.xml三个配置文件到27、28两机器相同目录中
- 修改server.xml配置中的 job-machine 和 alert-machine属性,都设置为false,禁用生成报告和报警功能,只开启监听功能
- 启动27、28上的Tomcat,开启cat服务,完成服务端的配置及启动
(若服务端只分配一台服务器,按10.8.40.26完成安装配置即可)
CAT 配置文件加载说明
===
背景说明
CAT监控系统由多个组件组成
- cat-home.war : 服务端组件,负责收集监控信息,分析处理生成报告、作出警告
- cat-client.jar : 客户端组件,负责与服务端进行连接通信,
- cat-core.jar : 核心处理组件,负责具体的与客户端通信服务,解析数据、输出报告
- cat-consumer.jar : 消费处理组件,负责实际的监控数据分析,处理工作
- cat-hadoop.jar : HDFS存储组件
配置文件清单说明
cat-home.war 外部配置文件
cat-home.war 有三个外部配置文件,分别是:
-
/data/appdatas/cat/client.xml,
-
配置连接(其它)服务端的信息,如IP地址、tcp端口、http端口
-
/data/appdatas/cat/server.xml,
-
定义服务端启用服务;
-
数据存储方式、策略及存储配置信息;
-
服务端服务群信息(如服务器的IP地址、tcp端口、http端口、服务的权重、服务配置状态)
-
/data/appdatas/cat/datasources.xml,
-
配置服务端连接数据库的信息
cat-home.war 内置配置文件
-
cat-home.war!/WEB-INF/web.xml
-
web应用默认配置文件
-
cat-home.war!/WEB-INF/classes/META-INF/app.properties
-
首选的应用特征信息配置文件,默认内容为:app.name=cat
-
cat-home.war!/WEB-INF/classes/META-INF/cat/client.xml
-
次选的应用特征信息配置文件
-
cat-home.war!/WEB-INF/classes/META-INF/plexus/components.xml
-
plexus类容器加载类定义的配置文件,
配置文件加载流程
cat-home.war配置文件加载
-
Web容器加载web.xml;
cat-home.war!/WEB-INF/web.xml
-
plexus类容器加载components.xml;
cat-home.war!/WEB-INF/classes/META-INF/plexus/components.xml
-
在CatHomeModule类中,ServerConfigManager加载server.xml
/data/appdatas/cat/server.xml
运行期内同步服务端的配置信息
在ChannelManager类中,
- 每10秒钟会检测一次服务端对外服务配置信息是否变化(获取服务端的路由信息);
- 若配置信息有变化,重新创建与服务端的通信通道