美團開源監(jiān)控Cat安裝與使用

序——之前一直在美團內(nèi)部使用cat,十分便捷,這次單位內(nèi)部要使用,拿來研究一番。其實Cat在GitHub上的部署文檔已經(jīng)比較詳細了

服務(wù)端篇

一、準備環(huán)境

tomcat
mysql
jdk8
美團cat源碼包 cat源碼

二、開整

步驟1: 服務(wù)器創(chuàng)建目錄
mkdir /data
chmod -R 777 /data/
mkdir -p /data/appdatas/cat/
步驟2: 服務(wù)器創(chuàng)建文件
cd /data/appdatas/cat/
vim client.xml 

將下列配置復(fù)制到client.xml中
注意: 2280是默認的CAT服務(wù)端接受數(shù)據(jù)的端口,不允許修改,http-port是Tomcat啟動的端口,默認是8080,建議使用默認端口

<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
    <servers>
        <server ip="10.1.1.1" port="2280" http-port="8080"/>
        <server ip="10.1.1.2" port="2280" http-port="8080"/>
        <server ip="10.1.1.3" port="2280" http-port="8080"/>
    </servers>
</config>
vim datasources.xml

將下列配置復(fù)制到datasources.xml中,注意修改自己的地址
集群模式每臺CAT集群10.1.1.1,10.1.1.2,10.1.1.3都需要部署此文件

<?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://127.0.0.1:3306/cat]]></url>  <!-- 請?zhí)鎿Q為真實數(shù)據(jù)庫URL及Port  -->
            <user>root</user>  <!-- 請?zhí)鎿Q為真實數(shù)據(jù)庫用戶名  -->
            <password>root</password>  <!-- 請?zhí)鎿Q為真實數(shù)據(jù)庫密碼  -->
            <connectionProperties><![CDATA[useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&socketTimeout=120000]]></connectionProperties>
        </properties>
    </data-source>
</data-sources>
步驟3:數(shù)據(jù)庫配置

創(chuàng)建cat數(shù)據(jù)庫
注意1:一套獨立的CAT集群只需要一個數(shù)據(jù)庫(之前碰到過個別同學(xué)在每臺cat的服務(wù)端節(jié)點都安裝了一個數(shù)據(jù)庫)
注意2:數(shù)據(jù)庫編碼使用utf8mb4,否則可能造成中文亂碼等問題

create database cat charset utf8mb4 collate utf8mb4_general_ci;

刷入表信息 cat建表語句

步驟4:打war包

源碼打包
在cat的源碼目錄,執(zhí)行mvn clean install -DskipTests
war包下載 官方war包下載
注意: 打出來的jar包重命名為cat.war進行部署,此war是用jdk8,服務(wù)端請使用jdk8版本

步驟5:war包部署

將war包扔到10.1.1.1的tomcat的webapps目錄下,啟動tomcat即可
訪問 http://10.1.1.1:8080/cat/s/config?op=routerConfigUpdate
默認用戶名:admin
默認密碼:admin
繼續(xù)將war包扔到10.1.1.2,10.1.1.3中,啟動tomcat

步驟6:服務(wù)器配置

配置鏈接:http://{ip:port}/cat/s/config?op=serverConfigUpdate
說明:這個只需要更新一次,配置是保存在mysql的數(shù)據(jù)庫里面。

CAT節(jié)點職責
控制臺 - 提供給業(yè)務(wù)人員進行數(shù)據(jù)查看【默認所有的cat節(jié)點都可以作為控制臺,不可配置】
消費機 - 實時接收業(yè)務(wù)數(shù)據(jù),實時處理,提供實時分析報表【默認所有的cat節(jié)點都可以作為消費機,不可配置】
告警端 - 啟動告警線程,進行規(guī)則匹配,發(fā)送告警(目前僅支持單點部署)【可以配置】
任務(wù)機 - 做一些離線的任務(wù),合并天、周、月等報表 【可以配置】

集群配置
線上做多集群部署,假設(shè)有10.1.1.1,10.1.1.2,10.1.1.3這三臺機器
建議選取一臺或多臺機器負責角色有控制臺、告警端、任務(wù)機,例如10.1.1.1。
配置域名訪問CAT,該域名關(guān)聯(lián)至10.1.1.1。
10.1.1.2,10.1.1.3 負責消費機處理,這樣能做到有效隔離,任務(wù)機、告警等問題不影響實時數(shù)據(jù)處理
remote-servers 這個一定要配置正確,端口號為8080,這里面的remote-servers為10.1.1.1:8080,10.1.1.2:8080,10.1.1.3:8080
完成以上步驟,重啟下當前CAT節(jié)點
配置的sample如下: id="default"是默認的配置信息,server id="10.1.1.1" 如下的配置是表示10.1.1.1這臺服務(wù)器的節(jié)點配置覆蓋default的配置信息,比如下面的job-machine,alarm-machine,send-machine為true。

