當前位置:
首頁 > 知識 > 搭建大眾點評 CAT 監控平台

搭建大眾點評 CAT 監控平台

(點擊

上方公眾號

,可快速關注)




來源:範宗雲 ,


fanlychie.github.io/post/cat-setup.html




CAT(Central Application Tracking)是基於Java開發的實時應用監控平台,包括實時應用監控,業務監控。關於CAT的具體介紹可移步到CAT官網進行查閱。




1. 環境清單




CentOS 7 Java 8 Maven 3.5 MySQL 5.7 CAT 2.0.0 Tomcat 7.0




2. 安裝 CAT




下載CAT安裝包:




# wget -O cat-home-2.0.0.war http://unidal.org/nexus/service/local/repositories/releases/content/com/dianping/cat/cat-home/2.0.0/cat-home-2.0.0.war




將 cat-home-2.0.0.war 部署到 Tomcat 並重命名為 cat.war:





$ mv cat-home-2.0.0.war tomcat-7.0.90/webapps/cat.war



2.1 配置 CAT




在Linux系統安裝時,CAT應用要求對/data/appdatas/cat和/data/applogs/cat路徑有讀寫許可權。





# mkdir -p /data/appdatas/cat && mkdir -p /data/applogs/cat



CAT服務端應用會對這兩個目錄進行讀寫操作,因此需要首先創建這兩個目錄。並且應確保啟動CAT應用的用戶對這兩個目錄有讀寫許可權。




下載CAT的源碼包:





$ wget -O cat-2.0.0.tar.gz https://codeload.github.com/dianping/cat/tar.gz/v2.0.0




解壓縮:




# tar zxvf cat-2.0.0.tar.gz




解壓縮完成後得到cat-2.0.0目錄。其中cat-2.0.0/script目錄中存放的是CAT客戶端和服務端安裝所需的一些配置文件:







將 cat-2.0.0/script 目錄中的 client.xml、datasources.xml、server.xml 配置文件複製到目錄 /data/appdatas/cat 中:




$ cp client.xml server.xml datasources.xml /data/appdatas/cat/




客戶端 client.xml 的配置內容如下:





<?xml version="1.0" encoding="utf-8"?>


<config mode="client" xmlns:xsi="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="config.xsd">


    <servers>


        <!-- ip:部署CAT應用的伺服器IP


             port:CAT服務端接收客戶端數據的埠(不允許更改)


             http-port:CAT應用部署到的容器的埠(tomcat的埠)


        -->


        <server ip="10.10.10.121" port="2280" http-port="8080" />


    </servers>


</config>




服務端 server.xml 的配置內容如下:





<?xml version="1.0" encoding="utf-8"?>


<!-- local-mode:是否為本地開發模式。建議在開發環境以及生產環境都設置為false


     hdfs-machine:是否啟用HDFS存儲


     job-machine:是否為報告工作機(開啟生成匯總報告和統計報告,只需要一台服務機開啟此功能)


     alert-machine:是否為報警機(開啟各類報警監聽, 只需要一台服務機開啟此功能)


-->


<config local-mode="false" hdfs-machine="false" job-machine="true" alert-machine="false">


    <!-- local-base-dir:本地數據存儲目錄, 建議不要修改


         local-report-storage-time:本地報告文件存放時長, 單位為(天)


         local-logivew-storage-time:本地日誌文件存放時長, 單位為(天)


    -->


    <storage local-base-dir="/data/appdatas/cat/bucket/" local-report-storage-time="7" local-logivew-storage-time="7"/>


    <console default-domain="Cat" show-cat-domain="true">


        <!-- 遠程服務端HTTP服務列表, 用於同步更新 -->


        <remote-servers>10.10.10.121:8080</remote-servers>


    </console>


</config>




數據源 datasources.xml 的配置內容如下:





<?xml version="1.0" encoding="utf-8"?>


<data-sources>


    <data-source id="cat">


        <maximum-pool-size>8</maximum-pool-size>


        <connection-timeout>3s</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.10.10.121:3306/cat_schema]]></url>


            <!-- 用戶名 -->


            <user>root</user>


            <!-- 密碼 -->


            <password>123654</password>


            <connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>


        </properties>


    </data-source>


    <data-source id="app">


        <maximum-pool-size>8</maximum-pool-size>


        <connection-timeout>3s</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.10.10.121:3306/cat_schema]]></url>


            <!-- 用戶名 -->


            <user>root</user>


            <!-- 密碼 -->


            <password>123654</password>


            <connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>


        </properties>


    </data-source>


</data-sources>




創建 cat_schema 資料庫:





CREATE DATABASE IF NOT EXISTS cat_schema DEFAULT CHARSET utf8 COLLATE utf8_general_ci




選擇資料庫 cat_schema:





USE cat_schema




導入 Cat.sql 到 cat_schema 資料庫:





SOURCE /home/fanlychie/cat-2.0.0/script/Cat.sql




編輯 Tomcat 配置文件:





$ vim tomcat-7.0.90/conf/server.xml




找到 Connector 的配置行,添加 URIEncoding="utf-8"。如下:





<Connector port="8080" protocol="HTTP/1.1"


           connectionTimeout="20000"


           redirectPort="8443"


           URIEncoding="utf-8" />




2.2 啟動 CAT




啟動 Tomcat:





$ ./tomcat-7.0.90/bin/startup.sh




訪問:http://10.10.10.121:8080/cat







配置操作需要用戶登入系統,每次的登錄賬戶名和密碼保持一致即可。如 catadmin/catadmin。




2.3 客戶端路由設置




