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>
完成。