<?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="10.1.1.1:8080,10.1.1.2:8080,10.1.1.3:8080"/>
      </properties>
      <storage  local-base-dir="/data/appdatas/cat/bucket/" max-hdfs-storage-time="15" local-report-storage-time="7" local-logivew-storage-time="7">
        <hdfs id="logview" max-size="128M" server-uri="hdfs://10.1.77.86/" base-dir="user/cat/logview"/>
        <hdfs id="dump" max-size="128M" server-uri="hdfs://10.1.77.86/" base-dir="user/cat/dump"/>
        <hdfs id="remote" max-size="128M" server-uri="hdfs://10.1.77.86/" base-dir="user/cat/remote"/>
      </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="10.1.1.1">
      <properties>
         <property name="job-machine" value="true"/>
         <property name="alarm-machine" value="true"/>
     <property name="send-machine" value="true"/>
      </properties>
   </server>
</server-config>

請注意:當一個機器角色更改后,請重啟該機器!

server模型:代表一臺機器的配置。如果id為default,代表默認配置;如果id為ip,代表該臺服務(wù)器的配置

  * property local-mode : 定義服務(wù)是否為本地模式(開發(fā)模式),在生產(chǎn)環(huán)境時,設(shè)置為false,啟動遠程監(jiān)聽模式。默認為 false;
  * property hdfs-machine : 定義是否啟用HDFS存儲方式,默認為 false;
  * property job-machine : 定義當前服務(wù)是否為報告工作機(開啟生成匯總報告和統(tǒng)計報告的任務(wù),只需要一臺服務(wù)機開啟此功能),默認為 false;
  * property alarm-machine : 定義當前服務(wù)是否為報警機(開啟各類報警監(jiān)聽,只需要一臺服務(wù)機開啟此功能),默認為 false;
  * property send-machine : 定義當前服務(wù)告警是否發(fā)送(當時為了解決測試環(huán)境開啟告警線程,但是最后告警不通知,此配置后續(xù)會逐步去除,建議alarm-machine開啟為true的時候,這個同步為true)
  
storage模型: 定義數(shù)據(jù)存儲配置信息

  * property local-report-storage-time : 定義本地報告存放時長,單位為(天)
  * property local-logivew-storage-time : 定義本地日志存放時長,單位為(天)
  * property local-base-dir : 定義本地數(shù)據(jù)存儲目錄,此目錄為上傳到HDFS時所查找的源文件路徑
  * property hdfs : 定義HDFS配置信息,便于直接登錄系統(tǒng)
  * property server-uri : 定義HDFS服務(wù)地址,支持配置Nameservice
  * property console : 定義服務(wù)控制臺信息
  * property remote-servers : 定義HTTP服務(wù)列表,(遠程監(jiān)聽端同步更新服務(wù)端信息即取此值)
  * ldap : 定義LDAP配置信息(這個可以忽略)
  * ldapUrl : 定義LDAP服務(wù)地址(這個可以忽略)
步驟7: 重啟不影響數(shù)據(jù)可用性

單機模式部署可略過此步驟,線上環(huán)境使用建議配置。

請在tomcat重啟之前調(diào)用當前tomcat的存儲數(shù)據(jù)的鏈接 http://${ip}:8080/cat/r/home?op=checkpoint,重啟之后數(shù)據(jù)會恢復(fù)?!咀⒁庵貑r間在每小時的整點10-55分鐘之間】
線上部署時候,建議把此鏈接調(diào)用存放于tomcat的stop腳本中,這樣不需要每次手工調(diào)用

客戶端篇

步驟1: 客戶端機器創(chuàng)建文件
mkdir /data
chmod -R 777 /data/
mkdir -p /data/appdatas/cat/
cd /data/appdatas/cat/
vim client.xml 

將下列配置復(fù)制到client.xml中
注意: 2280是默認的CAT服務(wù)端接受數(shù)據(jù)的端口,不允許修改,http-port是Tomcat啟動的端口,默認是8080,建議使用默認端口

<?xml version="1.0" encoding="utf-8"?>
<config mode="client">
    <servers>
        <server ip="10.1.1.1" port="2280" http-port="8080"/>
        <server ip="10.1.1.2" port="2280" http-port="8080"/>
        <server ip="10.1.1.3" port="2280" http-port="8080"/>
    </servers>
</config>
步驟2: 項目配置

引入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ù)端配置項目名稱
image.png
步驟5: 打點上送

示例:打點Transaction、event

 @Test
    public void aaa() throws Exception {
        Transaction t = 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 一會, 就能保證 CAT 異步消息發(fā)送
    }

注意:單元測試打點一定要 Thread.sleep(100000000);否則打點送不上去?。。。?!
具體打點規(guī)則請參考 cat客戶端打點

步驟6: 登錄服務(wù)端,查看打點是否上送成功
image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容