依次打開配置 --> 全局告警配置 --> 客戶端路由修改id為CAT部署的伺服器 IP:







3. 集群搭建




上面介紹的是 CAT 應用的單點模式部署。接下來介紹 CAT 的集群模式搭建方式。




3.1 部署概覽







10.10.10.121 作為前端控制台,如果使用了域名,只需將域名解析到此IP地址。




按以上搭建單點模式的方式,分別在 10.10.10.121、10.10.10.122、10.10.10.123 部署 CAT。部署完成後,先不要啟動 Tomcat。接下來做集群配置。




3.2 客戶端client.xml配置




10.10.10.121、10.10.10.122、10.10.10.123 的 client.xml 配置一樣,具體如下:





<?xml version="1.0" encoding="utf-8"?>


<config mode="client" xmlns:xsi="http://www.w3.org/2001/XMLSchema" xsi:noNamespaceSchemaLocation="config.xsd">


    <servers>


        <!-- ip:部署CAT應用的伺服器IP


             port:CAT服務端接收客戶端數據的埠(不允許更改)


             http-port:CAT應用部署到的容器的埠(tomcat的埠)


        -->


        <server ip="10.10.10.121" port="2280" http-port="8080" />


        <server ip="10.10.10.122" port="2280" http-port="8080" />


        <server ip="10.10.10.123" port="2280" http-port="8080" />


    </servers>


</config>




3.3 服務端server.xml配置




10.10.10.121 的 server.xml 配置,具體如下:





<?xml version="1.0" encoding="utf-8"?>


<!-- local-mode:是否為本地開發模式。建議在開發環境以及生產環境都設置為false


     hdfs-machine:是否啟用HDFS存儲


     job-machine:是否為報告工作機(開啟生成匯總報告和統計報告,只需要一台服務機開啟此功能)


     alert-machine:是否為報警機(開啟各類報警監聽, 只需要一台服務機開啟此功能)


-->


<config local-mode="false" hdfs-machine="false" job-machine="true" alert-machine="true">


    <!-- local-base-dir:本地數據存儲目錄, 建議不要修改


         local-report-storage-time:本地報告文件存放時長, 單位為(天)


         local-logivew-storage-time:本地日誌文件存放時長, 單位為(天)


    -->


    <storage local-base-dir="/data/appdatas/cat/bucket/" local-report-storage-time="7" local-logivew-storage-time="7"/>


    <console default-domain="Cat" show-cat-domain="true">


        <!-- 遠程服務端HTTP服務列表, 用於同步更新 -->


        <remote-servers>10.10.10.121:8080,10.10.10.122:8080,10.10.10.123:8080</remote-servers>


    </console>


</config>




10.10.10.122、10.10.10.123 的 server.xml 配置一樣,具體如下:





<?xml version="1.0" encoding="utf-8"?>


<!-- local-mode:是否為本地開發模式。建議在開發環境以及生產環境都設置為false


     hdfs-machine:是否啟用HDFS存儲


     job-machine:是否為報告工作機(開啟生成匯總報告和統計報告,只需要一台服務機開啟此功能)


     alert-machine:是否為報警機(開啟各類報警監聽, 只需要一台服務機開啟此功能)


-->


<config local-mode="false" hdfs-machine="false" job-machine="false" alert-machine="false">


    <!-- local-base-dir:本地數據存儲目錄, 建議不要修改


         local-report-storage-time:本地報告文件存放時長, 單位為(天)


         local-logivew-storage-time:本地日誌文件存放時長, 單位為(天)


    -->


    <storage local-base-dir="/data/appdatas/cat/bucket/" local-report-storage-time="7" local-logivew-storage-time="7"/>


    <console default-domain="Cat" show-cat-domain="true">


        <!-- 遠程服務端HTTP服務列表, 用於同步更新 -->


        <remote-servers>10.10.10.121:8080,10.10.10.122:8080,10.10.10.123:8080</remote-servers>


    </console>


</config>




服務端 server.xml 的配置主要是 job-machine 和 alert-machine 屬性值配置的不同。




3.4 啟動 CAT




分別啟動 10.10.10.121、10.10.10.122、10.10.10.123 的 Tomcat





$ ./tomcat-7.0.90/bin/startup.sh




10.10.10.121 作為控制台服務,只需訪問:http://10.10.10.121:8080/cat







3.5 客戶端路由設置




10.10.10.121 作為控制台服務,只需配置這台即可。




依次打開配置 --> 全局告警配置 --> 客戶端路由修改 id 為 CAT 部署的伺服器 IP:







其中10.10.10.121 作為備份,正常情況下不作為消費機(即不起消費數據的作用),僅當 CAT 集群中的其它節點(如這裡的10.10.10.122、10.10.10.123 節點)都掛掉之後才會對數據進行消費。




該配置會自動同步到CAT集群中的其它節點(如這裡的10.10.10.122、10.10.10.123節點)。




配置完成後,重啟 10.10.10.121 伺服器的 CAT 應用容器(即重啟 Tomcat)。




【關於投稿】




如果大家有原創好文投稿,請直接給公號發送留言。




① 留言格式:


【投稿】+《 文章標題》+ 文章鏈接

② 示例:


【投稿】《不要自稱是程序員,我十多年的 IT 職場總結》:http://blog.jobbole.com/94148/

③ 最後請附上您的個人簡介哈~






看完本文有收穫?請轉發分享給更多人


關注「ImportNew」,提升Java技能


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 ImportNew 的精彩文章:

Map 大家族的那點事兒 ( 5 ) :WeakHashMap
SpringBoot | 第十二章:RabbitMQ 的集成和使用

TAG:ImportNew |