1 github源码下载
要安装CAT,首先需要从github上下载最新版本的源码。
官方给出的建议如下:
- 注意cat的3.0代码分支更新都发布在master上,包括最新文档也都是这个分支
- 注意文档请用最新master里面的代码文档作为标准,一些开源网站上面一些老版本的一些配置包括数据库等可能遇到不兼容情况,请以master代码为准,这份文档都是美团点评内部同学为这个版本统一整理汇总。内部同学已经核对,包括也验证过,如果遇到一些看不懂,或者模糊的地方,欢迎提交PR。
所以本次学习中将会使用master分支的3.0版本。CAT的官方github地址:
https://github.com/dianping/cat/tree/master
打开页面之后,进行如下操作:
也可以在git bash控制台使用命令进行下载:
git clone https://github.com/dianping/cat.git
2 模块介绍
- cat-client: 客户端,上报监控数据
- cat-consumer: 服务端,收集监控数据进行统计分析,构建丰富的统计报表
- cat-alarm: 实时告警,提供报表指标的监控告警
- cat-hadoop: 数据存储,logview 存储至 Hdfs
- cat-home: 管理端,报表展示、配置管理等
3 服务端安装
CAT服务端的环境要求如下:
- Linux 2.6以及之上(2.6内核才可以支持epoll),线上服务端部署请使用Linux环境,Mac以及
- Windows环境可以作为开发环境,美团点评内部CentOS 6.5
- Java 6,7,8,服务端推荐使用jdk7的版本,客户端jdk6、7、8都支持
- Maven 3及以上
- MySQL 5.6,5.7,更高版本MySQL都不建议使用,不清楚兼容性
- J2EE容器建议使用tomcat,建议使用推荐版本7..或8.0.*
- Hadoop环境可选,一般建议规模较小的公司直接使用磁盘模式,可以申请CAT服务端,500GB磁盘或者更大磁盘,这个磁盘挂载在/data/目录上
数据库安装
数据库的脚本文件 script/CatApplication.sql
mysql -uroot -Dcat < CatApplication.sql
说明:
数据库编码使用utf8mb4,否则可能造成中文乱码等问题
应用打包
- 源码构建
- 在cat的源码目录,执行 mvn clean install -DskipTests
- 如果发现cat的war打包不通过,CAT所需要依赖jar都部署在 http://unidal.org/nexus/
- 可以配置这个公有云的仓库地址到本地Maven配置(一般为~/.m2/settings.xml),理论上不需要配置即可,可以参考cat的pom.xml配置:
<repositories><repository><id>central</id><name>Maven2 Central Repository</name><layout>default</layout><url>http://repo1.maven.org/maven2</url></repository><repository><id>unidal.releases</id><url>http://unidal.org/nexus/content/repositories/releases/</url></repository>
</repositories>
- 官方下载
1. 如果自行打包仍然问题,请使用下面链接进行下载:
http://unidal.org/nexus/service/local/repositories/releases/content/com/dianping/cat/cat-home/3.0.0/cat-home-3.0.0.war
2. 官方的cat的master版本, 重命名为cat.war进行部署,注意此war是用jdk8,服务端请使用jdk8版本
3.1 linux源码安装
使用资料中提供的虚拟机打开,输入对应的账号和密码: root/itcast。
查看IP地址
使用命令查看当前虚拟机的IP地址:
ip addr
我当前虚拟机的IP地址为192.168.222.153。
程序对于/data/目录具体读写权限
- 要求/data/目录能进行读写操作,如果/data/目录不能写,建议使用linux的软链接链接到一个固定可写的目录。所有的客户端集成程序的机器以及CAT服务端机器都需要进行这个权限初始化。(可以通过公司运维工具统一处理)
- 此目录会存一些CAT必要的配置文件以及运行时候的数据存储目录。
- CAT支持CAT_HOME环境变量,可以通过JVM参数修改默认的路径。
mkdir /data
chmod -R 777 /data/
配置/data/appdatas/cat/client.xml ($CAT_HOME/client.xml)
mkdir -p /data/appdatas/cat
cd /data/appdatas/cat
vi client.xml
编写程序运行盘下的/data/appdatas/cat/client.xml,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<config mode="client"><servers><!--下面的IP地址替换为主机的IP地址--><server ip="192.168.222.153" port="2280" http-port="8080"/></servers>
</config>
配置/data/appdatas/cat/datasources.xml($CAT_HOME/datasources.xml)
vi datasources.xml
<?xml version="1.0" encoding="utf-8"?>
<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://192.168.222.132:3306/cat]]></url> <!-- 请替换为真实数据库URL及Port --><user>root</user> <!-- 请替换为真实数据库用户名 --><password>123456</password> <!-- 请替换为真实数据库密码 --><connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties></properties></data-source>
</data-sources>
安装mysql
虚拟机上已经使用docker安装了mysql,直接启动即可。
docker start mysql
使用sqlyog等工具测试连接,账号密码root/123456,端口号为3306。
创建数据库,导入sql脚本
导入cat\script\CatApplication.sql初始化脚本。
安装tomcat
虚拟机中已经安装了对应tomcat并且上传了cat的war包,目录位置:
/root/deploy/apache-tomcat-8.5.50/webapps
以下操作已完成:
修改中文乱码 tomcat conf 目录下 server.xml
<Connector port="8080" protocol="HTTP/1.1" URIEncoding="utf-8" connectionTimeout="20000" redirectPort="8443" /> <!-- 增加 URIEncoding="utf-8" -->
启动tomcat:
cd /root/deploy/apache-tomcat-8.5.50/bin./startup.sh
服务端配置
配置链接:http://192.168.222.153:8080/cat/s/config?op=serverConfigUpdate
输入账号密码admin/admin进行登录
以下所有IP地址为127.0.0.1内容,均修改为实际的IP地址!
输入以下内容:
<?xml version="1.0" encoding="utf-8"?>
<server-config><server id="default"><properties><property name="local-mode" value="false"/><property name="job-machine" value="false"/><property name="send-machine" value="false"/><property name="alarm-machine" value="false"/><property name="hdfs-enabled" value="false"/><property name="remote-servers" value="192.168.222.153:8080"/></properties><storage local-base-dir="/data/appdatas/cat/bucket/" max-hdfs-storage-time="15" local-report-storage-time="2" local-logivew-storage-time="1" har-mode="true" upload-thread="5"><hdfs id="dump" max-size="128M" server-uri="hdfs://192.168.222.153/" base-dir="/user/cat/dump"/><harfs id="dump" max-size="128M" server-uri="har://192.168.222.153/" base-dir="/user/cat/dump"/><properties><property name="hadoop.security.authentication" value="false"/><property name="dfs.namenode.kerberos.principal" value="hadoop/dev80.hadoop@testserver.com"/><property name="dfs.cat.kerberos.principal" value="cat@testserver.com"/><property name="dfs.cat.keytab.file" value="/data/appdatas/cat/cat.keytab"/><property name="java.security.krb5.realm" value="value1"/><property name="java.security.krb5.kdc" value="value2"/></properties></storage><consumer><long-config default-url-threshold="1000" default-sql-threshold="100" default-service-threshold="50"><domain name="cat" url-threshold="500" sql-threshold="500"/><domain name="OpenPlatformWeb" url-threshold="100" sql-threshold="500"/></long-config></consumer></server><server id="192.168.222.153"><properties><property name="job-machine" value="true"/><property name="send-machine" value="true"/><property name="alarm-machine" value="true"/></properties></server>
</server-config>
配置链接:http://192.168.222.153:8080/cat/s/config?op=routerConfigUpdate
<?xml version="1.0" encoding="utf-8"?>
<router-config backup-server="192.168.222.153" backup-server-port="2280"><default-server id="192.168.222.153" weight="1.0" port="2280" enable="true"/><network-policy id="default" title="默认" block="false" server-group="default_group"></network-policy><server-group id="default_group" title="default-group"><group-server id="192.168.222.153"/></server-group><domain id="cat"><group id="default"><server id="192.168.222.153" port="2280" weight="1.0"/></group></domain>
</router-config>
完成。