一、CAT簡(jiǎn)介

CAT
CAT(Central Application Tracking),是美團(tuán)點(diǎn)評(píng)基于 JAVA 開發(fā)的一套開源的分布式實(shí)時(shí)監(jiān)控系統(tǒng)。美團(tuán)點(diǎn)評(píng)基礎(chǔ)架構(gòu)部希望在基礎(chǔ)存儲(chǔ)、高性能通信、大規(guī)模在線訪問、服務(wù)治理、實(shí)時(shí)監(jiān)控、容器化及集群智能調(diào)度等領(lǐng)域提供業(yè)界領(lǐng)先的、統(tǒng)一的解決方案,CAT 目前在美團(tuán)點(diǎn)評(píng)的產(chǎn)品定位是應(yīng)用層的統(tǒng)一監(jiān)控組件,在中間件(RPC、數(shù)據(jù)庫(kù)、緩存、MQ 等)框架中得到廣泛應(yīng)用,為各業(yè)務(wù)線提供系統(tǒng)的性能指標(biāo)、健康狀況、實(shí)時(shí)告警等服務(wù)。
二、部署環(huán)境
- windows 7
- CAT 3.0
- Java 8
- Tomcat 8.5
- Maven 3
- MySQL 5.7
- 內(nèi)網(wǎng)IP:192.168.1.111
三、開始部署
1.下載CAT源碼
git clone https://github.com/dianping/cat.git
2.初始化數(shù)據(jù)庫(kù)
在MySQL中創(chuàng)建cat數(shù)據(jù)庫(kù),然后執(zhí)行script/Cat.sql中的SQL語句。
3.創(chuàng)建配置文件
在Tomcat所在的盤中創(chuàng)建/data/appdatas/cat文件夾,然后創(chuàng)建
/data/appdatas/cat/client.xml文件,寫入如下內(nèi)容:
<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
<servers>
<server ip="192.168.1.111" port="2280" http-port="8080"/>
</servers>
</config>
其中,192.168.1.111改為你電腦的內(nèi)網(wǎng)IP,2280是默認(rèn)的CAT服務(wù)端接受數(shù)據(jù)的端口,不允許修改,http-port是Tomcat啟動(dòng)的端口,默認(rèn)是8080,建議使用默認(rèn)端口。
再創(chuàng)建
/data/appdatas/cat/datasources.xml文件,寫入如下內(nèi)容:
<?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.1.111:3306/cat]]></url> <!-- 請(qǐng)?zhí)鎿Q為真實(shí)數(shù)據(jù)庫(kù)URL及Port -->
<user>root</user> <!-- 請(qǐng)?zhí)鎿Q為真實(shí)數(shù)據(jù)庫(kù)用戶名 -->
<password>root</password> <!-- 請(qǐng)?zhí)鎿Q為真實(shí)數(shù)據(jù)庫(kù)密碼 -->
<connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>
</properties>
</data-source>
</data-sources>
其中,需要替換的有:數(shù)據(jù)庫(kù)IP、port、用戶名和密碼。
4.CAT的war部署
使用Maven構(gòu)建AT的war:
mvn clean install -DskipTests
構(gòu)建成功后,將
cat-home/target/cat-alpha-3.0.0.war重命名為cat.war,復(fù)制到Tomcat的webapps下,啟動(dòng)tomcat。
5.修改路由配置
訪問
http://192.168.1.111:8080/cat/s/config?op=routerConfigUpdate,默認(rèn)用戶名:admin 默認(rèn)密碼:admin,修改客戶端路由配置:
<?xml version="1.0" encoding="utf-8"?>
<router-config backup-server="192.168.1.111" backup-server-port="2280">
<default-server id="192.168.1.111" weight="1.0" port="2280" enable="true"/>
<network-policy id="default" title="默認(rèn)" block="false" server-group="default_group">
</network-policy>
<server-group id="default_group" title="default-group">
<group-server id="192.168.1.111"/>
</server-group>
<domain id="cat">
<group id="default">
<server id="192.168.1.111" port="2280" weight="1.0"/>
</group>
</domain>
</router-config>
配置說明:
- backup-server屬性:設(shè)置為當(dāng)前服務(wù)器對(duì)外IP地址,端口固定為2280
- default-server屬性:定義可跳轉(zhuǎn)的路由地址,可以設(shè)置多個(gè)。default-server的id屬性配置可路由的cat-home服務(wù)IP地址,端口固定為2280;若需要禁用路由地址,可把enable設(shè)置為false
- network-policy 這邊可以配置多個(gè)不同網(wǎng)段,表示這個(gè)網(wǎng)段使用server-group的cat節(jié)點(diǎn),這里面的作用主要是當(dāng)多機(jī)房部署cat的時(shí)候,可以將cat分為多個(gè)多個(gè)子集群,然后多個(gè)子集群處理不同的客戶端,避免跨專線訪問
- domain id=cat 這部分主要是定制路由,當(dāng)發(fā)現(xiàn)一些項(xiàng)目數(shù)據(jù)量特別大,或者其他場(chǎng)景,可以將這些domain的監(jiān)控請(qǐng)求單獨(dú)隔離處理
6.修改服務(wù)端配置
訪問
http://192.168.1.111:8080/cat/s/config?op=serverConfigUpdate,修改服務(wù)端配置:
<?xml version="1.0" encoding="utf-8"?>
<server-config>
<server id="default">
<properties>
<property name="local-mode" value="false"/>
<property name="job-machine" value="true"/>
<property name="send-machine" value="false"/>
<property name="alarm-machine" value="true"/>
<property name="hdfs-enabled" value="false"/>
<property name="remote-servers" value="192.168.1.111: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://127.0.0.1/" base-dir="/user/cat/dump"/>
<harfs id="dump" max-size="128M" server-uri="har://127.0.0.1/" base-dir="/user/cat/dump"/>
<properties>
<property name="hadoop.security.authentication" value="false"/>
<property name="dfs.namenode.kerberos.principal" value="hadoop/[email protected]"/>
<property name="dfs.cat.kerberos.principal" value="[email protected]"/>
<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.1.111">
<properties>
<property name="job-machine" value="true"/>
<property name="send-machine" value="false"/>
<property name="alarm-machine" value="true"/>
</properties>
</server>
</server-config>
配置說明:server節(jié)點(diǎn):代表一臺(tái)機(jī)器的配置。如果id為default,代表默認(rèn)配置;如果id為ip,代表該臺(tái)服務(wù)器的配置
- local-mode : 定義服務(wù)是否為本地模式(開發(fā)模式),在生產(chǎn)環(huán)境時(shí),設(shè)置為false,啟動(dòng)遠(yuǎn)程監(jiān)聽模式。默認(rèn)為 false;
- hdfs-machine : 定義是否啟用HDFS存儲(chǔ)方式,默認(rèn)為 false;
- job-machine : 定義當(dāng)前服務(wù)是否為報(bào)告工作機(jī)(開啟生成匯總報(bào)告和統(tǒng)計(jì)報(bào)告的任務(wù),只需要一臺(tái)服務(wù)機(jī)開啟此功能),默認(rèn)為 false;
- alarm-machine : 定義當(dāng)前服務(wù)是否為報(bào)警機(jī)(開啟各類報(bào)警監(jiān)聽,只需要一臺(tái)服務(wù)機(jī)開啟此功能),默認(rèn)為 false;
- send-machine : 定義當(dāng)前服務(wù)告警是否發(fā)送(當(dāng)時(shí)為了解決測(cè)試環(huán)境開啟告警線程,但是最后告警不通知,此配置后續(xù)會(huì)逐步去除,建議alarm-machine開啟為true的時(shí)候,這個(gè)同步為true)
storage節(jié)點(diǎn): 定義數(shù)據(jù)存儲(chǔ)配置信息
- local-report-storage-time : 定義本地報(bào)告存放時(shí)長(zhǎng),單位為(天)
- local-logivew-storage-time : 定義本地日志存放時(shí)長(zhǎng),單位為(天)
- local-base-dir : 定義本地?cái)?shù)據(jù)存儲(chǔ)目錄
- hdfs : 定義HDFS配置信息,便于直接登錄系統(tǒng)
- server-uri : 定義HDFS服務(wù)地址
- console : 定義服務(wù)控制臺(tái)信息
- remote-servers : 定義HTTP服務(wù)列表,(遠(yuǎn)程監(jiān)聽端同步更新服務(wù)端信息即取此值)
- ldap : 定義LDAP配置信息(這個(gè)可以忽略)
- ldapUrl : 定義LDAP服務(wù)地址(這個(gè)可以忽略)
重新啟動(dòng)Tomcat。
四、驗(yàn)證
訪問
http://192.168.1.111:8080/cat/r,點(diǎn)擊“State”,可以看到“CAT服務(wù)端正常”和CAT一些基本狀態(tài),如下圖:

CAT State
點(diǎn)擊“Transaction”,CAT自身的監(jiān)控信息,如下圖:

Transaction