http://www.itdecent.cn/p/96c3232b9d7e
序——之前一直在美團(tuán)內(nèi)部使用cat,十分便捷,這次單位內(nèi)部要使用,拿來(lái)研究一番。其實(shí)Cat在GitHub上的部署文檔已經(jīng)比較詳細(xì)了
服務(wù)端篇
一、準(zhǔn)備環(huán)境
tomcat
mysql
jdk8
美團(tuán)cat源碼包cat源碼
二、開整
步驟1: 服務(wù)器創(chuàng)建目錄
mkdir/datachmod-R777/data/mkdir-p/data/appdatas/cat/
步驟2: 服務(wù)器創(chuàng)建文件
cd /data/appdatas/cat/vim client.xml
將下列配置復(fù)制到client.xml中
注意: 2280是默認(rèn)的CAT服務(wù)端接受數(shù)據(jù)的端口,不允許修改,http-port是Tomcat啟動(dòng)的端口,默認(rèn)是8080,建議使用默認(rèn)端口
<?xml version="1.0" encoding="utf-8"?><configmode="client"><servers><serverip="10.1.1.1"port="2280"http-port="8080"/><serverip="10.1.1.2"port="2280"http-port="8080"/><serverip="10.1.1.3"port="2280"http-port="8080"/></servers></config>
vim datasources.xml
將下列配置復(fù)制到datasources.xml中,注意修改自己的地址
集群模式每臺(tái)CAT集群10.1.1.1,10.1.1.2,10.1.1.3都需要部署此文件
<?xml version="1.0" encoding="utf-8"?><data-sources><data-sourceid="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://127.0.0.1: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>
步驟3:數(shù)據(jù)庫(kù)配置
創(chuàng)建cat數(shù)據(jù)庫(kù)
注意1:一套獨(dú)立的CAT集群只需要一個(gè)數(shù)據(jù)庫(kù)(之前碰到過(guò)個(gè)別同學(xué)在每臺(tái)cat的服務(wù)端節(jié)點(diǎn)都安裝了一個(gè)數(shù)據(jù)庫(kù))
注意2:數(shù)據(jù)庫(kù)編碼使用utf8mb4,否則可能造成中文亂碼等問(wèn)題
create database cat charset utf8mb4 collate utf8mb4_general_ci;
刷入表信息cat建表語(yǔ)句
步驟4:打war包
源碼打包
在cat的源碼目錄,執(zhí)行mvn clean install -DskipTests
war包下載官方war包下載
注意: 打出來(lái)的jar包重命名為cat.war進(jìn)行部署,此war是用jdk8,服務(wù)端請(qǐng)使用jdk8版本
步驟5:war包部署
將war包扔到10.1.1.1的tomcat的webapps目錄下,啟動(dòng)tomcat即可
訪問(wèn)http://10.1.1.1:8080/cat/s/config?op=routerConfigUpdate
默認(rèn)用戶名:admin
默認(rèn)密碼:admin
繼續(xù)將war包扔到10.1.1.2,10.1.1.3中,啟動(dòng)tomcat
步驟6:服務(wù)器配置
配置鏈接:http://{ip:port}/cat/s/config?op=serverConfigUpdate
說(shuō)明:這個(gè)只需要更新一次,配置是保存在mysql的數(shù)據(jù)庫(kù)里面。
CAT節(jié)點(diǎn)職責(zé)
控制臺(tái) - 提供給業(yè)務(wù)人員進(jìn)行數(shù)據(jù)查看【默認(rèn)所有的cat節(jié)點(diǎn)都可以作為控制臺(tái),不可配置】
消費(fèi)機(jī) - 實(shí)時(shí)接收業(yè)務(wù)數(shù)據(jù),實(shí)時(shí)處理,提供實(shí)時(shí)分析報(bào)表【默認(rèn)所有的cat節(jié)點(diǎn)都可以作為消費(fèi)機(jī),不可配置】
告警端 - 啟動(dòng)告警線程,進(jìn)行規(guī)則匹配,發(fā)送告警(目前僅支持單點(diǎn)部署)【可以配置】
任務(wù)機(jī) - 做一些離線的任務(wù),合并天、周、月等報(bào)表 【可以配置】
集群配置
線上做多集群部署,假設(shè)有10.1.1.1,10.1.1.2,10.1.1.3這三臺(tái)機(jī)器
建議選取一臺(tái)或多臺(tái)機(jī)器負(fù)責(zé)角色有控制臺(tái)、告警端、任務(wù)機(jī),例如10.1.1.1。
配置域名訪問(wèn)CAT,該域名關(guān)聯(lián)至10.1.1.1。
10.1.1.2,10.1.1.3 負(fù)責(zé)消費(fèi)機(jī)處理,這樣能做到有效隔離,任務(wù)機(jī)、告警等問(wèn)題不影響實(shí)時(shí)數(shù)據(jù)處理
remote-servers 這個(gè)一定要配置正確,端口號(hào)為8080,這里面的remote-servers為10.1.1.1:8080,10.1.1.2:8080,10.1.1.3:8080
完成以上步驟,重啟下當(dāng)前CAT節(jié)點(diǎn)
配置的sample如下: id="default"是默認(rèn)的配置信息,server id="10.1.1.1" 如下的配置是表示10.1.1.1這臺(tái)服務(wù)器的節(jié)點(diǎn)配置覆蓋default的配置信息,比如下面的job-machine,alarm-machine,send-machine為true。
<?xml version="1.0" encoding="utf-8"?><server-config><serverid="default"><properties><propertyname="local-mode"value="false"/><propertyname="job-machine"value="false"/><propertyname="send-machine"value="false"/><propertyname="alarm-machine"value="false"/><propertyname="hdfs-enabled"value="false"/><propertyname="remote-servers"value="10.1.1.1:8080,10.1.1.2:8080,10.1.1.3:8080"/></properties><storagelocal-base-dir="/data/appdatas/cat/bucket/"max-hdfs-storage-time="15"local-report-storage-time="7"local-logivew-storage-time="7"><hdfsid="logview"max-size="128M"server-uri="hdfs://10.1.77.86/"base-dir="user/cat/logview"/><hdfsid="dump"max-size="128M"server-uri="hdfs://10.1.77.86/"base-dir="user/cat/dump"/><hdfsid="remote"max-size="128M"server-uri="hdfs://10.1.77.86/"base-dir="user/cat/remote"/></storage><consumer><long-configdefault-url-threshold="1000"default-sql-threshold="100"default-service-threshold="50"><domainname="cat"url-threshold="500"sql-threshold="500"/><domainname="OpenPlatformWeb"url-threshold="100"sql-threshold="500"/></long-config></consumer></server><serverid="10.1.1.1"><properties><propertyname="job-machine"value="true"/><propertyname="alarm-machine"value="true"/><propertyname="send-machine"value="true"/></properties></server></server-config>
請(qǐng)注意:當(dāng)一個(gè)機(jī)器角色更改后,請(qǐng)重啟該機(jī)器!
server模型:代表一臺(tái)機(jī)器的配置。如果id為default,代表默認(rèn)配置;如果id為ip,代表該臺(tái)服務(wù)器的配置? * property local-mode : 定義服務(wù)是否為本地模式(開發(fā)模式),在生產(chǎn)環(huán)境時(shí),設(shè)置為false,啟動(dòng)遠(yuǎn)程監(jiān)聽模式。默認(rèn)為 false;? * property hdfs-machine : 定義是否啟用HDFS存儲(chǔ)方式,默認(rèn)為 false;? * property job-machine : 定義當(dāng)前服務(wù)是否為報(bào)告工作機(jī)(開啟生成匯總報(bào)告和統(tǒng)計(jì)報(bào)告的任務(wù),只需要一臺(tái)服務(wù)機(jī)開啟此功能),默認(rèn)為 false;? * property alarm-machine : 定義當(dāng)前服務(wù)是否為報(bào)警機(jī)(開啟各類報(bào)警監(jiān)聽,只需要一臺(tái)服務(wù)機(jī)開啟此功能),默認(rèn)為 false;? * property send-machine : 定義當(dāng)前服務(wù)告警是否發(fā)送(當(dāng)時(shí)為了解決測(cè)試環(huán)境開啟告警線程,但是最后告警不通知,此配置后續(xù)會(huì)逐步去除,建議alarm-machine開啟為true的時(shí)候,這個(gè)同步為true)? storage模型: 定義數(shù)據(jù)存儲(chǔ)配置信息? * property local-report-storage-time : 定義本地報(bào)告存放時(shí)長(zhǎng),單位為(天)? * property local-logivew-storage-time : 定義本地日志存放時(shí)長(zhǎng),單位為(天)? * property local-base-dir : 定義本地?cái)?shù)據(jù)存儲(chǔ)目錄,此目錄為上傳到HDFS時(shí)所查找的源文件路徑? * property hdfs : 定義HDFS配置信息,便于直接登錄系統(tǒng)? * property server-uri : 定義HDFS服務(wù)地址,支持配置Nameservice? * property console : 定義服務(wù)控制臺(tái)信息? * property remote-servers : 定義HTTP服務(wù)列表,(遠(yuǎn)程監(jiān)聽端同步更新服務(wù)端信息即取此值)? * ldap : 定義LDAP配置信息(這個(gè)可以忽略)? * ldapUrl : 定義LDAP服務(wù)地址(這個(gè)可以忽略)
步驟7: 重啟不影響數(shù)據(jù)可用性
單機(jī)模式部署可略過(guò)此步驟,線上環(huán)境使用建議配置。
請(qǐng)?jiān)趖omcat重啟之前調(diào)用當(dāng)前tomcat的存儲(chǔ)數(shù)據(jù)的鏈接 http://${ip}:8080/cat/r/home?op=checkpoint,重啟之后數(shù)據(jù)會(huì)恢復(fù)?!咀⒁庵貑r(shí)間在每小時(shí)的整點(diǎn)10-55分鐘之間】
線上部署時(shí)候,建議把此鏈接調(diào)用存放于tomcat的stop腳本中,這樣不需要每次手工調(diào)用
客戶端篇
步驟1: 客戶端機(jī)器創(chuàng)建文件
mkdir/datachmod-R777/data/mkdir-p/data/appdatas/cat/cd/data/appdatas/cat/vim client.xml
將下列配置復(fù)制到client.xml中
注意: 2280是默認(rèn)的CAT服務(wù)端接受數(shù)據(jù)的端口,不允許修改,http-port是Tomcat啟動(dòng)的端口,默認(rèn)是8080,建議使用默認(rèn)端口
<?xml version="1.0" encoding="utf-8"?><configmode="client"><servers><serverip="10.1.1.1"port="2280"http-port="8080"/><serverip="10.1.1.2"port="2280"http-port="8080"/><serverip="10.1.1.3"port="2280"http-port="8080"/></servers></config>
步驟2: 項(xiàng)目配置
引入jar包
<dependency><groupId>com.dianping.cat</groupId><artifactId>cat-core</artifactId><version>3.0.0</version><exclusions><exclusion><artifactId>cat-client</artifactId><groupId>com.dianping.cat</groupId></exclusion></exclusions></dependency><dependency><groupId>com.dianping.cat</groupId><artifactId>cat-client</artifactId><version>3.0.0</version></dependency>
步驟3: 添加appkey
在resources中創(chuàng)建META-INF目錄,在此目錄下創(chuàng)建app.properties,在此文件寫入
后面名稱隨意制定
app.name=com.dianping.sqldemo
步驟4: 服務(wù)端配置項(xiàng)目名稱

image.png
步驟5: 打點(diǎn)上送
示例:打點(diǎn)Transaction、event
@Testpublicvoidaaa()throwsException{Transactiont=Cat.newTransaction("safsfasd","demo");Cat.logEvent("dddd","ccccc",Event.SUCCESS,"ip=${serverIp}");t.complete();Cat.logEvent("aaaaaaa","hfkjahsfjkahds",Event.SUCCESS,"ip=${serverIp}");Thread.sleep(100000000);// 此處 sleep 一會(huì), 就能保證 CAT 異步消息發(fā)送}
注意:單元測(cè)試打點(diǎn)一定要 Thread.sleep(100000000);否則打點(diǎn)送不上去!?。。?!
具體打點(diǎn)規(guī)則請(qǐng)參考cat客戶端打點(diǎn)
步驟6: 登錄服務(wù)端,查看打點(diǎn)是否上送成功

image.png
作者:楓之鬼影
鏈接:http://www.itdecent.cn/p/96c3232b9d7e
來(lái)源:簡(jiǎn)書
著作權(quán)歸作者所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。